По соображениям безопасности я хочу разложить PDF-файлы и собрать их вместе (напечатать их и сканировать обратно в). Я хочу предложить это своим пользователям, поэтому я хотел бы написать своего рода решение hotfilder. При написании этого вопроса я почти разобрался сам. Есть только один глюк: convert (команда конвертировать один pdf-файл во множество png-страниц) называет выходные файлы без начальных нулей. pdftk (команда для объединения pdf-страниц в один pdf-документ) сортирует файлы по-разному, поэтому мой новый PDF-файл выглядит следующим образом: страница 1 страница 10 страница 100 страница 11 страница 12 страница 2
Вы можете мне с этим помочь?
Вот мой сценарий:
SETLOCAL
CHCP 1252
SET WORKFOLDER=C:UsersmyselfDocuments
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)PDFtkbinpdftk.exe" "%WORKFOLDER%png*.pdf" cat output "%WORKFOLDER%%%~nX_sicher.pdf"
)
1 ответ
исправил это как-то. Может быть, не элегантно, но работает. Вот код. Приветствуются предложения сделать это более плавным.
SETLOCAL EnableDelayedExpansion
CHCP 1252
SET WORKFOLDER=C:UsersMyselfDocuments
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%pngoutput_%%02d_%%.png"
CD "%WORKFOLDER%png"
mogrify -format pdf *.png
CD "%WORKFOLDER%"
"C:Program Files (x86)PDFtkbinpdftk.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 Filesgsgs9.26bingswin64c.exe" -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile="%%~nX_komprimiert.pdf" "%%~nX.pdf"
)