PowerShell/PDF
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
.PARAMETER Source
.PARAMETER Destination
.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 : MaFonction.ps1
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
*
#>
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) catalogue.pdf