From Omnia
Jump to: navigation, search

pdftk is better than ghostscript

Use pdftk!

Merge PDFs

Merge multiple PDFs with GhostScript: [1] [2]

gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=temp.pdf pdf1.pdf pdf2.pdf

Merge multiple PDFs with pdftk: [3]

# must install first
pdftk pdf1.pdf pdf2.pdf cat output temp.pdf

Merge multiple PDFs with ImageMagick: [4]

convert -density 150 $(ls -rt *pdf) output.pdf
convert -density 150 *.pdf output.pdf
convert -density 600 file1.pdf file2.pdf -resize 50% new.pdf

Remove Page

Remove a page with GhostScript:

# print pages from [START_PAGE] to [END_PAGE]
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dQUIET -dFirstPage=[START_PAGE] -dLastPage=[END_PAGE] -sOutputFile=output.pdf input.pdf

For reasons outlined by KenS, Ghostscript is not the best tool for what you want to achieve. A better tool for this task is pdftk [5]

# print pages 1, and 3-end (3 to end)
pdftk  input.pdf  cat 1 3-end  output output.pdf

Select Pages and Merge

# copy pages 55 60-end to new file
pdftk book1.pdf cat 55 60-end output book1_small.pdf
# copy last page to new file
pdftk book2.pdf cat end output book2_small.pdf
# merge files
pdftk book1_small.pdf book2_small.pdf cat output book_combined.pdf

Linux PDF


yum install ghostscript poppler-utils pdftk ImageMagick


Convert JPEG to PDF

Convert JPGs to PDF: (using ImageMagick) [6] [7]

convert *.jpg pictures.pdf
convert page1.jpg page2.jpg +compress file.pdf
convert `ls -1v` file.pdf
convert -page A4 -compress A4 *.png CH00.pdf
convert a.png b.png -compress jpeg -resize 1240x1753 -units PixelsPerInch -density 150x150 multipage.pdf
convert a.png b.png -compress jpeg -resize 1240x1753 \
                     -extent 1240x1753 -gravity center \
                     -units PixelsPerInch -density 150x150 multipage.pdf
convert in.jpg -resize 1240x1750 -background black -compose Copy\
              -gravity center -extent 1240x1750\
              -units PixelsPerInch -density 150 out.pdf
convert in.jpg -units PixelsPerInch -set density '%[fx:w/8.27]'\
              -repage a4 out.pdf

Set density attributes (but does not reduce actual image sizes!)

convert -page 2400x2400 -density 300 *.jpg out.pdf   # 8in x 8in @ 300dpi
convert -page 3375x2625 -density 300 *.jpg out.pdf   # 11.25in x 8.75in @ 300dpi

Reduce image quality and set density attribute:

convert -resize 400x400 -page 400x400 -density 100 *.jpg out2.pdf  # 4in x 4in @ 100dpi (low res 8x8)
convert -resize 675x525 -page 675x525 -density 100 *.jpg out2.pdf  # 6.75in x 5.25in @ 100dpi (low res 11.25x8.75)

Convert PostScript to PDF

#ps2pdf links to ps2pdf12

Optimize PDF

pdfopt input.pdf output.pdf

Standard Thirteen PDF Fonts

Standard Thirteen PDF Fonts (generally don't embed) [8]

*Times (plus four variants)
*Helvetica (plus four variants)
*Courier (plus four variants)

List Fonts in PDF

pdffonts input.pdf

References: Creating PDFs

Merge multiple PDFs

yum install pdfmerge  # rpmforge


Syntax:  pdfmerge file1.pdf file2.pdf... fileN.pdf outfile.pdf

Has some issues: [9]



pdftk - PDF Tool Kit

Better Merge

pdftk in1.pdf in2.pdf cat output out1.pdf

pdftk description:

If PDF is electronic paper, then pdftk is an electronic
          : staple-remover, hole-punch, binder, secret-decoder-ring, and
          : X-Ray-glasses. Pdftk is a simple tool for doing everyday things
          : with PDF documents. Keep one in the top drawer of your desktop and
          : use it to:
          :     * Merge PDF Documents
          :     * Split PDF Pages into a New Document
          :     * Decrypt Input as Necessary (Password Required)
          :     * Encrypt Output as Desired
          :     * Burst a PDF Document into Single Pages
          :     * Report on PDF Metrics, including Metadata and Bookmarks
          :     * Uncompress and Re-Compress Page Streams
          :     * Repair Corrupted PDF (Where Possible)


See Linux/pdftk

Crop Margins



yum install texlive-utils
apt-get install texlive-extra-utils

If you wish to crop a pdf with left, top, right and bottom margins of 5, 10, 20, and 30 pt (points), then run: [10]

pdfcrop --margins '5 10 20 30' input.pdf output.pdf

Crop 5pts all margins:

pdfcrop --margins 5 input.pdf output.pdf

Rulebook example:

pdfcrop --margins "-50 -35 -50 -35" STF-Rulebook.pdf out.pdf