Last active
December 17, 2024 09:43
-
-
Save shinchiro/9958ef6f055b15226c61d261fc4ff7e6 to your computer and use it in GitHub Desktop.
ghostscript & qpdf tricks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@echo OFF | |
set gs="C:\Program Files\gs\gs10.03.1\bin\gswin64c.exe" | |
set qpdf="D:\Installer\pdftools\qpdf\qpdf.exe" | |
set pdftocairo="D:\Downloads\poppler\bin\pdftocairo.exe" | |
set cpdf="D:\Installer\pdftools\cpdf.exe" | |
for %%A in (%*) do ( | |
::%pdftocairo% -pdf %%A "D:\pdfwork\gen\%~n1.pdf" | |
::%qpdf% --empty --optimize-images --object-streams=generate --recompress-flate --compression-level=9 --pages %%A -- "D:\pdfwork\gen\%~n1.pdf" | |
::%gs% -q -dNOPAUSE -dBATCH -dSAFER -sDEVICE=pdfwrite -dEmbedAllFonts=true -dCompressFonts=true -dSubsetFonts=true -dDetectDuplicateImages=true -dDownsampleColorImages=true -dColorImageDownsampleType=/Bicubic -dColorImageResolution=150 -dDownsampleGrayImages=true -dGrayImageDownsampleType=/Bicubic -dGrayImageResolution=150 -dDownsampleMonoImages=true -dMonoImageDownsampleType=/Subsample -dMonoImageResolution=300 -dColorImageDownsampleThreshold=1.0 -dGrayImageDownsampleThreshold=1.0 -dMonoImageDownsampleThreshold=1.0 -sOutputFile="D:\pdfwork\gen\%%~nA.pdf" %%A | |
%pdftocairo% -pdf -r 150 %%A "D:\pdfwork\gen\%%~nA.pdf" | |
) | |
::%cpdf% -squeeze %%A -o "D:\pdfwork\gen\%~n1.pdf" | |
:: Extract pdf | |
:: gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dSAFER -dFirstPage=22 -dLastPage=36 -sOutputFile=outfile_p22-p36.pdf 100p-inputfile.pdf | |
:: gs -sDEVICE=png16m -dNOPAUSE -dBATCH -dSAFER -r300 -sOutputFile=tiger.png input.pdf | |
:: Merge pdf | |
:: gs -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=combine.pdf -dBATCH 1.pdf 2.pdf | |
:: gs -q -dNOCACHE -dNOPAUSE -dBATCH -dSAFER -sDEVICE=eps2write -sOutputFile=output.eps input.pdf | |
:: gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dSAFER -dBlackText -dBlackVector -sOutputFile=black_white.pdf input.pdf | |
:: %gs% -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dSAFER -dFILTERIMAGE -dFILTERVECTOR -sOutputFile=strip.pdf input.pdf | |
:: %gs% -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dSAFER -dFILTERTEXT -sOutputFile=strip.pdf input.pdf | |
:: | |
:: %gs% -q -o - -sDEVICE=inkcov cmyk.pdf | |
:: | |
:: %gs% -dNOPAUSE -dBATCH -sOutputFile=output.pdf -sDEVICE=pdfwrite -sColorConversionStrategy=Gray -dProcessColorModel=/DeviceGray -dCompatibilityLevel=1.4 input.pdf | |
:: gswin64c -sDEVICE=pdfwrite -o output.pdf -dNOSAFER "c:\Program Files\gs\gs9.50\lib/viewjpeg.ps" -c (input.jpg) viewJPEG | |
:: qpdf - https://github.com/qpdf/qpdf | |
:: | |
:: Remove password protected PDF | |
:: qpdf --password=password --decrypt input.pdf output.pdf | |
:: | |
:: Perform underlay with logo.pdf on in.pdf to page 8 only | |
:: %qpdf% in.pdf --underlay logo.pdf --from= --repeat=1 --to=8 -- test.pdf | |
:: | |
:: Extract page 8 from in.pdf and perform underlay with template.pdf | |
:: qpdf --empty --pages in.pdf --range=8 -- --underlay template.pdf --from= --repeat=1 --to=1 -- %~dp0\out.pdf | |
:: Flatten annotation | |
:: %qpdf% --flatten-annotations=all --empty --linearize --pages input.pdf -- output.pdf | |
:: Merge pdf | |
:: %qpdf% --empty --pages ori.pdf add.pdf --range=1 -- out.pdf | |
:: Extract page 3 from multiple pdf | |
:: %qpdf% --empty --pages --file=first.pdf --range=3 --file=second.pdf --range=3 --file=third.pdf --range=3 -- out.pdf | |
:: Merge all pdf | |
:: %qpdf% --empty --pages *.pdf -- out.pdf | |
:: Add pdf in between | |
:: %qpdf% --empty --pages a.pdf 1-3 b.pdf a.pdf 4-5 -- out.pdf | |
:: | |
:: -dFILTERIMAGE: produces an output where all raster drawings are removed. | |
:: -dFILTERTEXT: produces an output where all text elements are removed. | |
:: -dFILTERVECTOR: produces an output where all vector drawings are removed. | |
:: -dPDFSETTINGS=configuration | |
:: Presets the "distiller parameters" to one of four predefined settings: | |
:: /screen selects low-resolution output similar to the Acrobat Distiller (up to version X) "Screen Optimized" setting. | |
:: /ebook selects medium-resolution output similar to the Acrobat Distiller (up to version X) "eBook" setting. | |
:: /printer selects output similar to the Acrobat Distiller "Print Optimized" (up to version X) setting. | |
:: /prepress selects output similar to Acrobat Distiller "Prepress Optimized" (up to version X) setting. | |
:: /default selects output intended to be useful across a wide variety of uses, possibly at the expense of a larger output file. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment