Skip to content

Instantly share code, notes, and snippets.

@shinchiro
Last active December 17, 2024 09:43
Show Gist options
  • Save shinchiro/9958ef6f055b15226c61d261fc4ff7e6 to your computer and use it in GitHub Desktop.
Save shinchiro/9958ef6f055b15226c61d261fc4ff7e6 to your computer and use it in GitHub Desktop.
ghostscript & qpdf tricks
@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