找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 22776|回复: 2

[文件操作] 求助批处理批量转换jpg合并成pdf

[复制链接]
发表于 2022-3-4 19:39:37 | 显示全部楼层 |阅读模式
各位大神:
我有5000多个文件夹,每个文件夹里面有2-3张图片,想写一个批处理,将每个文件夹内的jpg转换合并成1个pdf,请问这个能实现吗?
如:
a文件夹里面有1.jpg 2.jpg 3.jpg,想合并成A.pdf
b文件夹里面有4.jpg 5.jpg 6.jpg,想合并成B.pdf
c文件夹里面有7.jpg 8.jpg 9.jpg,想合并成C.pdf
发表于 2022-3-5 00:28:09 | 显示全部楼层
ansi编码,保存test.bat
用来打印图片资料非常方便
  1. #&cls&@ cd /d "%~dp0" & powershell -c "Get-Content '%~0' | Out-String | Invoke-Expression" &pause&exit
  2. cls
  3. [void][System.Reflection.Assembly]::LoadWithPartialName('System.Drawing')
  4. #函数 打印整个文件夹图片
  5. function Print-ImgList($img_dir,$filter){
  6.     #读取图片
  7.     $img_list = New-Object 'System.Collections.ArrayList'
  8.     Get-ChildItem -Path $img_dir -Filter $filter | foreach { [void]$img_list.Add([System.Drawing.Image]::FromFile($_.FullName)) }
  9.     #创建打印机
  10.     $pd = New-Object 'System.Drawing.Printing.PrintDocument'
  11.     #打印机设置
  12.     $ps = New-Object 'System.Drawing.Printing.PrinterSettings'
  13.     $ps.PrinterName = 'Microsoft Print to PDF'
  14.     $ps.PrintToFile = $true
  15.         $out_pdf = '{0}\{1}.pdf' -f $img_dir,[System.IO.Path]::GetFileName($img_dir).ToUpper()
  16.     $ps.PrintFileName = $out_pdf
  17.     $pd.PrinterSettings = $ps
  18.     #打印方向 true横向 false纵向
  19.     $pd.DefaultPageSettings.Landscape = $true
  20.     #设置打印事件
  21.     $pd.add_PrintPage({
  22.         #打印首张图片
  23.         $_.Graphics.DrawImage($img_list[0],$_.MarginBounds)
  24.         $img_list[0].Dispose()
  25.         $img_list.RemoveAt(0)
  26.         if($img_list.Count -gt 0){ $_.HasMorePages = $true } else { $_.HasMorePages = $false }
  27.     })
  28.     $pd.add_EndPrint({
  29.                 Write-Host $out_pdf
  30.                 $pd.Dispose()
  31.                 Write-Host '--------------------'
  32.         })
  33.     #开始打印
  34.     $pd.Print()
  35. }
  36. #遍历打印
  37. Get-ChildItem | Where-Object { [System.IO.Directory]::Exists($_.FullName)} | foreach {
  38.     Write-Host $_.FullName
  39.     Print-ImgList -img_dir $_.FullName -filter '*.jpg'
  40. }
复制代码

评分

参与人数 1技术 +1 收起 理由
for_flr + 1 感谢分享

查看全部评分

发表于 2022-8-22 11:35:29 | 显示全部楼层
回复 2# went 可以让3张图片指定打印在一张A4纸吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 17:03 , Processed in 0.019530 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表