Portable Document Format: Difference between revisions
(→Python) |
|||
(21 intermediate revisions by the same user not shown) | |||
Line 9: | Line 9: | ||
* https://www.vice.com/en/article/pam43n/why-the-pdf-is-secretly-the-worlds-most-important-file-format | * 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 | * [https://web.archive.org/web/20160527105336/http://www.planetpdf.com/planetpdf/pdfs/warnock_camelot.pdf https://planetpdf.com/planetpdf/pdfs/warnock_camelot.pdf] | ||
== PDF | == PDF & Postscript == | ||
. | * [https://computerhistory.org/blog/postscript-a-digital-printing-press/ Computer History Museum documented the history of postscript] | ||
== | ==PDF manipulating/editing tools== | ||
[https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/ pdftk] (the PDF toolkit) | |||
[https://manpages.debian.org/stretch/poppler-utils/pdfimages.1.en.html pdfimages] (part of poppler-utils) | |||
[https://manpages.debian.org/stretch/poppler-utils/pdfunite.1.en.html pdfunite] (part of poppler-utils) | |||
[https://manpages.debian.org/stretch/poppler-utils/pdftotext.1.en.html pdftotext] (part of poppler-utils) | |||
$ pdftotext filename.pdf | |||
$ pdftotext -layout filename.pdf (Maintain (as best as possible) the original physical layout of the text.) | |||
[https://manpages.debian.org/stretch/poppler-utils/pdfinfo.1.en.html 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) | |||
[https://manpages.debian.org/stretch/poppler-utils/pdffonts.1.en.html pdffonts] (part of poppler-utils) | |||
[http://osp.kitchen/tools/pdfutils/tree/master/rgb2cmyk.sh#project-detail-files rgb2cmyk.sh] (using Ghostscript), part of [http://osp.kitchen/tools/pdfutils/ OSP's pdfutils] | |||
[http://osp.kitchen/tools/pdfutils/tree/master/colorSeparation.sh#project-detail-files coloseperation.sh] (using Ghostscript), part of [http://osp.kitchen/tools/pdfutils/ OSP's pdfutils] | |||
[[resize.sh]] (using Ghostscript), via [http://osp.kitchen OSP] | |||
[[Imposition|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. | |||
The list below is transcluded from the [[Layout Tools]] page. | |||
{{ :Typesetting_Tools }} | |||
==Examples== | ==Examples== | ||
Line 67: | Line 62: | ||
$ weasyprint -s stylesheet.css filename.html filename.pdf | $ weasyprint -s stylesheet.css filename.html filename.pdf | ||
=== | ===ReportLab=== | ||
<syntaxhighlight lang="python"> | <syntaxhighlight lang="python"> | ||
Line 77: | Line 72: | ||
c.save() | c.save() | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==See also== | |||
* [[Imposition]] tools, to rearrange PDFs | |||
* [[Typesetting Tools]] | |||
* [[Web-to-print]] | |||
* [[:Category:PagedMedia]] | |||
* [[:Category:FLOSS design]] | |||
[[Category:PagedMedia]] | [[Category:PagedMedia]] | ||
[[Category:Cookbook]] | [[Category:Cookbook]] |
Latest revision as of 17:04, 1 March 2024
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.
The list below is transcluded from the Layout Tools page.
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/
- Vivliostyle https://vivliostyle.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
- Web-to-print
- Category:PagedMedia
- Category:FLOSS design