【问题标题】:Convert multiple multipage PDFs to JPGs in subfolders将多个多页 PDF 转换为子文件夹中的 JPG
【发布时间】:2022-11-28 08:15:20
【问题描述】:

简单用例:

  • 包含许多(主要是多页)PDF 文件的文件夹。
  • 脚本应将每个 PDF 页面转换为 JPG 并将其存储在以 PDF 文件名命名的子文件夹中。 (例如#33.pdf到文件夹#33
  • 单个 JPG 文件也应该有这个文件名加上一个反映 PDF 中连续页码的计数器。 (例如#33_001.jpg

我发现了一堆相关的问题,但没有什么能完全满足我的要求,例如

How do I convert multiple PDFs into images from the same folder in Python?

python 脚本可以正常工作,但在 Win10 中执行此操作的任何其他方式(例如 imagemagick)对我来说都很酷。

【问题讨论】:

  • 您可以通过convert -density XXX image.pdf -set filename:fn "%[filename:fn]_%3d.jpg" 将多页 pdf 转换为单独的 jpg 文件。这将产生 image_001.jpg image002.jpg ... 等。文件名部分是 Imagemagick 自动将输出名称设置为与输入名称相同的方式。 %3d 设置页面计数器部分
  • 但是如何批量处理多个文件并批量创建相应的子文件夹呢?
  • 在每个图像上编写一个 .bat 脚本 FOR 循环。使用 %[filename] 作为目录而不是文件名。 "%[filename:fn]/%[filename:fn_%3d.jpg" 应该用输入的名称命名文件夹和文件。
  • 如果不存在,convert 能够创建一个文件夹吗?您是否有指向此类 .bat 循环示例的链接?为我的无知道歉。
  • Imagemagick 不会创建新目录。它们必须已经存在。您的 .bat 脚本可以创建目录,然后调用 Imagemagick。抱歉,我不是 Windows 用户,不会编写 .bat 脚本。

标签: python image pdf imagemagick batch-processing


【解决方案1】:

您的评论要求批处理如何按要求进行

我试图在我的系统中解决这个批处理文件中的几个失败,但仍然存在诸如没有有效字体可显示的文件之类的问题

pdf2dir.bat

@echo off
set "bin=C:AppsPDFpoppler.11.0Libraryin"
set "res=200"

if exist "%~dpn1*.png" echo: &echo Files already exist in "%~dpn1" skipping overwrite&goto pause
if not exist "%~dpn1.pdf" echo: &echo "%~dpn0" File "%~dpn1.pdf" not found&goto pause

if not exist "%~dpn1*.*" md "%~dpn1"

REM following line deliberately opens folder to show progress delete it or prefix with REM for blind running
explorer "%~dpn1"

"%bin%pdftoppm.exe" -png  -r %res% "%~dpn1.pdf" "%~dpn1%~n1"
if %errorlevel%==1 echo: &echo Build of PNG files failed&goto pause
if not exist "%~dpn1*.png" echo: &echo Build of PNG files failed&goto pause

:pause
echo:
pause
:end

  • 它需要在第二行中正确设置 pdftopm 的 Poppler 二进制文件路径
  • 它可以放在任何需要的地方,即工作文件夹或桌面
  • 它允许将一个 pdf 拖放到顶部(应该可以),而无需在控制台中运行
  • 可以在命令控制台中运行并在其后放置一个空格字符,您可以拖放单个文件名,但名称中的任何空格都必须“双引号”
  • 可以从任何 shell 或 OS 命令作为“path to/batchfile.bat”“c:path toile.pdf”运行

【讨论】:

    猜你喜欢
    • 2013-06-08
    • 1970-01-01
    • 2012-06-15
    • 2018-01-25
    • 2020-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-23
    相关资源
    最近更新 更多