« 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) |
||
| (Une version intermédiaire par le même utilisateur non affichée) | |||
| 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. | ||
Pour la génération de PDF, se base sur l'imprimante virtuelle "Microsoft Print to PDF". Il faut donc que cette imprimante virtuelle existe pour que le script fonctionne. | |||
. | .EXaMPLE | ||
ConvertToPdf (Get-ChildItem *.jpg | Sort-Object Name) catalogue.pdf | ConvertToPdf (Get-ChildItem *.jpg | Sort-Object Name) catalogue.pdf | ||
| Ligne 24 : | Ligne 23 : | ||
.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 38 : | ||
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 89 : | ||
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> | ||
Dernière version du 23 janvier 2025 à 21:44
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.
Pour la génération de PDF, se base sur l'imprimante virtuelle "Microsoft Print to PDF". Il faut donc que cette imprimante virtuelle existe pour que le script fonctionne.
.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