« PowerShell/PDF » : différence entre les versions

Aller à la navigation Aller à la recherche
(Page créée avec « {{Sommaire}} Création d'un document PDF depuis une image ou une liste d'images, avec une page PDF par image. == ConvertToPdf == <source> function ConvertToPdf($files, $outFile) { <# .SYNOPSIS Conversion d'une ou plusieurs images au format JPEG en PDF et concaténation dans une seul fichier .DESCRIPTION .PARAMETER Source .PARAMETER Destination .EXAMPLE ConvertToPdf (Get-ChildItem *.jpg | Sort-Object Name) catalogue.pdf .EXAMPLE ConvertToPdf... »)
 
Ligne 11 : Ligne 11 :


.DESCRIPTION
.DESCRIPTION
      
     Conversion d'une ou plusieurs images au format JPEG en PDF et concaténation dans une seul fichier.
.PARAMETER Source
    Cela fonctionne avec une seule image ou plusieurs images.


.PARAMETER Destination
.EXaMPLE
 
.EXAMPLE
     ConvertToPdf (Get-ChildItem *.jpg | Sort-Object Name) catalogue.pdf
     ConvertToPdf (Get-ChildItem *.jpg | Sort-Object Name) catalogue.pdf


Ligne 24 : Ligne 22 :
.INPUTS
.INPUTS
     Un ou plusieurs fichiers images (JPEG...)
     Un ou plusieurs fichiers images (JPEG...)
.OUTPUTS
.OUTPUTS
     Un fichier PDF
     Un fichier PDF


.NOTES
.NOTES
     NAME   : MaFonction.ps1
     NAME:  
     AUTHOR : https://stackoverflow.com/users/2127371/makhdumi
     AUTHOR: https://stackoverflow.com/users/2127371/makhdumi
     EMAIL :  
     EMAIL:  
     WWW   : https://stackoverflow.com/questions/41061219/convert-jpeg-to-pdf
     WWW: https://stackoverflow.com/questions/41061219/convert-jpeg-to-pdf
   
 
     VERSION HISTORY:
     VERSION HISTORY:
         1.0    2022-06-25
         1.0    2022-06-25
Ligne 40 : Ligne 37 :
     TODO
     TODO
         *  
         *  
.LINK
    https://stackoverflow.com/users/2127371/makhdumi
    https://stackoverflow.com/questions/41061219/convert-jpeg-to-pdf
#>
#>
     Add-Type -AssemblyName System.Drawing
     Add-Type -AssemblyName System.Drawing
Ligne 88 : Ligne 88 :


Set-Location "C:\tmp\"
Set-Location "C:\tmp\"
ConvertToPdf (Get-ChildItem *.jpg | Sort-Object Name) catalogue.pdf
ConvertToPdf (Get-ChildItem *.jpg | Sort-Object Name) DocumentFinal.pdf
</source>
</source>



Version du 23 janvier 2025 à 21:37

Création d'un document PDF depuis une image ou une liste d'images, avec une page PDF par image.

ConvertToPdf

function ConvertToPdf($files, $outFile) {
<#
.SYNOPSIS
    Conversion d'une ou plusieurs images au format JPEG en PDF et concaténation dans une seul fichier

.DESCRIPTION
    Conversion d'une ou plusieurs images au format JPEG en PDF et concaténation dans une seul fichier.
    Cela fonctionne avec une seule image ou plusieurs images.

.EXaMPLE
    ConvertToPdf (Get-ChildItem *.jpg | Sort-Object Name) catalogue.pdf

.EXAMPLE
    ConvertToPdf (Get-ChildItem image*.jpg | Sort-Object Name) catalogue.pdf

.INPUTS
    Un ou plusieurs fichiers images (JPEG...)

.OUTPUTS
    Un fichier PDF

.NOTES
    NAME: 
    AUTHOR: https://stackoverflow.com/users/2127371/makhdumi
    EMAIL: 
    WWW: https://stackoverflow.com/questions/41061219/convert-jpeg-to-pdf
    VERSION HISTORY:
        1.0    2022-06-25
        Initial Version

    TODO
        * 
.LINK
    https://stackoverflow.com/users/2127371/makhdumi
    https://stackoverflow.com/questions/41061219/convert-jpeg-to-pdf
#>
    Add-Type -AssemblyName System.Drawing
    $files = @($files)
    if (!$outFile) {
        $firstFile = $files[0] 
        if ($firstFile.FullName) { $firstFile = $firstFile.FullName }
        $outFile = $firstFile.Substring(0, $firstFile.LastIndexOf(".")) + ".pdf"
    } else {
        if (![System.IO.Path]::IsPathRooted($outFile)) {
            $outFile = [System.IO.Path]::Combine((Get-Location).Path, $outFile)
        }
    }

    try {
        $doc = [System.Drawing.Printing.PrintDocument]::new()
        $opt = $doc.PrinterSettings = [System.Drawing.Printing.PrinterSettings]::new()
        $opt.PrinterName = "Microsoft Print to PDF"
        $opt.PrintToFile = $true
        $opt.PrintFileName = $outFile

        $script:_pageIndex = 0
        $doc.add_PrintPage({
            param($sender, [System.Drawing.Printing.PrintPageEventArgs] $a)
            $file = $files[$script:_pageIndex]
            if ($file.FullName) {
                $file = $file.FullName
            }
            $script:_pageIndex = $script:_pageIndex + 1

            try {
                $image = [System.Drawing.Image]::FromFile($file)
                $a.Graphics.DrawImage($image, $a.PageBounds)
                $a.HasMorePages = $script:_pageIndex -lt $files.Count
            }
            finally {
                $image.Dispose()
            }
        })
        $doc.PrintController = [System.Drawing.Printing.StandardPrintController]::new()
        $doc.Print()
        return $outFile
    }
    finally {
        if ($doc) { $doc.Dispose() }
    }
}

Set-Location "C:\tmp\"
ConvertToPdf (Get-ChildItem *.jpg | Sort-Object Name) DocumentFinal.pdf

Voir aussi

  •