通过脚本在 Hotfolder 中将 PDF 页面转换为 PNG 并重新转换为 PDF

通过脚本在 Hotfolder 中将 PDF 页面转换为 PNG 并重新转换为 PDF

出于安全原因,我想分解 PDF 文件并将它们重新组合在一起(就像打印它们并扫描回去)。我想为我的用户提供这个,所以我想编写一种 hotfilder 解决方案。在写这个问题的时候,我几乎自己就搞清楚了。只有一个小问题:转换(将一个 pdf 文件转换为多个 png 页面的命令) 命名输出文件时不带前导零。pdftk (合并 pdf 页面以创建一个 pdf 文档的命令)对文件的排序不同,所以我新编写的 pdf 是这样的:第 1 页第 10 页第 100 页第 11 页第 12 页第 2 页

你能帮助我吗?

到目前为止,这是我的脚本:

SETLOCAL
CHCP 1252
SET WORKFOLDER=C:\Users\myself\Documents
IF NOT EXIST "%WORKFOLDER%" MD "%WORKFOLDER%"
IF NOT EXIST "%WORKFOLDER%\png" MD "%WORKFOLDER%\png"


:get_filenames
C:
CD "%WORKFOLDER%"
FOR %%X IN (*.pdf) DO (
convert -density 300 -quality 100 "%%~nX.pdf" "%WORKFOLDER%\png\%%~nX.png"
CD "%WORKFOLDER%\png%
mogrify -format pdf *.png
"C:\Program Files (x86)\PDFtk\bin\pdftk.exe" "%WORKFOLDER%\png\*.pdf" cat output "%WORKFOLDER%\%%~nX_sicher.pdf"
)

答案1

不知怎么就修好了。可能不太优雅,但可以正常工作。这是代码。欢迎提出建议,让此过程更顺畅。

SETLOCAL EnableDelayedExpansion
CHCP 1252
SET WORKFOLDER=C:\Users\Myself\Documents
IF NOT EXIST "%WORKFOLDER%" MD "%WORKFOLDER%"
IF NOT EXIST "%WORKFOLDER%\png" MD "%WORKFOLDER%\png"
C:
CD "%WORKFOLDER%"
FOR %%X IN (*.pdf) DO (
convert -density 300 -quality 100 "%%~nX.pdf" "%WORKFOLDER%\png\output_%%02d_%%.png"
CD "%WORKFOLDER%\png"
mogrify -format pdf *.png
CD "%WORKFOLDER%"
"C:\Program Files (x86)\PDFtk\bin\pdftk.exe" "%WORKFOLDER%\png\*.pdf" cat output "%WORKFOLDER%\%%~nX_secure.new"
RENAME "%%~nX.pdf" "%%~nX.org"
DEL "%WORKFOLDER%\png\*.*" /F /S /Q
GOTO start1
)

CD "%WORKFOLDER%"
RENAME *.org *.pdf
RENAME *.new *.pdf

PAUSE

还可以用类似下面的方法压缩/优化输出 pdf(尚未起作用):

FOR %%X IN (*.pdf) DO (
"C:\Program Files\gs\gs9.26\bin\gswin64c.exe" -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile="%%~nX_komprimiert.pdf" "%%~nX.pdf"
)

相关内容