7

質問ではなく情報共有です。

LINEオープンチャットでご質問に対して回答しました。その回答をこちらにも掲載させていただきます。

「jpgをpdfに変換するコマンドなどご存知のかたいらっしゃいますでしょうか。」に対して下記のPowerShellスクリプトを投稿しました。

「sample.jpg」の部分は変換したい画像パスに置き換えてください。

※「Microsoft Print to PDF」仮想プリンタが入ったWindows10以降で動作します。

$imagePath="sample.jpg"
$printPage_event={
   #[System.Drawing.Printing.PrintPageEventArgs]$_
   $image=New-Object System.Drawing.Bitmap($imagePath)
   $m=$_.MarginBounds;
   if($image.Width/$image.Height-gt$m.Width/$m.Height)
   {
      $m.Height=$image.Height*$m.Width/$image.Width
   }
   else
   {
      $m.Width=$image.Width*$m.Height/$image.Height
   }
   $_.Graphics.DrawImage($image,$m)
   $_.HasMorePages=$false
}
Add-Type -AssemblyName System.Drawing
$doc=New-Object System.Drawing.Printing.PrintDocument
$doc.add_PrintPage($printpage_event)
$doc.PrinterSettings=new-Object System.Drawing.Printing.PrinterSettings
$doc.PrinterSettings.PrinterName='Microsoft Print to PDF'
$doc.PrinterSettings.PrintToFile=$true
$file=[io.fileinfo]$imagePath
$pdf=[io.path]::Combine($file.DirectoryName, $file.BaseName)+'.pdf'
$doc.PrinterSettings.PrintFileName=$pdf
$doc.Print()
$doc.Dispose()

指定したフォルダー内の画像を一括でPFDに変換する場合は下記のようなスクリプトとなります。

$targetFolder = "C:\jpgが入ったフォルダー\"
$pathList=Get-ChildItem $targetFolder -Recurse -File -Include *.jpg
foreach($path in $pathList){
   $imagePath=$path.FullName
   $printPage_event={
      #[System.Drawing.Printing.PrintPageEventArgs]$_
      $image=New-Object System.Drawing.Bitmap($imagePath)
      $m=$_.MarginBounds;
      if($image.Width/$image.Height-gt$m.Width/$m.Height)
      {
         $m.Height=$image.Height*$m.Width/$image.Width
      }
      else
      {
         $m.Width=$image.Width*$m.Height/$image.Height
      }
      $_.Graphics.DrawImage($image,$m)
      $_.HasMorePages=$false
   }
   Add-Type -AssemblyName System.Drawing
   $doc=New-Object System.Drawing.Printing.PrintDocument
   $doc.add_PrintPage($printpage_event)
   $doc.PrinterSettings=new-Object System.Drawing.Printing.PrinterSettings
   $doc.PrinterSettings.PrinterName='Microsoft Print to PDF'
   $doc.PrinterSettings.PrintToFile=$true
   $pdf=[io.path]::Combine($path.DirectoryName,$path.BaseName)+'.pdf'
   $doc.PrinterSettings.PrintFileName=$pdf
   $doc.Print()
   $doc.Dispose()
}

スクリプトを改造すると他の画像形式やExcelやWordなどのドキュメント等様々なファイルをPDFに変換することができると思います。

参考になりましたら幸いです。

kenji 質問の編集
回答とコメントは、会員登録(無料)で閲覧できるようになります。