« 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... ») |
m (→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. | |||
. | Cela fonctionne avec une seule image ou plusieurs images. | ||
. | .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 | NAME: | ||
AUTHOR : https://stackoverflow.com/users/2127371/makhdumi | AUTHOR: https://stackoverflow.com/users/2127371/makhdumi | ||
EMAIL | EMAIL: | ||
WWW | 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) | 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