Portable Document Format
A proprietary format owned by Adobe until 2008, when it was released and relicensed as an ISO standard.
http://en.wikipedia.org/wiki/Portable_Document_Format
Readings
- https://www.vice.com/en/article/pam43n/why-the-pdf-is-secretly-the-worlds-most-important-file-format
- https://planetpdf.com/planetpdf/pdfs/warnock_camelot.pdf
PDF & Postscript
PDF manipulating/editing tools
pdftk (the PDF toolkit)
pdfimages (part of poppler-utils)
pdfunite (part of poppler-utils)
pdftotext (part of poppler-utils)
$ pdftotext filename.pdf $ pdftotext -layout filename.pdf (Maintain (as best as possible) the original physical layout of the text.)
pdfinfo (part of poppler-utils)
$ pdfinfo filename.pdf $ pdfinfo -meta filename.pdf (print metadata) $ pdfinfo -url filename.pdf (print all urls) $ pdfinfo -dests filename.pdf (print all internal links)
pdffonts (part of poppler-utils)
rgb2cmyk.sh (using Ghostscript), part of OSP's pdfutils
coloseperation.sh (using Ghostscript), part of OSP's pdfutils
resize.sh (using Ghostscript), via OSP
imposition tools (multiple)
F/LOSS tools to make PDFs
Thanks to the Ghostscript project, there are many free software tools that work with postscript and PDF.
Canvas based (GUI)
- Scribus https://www.scribus.net/
- Inkscape http://inkscape.org/
- Laidout https://laidout.org/
- Electric Zine Maker https://alienmelon.itch.io/electric-zine-maker
CSS Print based (CSS Print)
- your browser (based on CSS Paged Media): use CTRL+P/CMD+P
- Weasyprint https://weasyprint.readthedocs.io/
- Paged.js https://www.pagedjs.org/
- wkhtmltopdf https://wkhtmltopdf.org/
- OSPKit (CSS Regions legacy support!) http://osp.kitchen/tools/ospkit/
P5.js based
- genzine https://github.com/munusshih/p5.genzine by Munus Shih and Iley Cao
Python based
- rinohtype http://www.mos6581.org/rinohtype/master/
- ReportLab https://www.reportlab.com/
- Flat http://xxyxyz.org/flat/
- PyX https://pyx-project.org/ (outputs to PostScript, PDF and SVG)
TeX based
- TeX https://tug.org/ + https://en.wikipedia.org/wiki/TeX
- LaTeX https://www.latex-project.org/
- ConTeXt https://wiki.contextgarden.net/
- texinfo https://www.gnu.org/software/texinfo/manual/texinfo/html_node/Short-Sample-Texinfo-File.html
- tectonic https://tectonic-typesetting.github.io/
- lyx https://www.lyx.org/
XML based
- speedata https://showcase.speedata.de/en/
Misc
- groff https://www.gnu.org/software/groff/
- SILE https://sile-typesetter.org/ (LaTeX-like)
- typst https://typst.app/ (custom markdown syntax)
- SATySFi https://github.com/gfngfn/SATySFi (LaTeX-like + OCaml-like)
- Patoline https://patoline.github.io/ (wiki/LaTeX/Ocaml-like)
Examples
Pandoc
$ pandoc -f markdown --pdf-engine weasyprint -c stylesheet.css filename.md -o filename.pdf
Weasyprint
$ weasyprint -s stylesheet.css filename.html filename.pdf
ReportLab
from reportlab.pdfgen import canvas
from reportlab.lib.units import inch, cm
c = canvas.Canvas('ex.pdf')
c.drawImage('ar.jpg', 0, 0, 10*cm, 10*cm)
c.showPage()
c.save()
See also
- Imposition tools, to rearrange PDFs
- Typesetting Tools
- Category:PagedMedia
- Web-to-print