Tips en Trucs 2018

PDF documenten klaarstomen om af te drukken

Met een paar eenvoudige open source opdrachten kan je bij het afdrukklaar maken van documenten veel tijd besparen. Opdrachten schrikken de meeste visueel georiënteerde ontwerpers af. Maar hoe ga je een boek van 300 pagina's over verschillende pagina's spreiden, manueel in een grafisch omgeving pagina per pagina goed zetten is een monnikenwerk. Juist zo'n repetitieve, vervelende taken worden sneller uitgevoerd door opdrachten in een terminal.

Hoeveel pagina's passen op een blad?

Twee is niet noodzakelijk het goede antwoord! Bladen kunnen vier en meer zijden hebben. Niet fysisch, maar wel bij het afdrukken. Zo kan je twee pagina's op één bladzijde afdrukken, waardoor recto-verso vier pagina's op een blad passen.

Een blad dat bij het afdrukken kleinere pagina's op elke zijde bevat, noemen we een signature.

Signature

Begrijpen hoe signatures in elkaar zitten, kan ook voor thuistoepassingen handig zijn. Zo kan je er eenvoudig acht of zestien pagina's op één blad mee afdrukken. Daarna snij en vouw je het blad om er een mooie pasklare folder mee te maken (zie Understanding and working with Print Signatures).

PDFJam en Pdfbook

Er zijn verschillende manieren om een PDF document klaar te maken om af te drukken, maar de eenvoudigste is PDFJam. PDFJam is een verzameling scripts die al het rekenwerk en repetitieve pagina herschikken voor u kan uitvoeren.

PDF worden meestal gemanipuleerd met behulp van Java of LaTeX. PDFJam gebruikt LaTeX en is dus afhankelijk van het een compleet geïnstalleerd TeX Live systeem. In openSUSE Leap 42.3 installeer je PDFJam en alle benodigdheden met de opdracht:

dany@pindabook:~> sudo zypper install texlive-pdfjam-bin
Gegevens van installatiebron laden...
Lezen van geïnstalleerde pakketten...
Pakketafhankelijkheden oplossen...

De volgende 1742 NIEUWE pakketten zullen worden geïnstalleerd:
  libglut3 libkpathsea6 libOSMesa8 libpaper1 libpotrace0 libsigsegv2 libsynctex1 libtexlua52-5 libtexluajit2 libXaw3d8 libzzip-0-13
  perl-File-Copy-Recursive perl-File-HomeDir perl-File-Which perl-Font-AFM perl-HTML-Form perl-HTML-Format perl-HTML-Tree
  perl-HTTP-Server-Simple perl-IPC-System-Simple perl-Sub-Uplevel perl-Test-Warn perl-Tk perl-WWW-Mechanize perl-YAML-Tiny python-tk
  texlive texlive-12many texlive-12many-doc texlive-a2ping texlive-a2ping-bin texlive-a2ping-doc texlive-a4wide texlive-a4wide-doc
  texlive-accfonts texlive-accfonts-bin texlive-accfonts-doc texlive-adhocfilelist texlive-adhocfilelist-bin
...
  texlive-xkeyval-doc texlive-xltxtra texlive-xltxtra-doc texlive-xpatch texlive-xpatch-doc texlive-xstring texlive-xstring-doc
  texlive-xunicode texlive-xunicode-doc texlive-xypic-tut-pt texlive-yhmath texlive-yhmath-doc texlive-yhmath-fonts texlive-ytableau
  texlive-ytableau-doc texlive-zapfchan texlive-zapfchan-fonts texlive-zapfding texlive-zapfding-fonts

De volgende 650 aanbevolen pakketten zijn automatisch geselecteerd:
  texlive-12many-doc texlive-a2ping-doc texlive-a4wide-doc texlive-accfonts-doc texlive-adhocfilelist-doc texlive-adjustbox-doc
  texlive-advdate-doc texlive-ae-doc texlive-aeguill-doc texlive-afm2pl-doc texlive-amscls-doc texlive-amsfonts-doc
  texlive-amsmath-doc texlive-amstex-doc texlive-anysize-doc texlive-apnum-doc texlive-arabxetex-doc texlive-arara-doc
...
  texlive-xetex-doc texlive-xetexfontinfo-doc texlive-xetex-itrans-doc texlive-xetexko-doc texlive-xetex-pstricks-doc
  texlive-xetex-tibetan-doc texlive-xevlna-doc texlive-xifthen-doc texlive-xkeyval-doc texlive-xltxtra-doc texlive-xpatch-doc
  texlive-xstring-doc texlive-xunicode-doc texlive-yhmath-doc texlive-ytableau-doc

1742 nieuwe te installeren pakketten.
Totale downloadgrootte: 715,4 MiB. Reeds in de cache: 0 B. Na de bewerking zal aanvullend 1,1 GiB worden gebruikt.
Doorgaan? [j/n/...? alle opties tonen] (j): 
pakket perl-File-Copy-Recursive-0.38-12.3.noarch wordt opgehaald                            (1/1742),  20,0 KiB ( 34,9 KiB uitgepakt)
Ophalen: perl-File-Copy-Recursive-0.38-12.3.noarch.rpm ......................................................................[gereed]
pakket perl-File-Which-1.21-3.3.noarch wordt opgehaald                                      (2/1742),  24,7 KiB ( 42,7 KiB uitgepakt)
Ophalen: perl-File-Which-1.21-3.3.noarch.rpm ................................................................................[gereed]
pakket perl-HTML-Form-6.03-10.3.noarch wordt opgehaald                                      (3/1742),  25,6 KiB ( 63,7 KiB uitgepakt)
Ophalen: perl-HTML-Form-6.03-10.3.noarch.rpm ................................................................................[gereed]
...
pakket texlive-aeguill-2016.122.svn15878-29.1.noarch wordt opgehaald                     (1740/1742),  18,2 KiB (  5,5 KiB uitgepakt)
Ophalen: texlive-aeguill-2016.122.svn15878-29.1.noarch.rpm ..................................................................[gereed]
pakket texlive-collection-langfrench-2016.108.svn40375-21.1.noarch wordt opgehaald       (1741/1742),  10,1 KiB (    0   B uitgepakt)
Ophalen: texlive-collection-langfrench-2016.108.svn40375-21.1.noarch.rpm ....................................................[gereed]
pakket texlive-scheme-medium-2016.108.svn30457-21.1.noarch wordt opgehaald               (1742/1742),  10,2 KiB (    0   B uitgepakt)
Ophalen: texlive-scheme-medium-2016.108.svn30457-21.1.noarch.rpm ............................................................[gereed]
Controleren op conflicten tussen bestanden: .................................................................................[gereed]
(   1/1742) Installeren van: perl-File-Copy-Recursive-0.38-12.3.noarch ......................................................[gereed]
(   2/1742) Installeren van: perl-File-Which-1.21-3.3.noarch ................................................................[gereed]
(   3/1742) Installeren van: perl-HTML-Form-6.03-10.3.noarch ................................................................[gereed]
...
(1740/1742) Installeren van: texlive-aeguill-2016.122.svn15878-29.1.noarch ..................................................[gereed]
(1741/1742) Installeren van: texlive-collection-langfrench-2016.108.svn40375-21.1.noarch ....................................[gereed]
(1742/1742) Installeren van: texlive-scheme-medium-2016.108.svn30457-21.1.noarch ............................................[gereed]
Wordt uitgevoerd: texlive-kpathsea-2016.122.svn41139-25.5-zypper  (texlive-kpathsea, /var/adm/update-scripts)
Wordt uitgevoerd: texlive-kpathsea-2016.122.svn41139-25.5-zypper  (texlive-kpathsea, /var/adm/update-scripts) ...............[gereed]

PDFJam is het hoofdscript, maar wordt gebundeld met een paar kleinere scripts die PDFJam oproepen om veelvoorkomende taken te vereenvoudigen.

dany@pindabook:~> pdfbook --landscape Downloads/Manual-i3PROJECTOR-L3502W_BE.pdf 
          ----
  pdfjam: This is pdfjam version 2.08.
  pdfjam: Reading any site-wide or user-specific defaults...
          (none found)
  pdfjam: Effective call for this run of pdfjam:
          /usr/bin/pdfjam --booklet 'true' --landscape --suffix book --signature '4' --landscape -- Downloads/Manual-i3PROJECTOR-L3502W_BE.pdf - 
  pdfjam: Calling pdflatex...
  pdfjam: Finished.  Output was to '/home/dany/Manual-i3PROJECTOR-L3502W_BE-book.pdf'

Deze opdracht maakt een 2-up (vier pagina's signature) die je recto-verso kunt afdrukken. Na het afdrukken kan je deze inbinden zodat alle pagina's correct gepositioneerd zijn.

Pdfbook

De pdfbook opdracht vereenvoudigt de complexere pdfjam opdracht, die er voor hetzelfde resultaat zo uitziet:

dany@pindabook:~> pdfjam --booklet 'true' --landscape --signature '4' --landscape Downloads/Manual-i3PROJECTOR-L3502W_BE.pdf -o Manual-i3PROJECTOR-L3502W_BE.pdf
          ----
  pdfjam: This is pdfjam version 2.08.
  pdfjam: Reading any site-wide or user-specific defaults...
          (none found)
  pdfjam: Effective call for this run of pdfjam:
          /usr/bin/pdfjam --booklet 'true' --landscape --signature '4' --landscape --outfile Manual-i3PROJECTOR-L3502W_BE.pdf -- Downloads/Manual-i3PROJECTOR-L3502W_BE.pdf - 
  pdfjam: Calling pdflatex...
  pdfjam: Finished.  Output was to 'Manual-i3PROJECTOR-L3502W_BE.pdf'.

Al de helper scripts voeren dus een complexer pdfjam opdracht uit. Telkens wordt de volledige uitgevoerde pdfjam opdracht weergeven in de uitvoer. M.a.w. gebruik de opdracht die je het best ligt.

pdfnup

Moet je geen boek afdrukken, maar enkel een aantal pagina's op een blad, gebruik dan de opdracht pdfnup. Met de volgende opdracht kan je bijvoorbeeld acht speelkaarten op een blad afdrukken om deze dan later uit te knippen:

dany@pindabook:~> cd Afbeeldingen/Kaarten/
dany@pindabook:~/Afbeeldingen/Kaarten> pdfnup --nup 4x2 --suffix '4x2' anarchist.jpg beggar.jpg charlatan.jpg executioner.jpg miser.jpg rogue.jpg swashbuckler.jpg traitor.jpg
          ----
  pdfjam: This is pdfjam version 2.08.
  pdfjam: Reading any site-wide or user-specific defaults...
          (none found)
  pdfjam: Effective call for this run of pdfjam:
          /usr/bin/pdfjam --suffix nup --nup '2x1' --landscape --nup '4x2' --suffix 4x2 -- anarchist.jpg - beggar.jpg - charlatan.jpg - executioner.jpg - miser.jpg - rogue.jpg - swashbuckler.jpg - traitor.jpg - 
  pdfjam: Calling pdflatex...
  pdfjam: Finished.  Output was to '/home/dany/Afbeeldingen/Kaarten/traitor.jpg-4x2.pdf'.
pdfnup

Verder automatiseren kan met behulp van de mogelijkheden van uw shell (meestal Bash). Zo kan je het opsommen van de JPG afbeeldingen vervangen door een opdracht die de afbeeldingen verzameld en daarna verplaatst naar de map Afgewerkt:

dany@pindabook:~/Afbeeldingen/Kaarten> mkdir Afgewerkt
dany@pindabook:~/Afbeeldingen/Kaarten> pdfnup --nup 4x2 --suffix '4x2' `ls -1 *.jpg | head -n 8` && mv -i `ls -1 *.jpg | head -n 8` Afgewerkt/
          ----
  pdfjam: This is pdfjam version 2.08.
  pdfjam: Reading any site-wide or user-specific defaults...
          (none found)
  pdfjam: Effective call for this run of pdfjam:
          /usr/bin/pdfjam --suffix nup --nup '2x1' --landscape --nup '4x2' --suffix 4x2 -- anarchist.jpg - beggar.jpg - charlatan.jpg - executioner.jpg - miser.jpg - rogue.jpg - swashbuckler.jpg - tempter.jpg - 
  pdfjam: Calling pdflatex...
  pdfjam: Finished.  Output was to '/home/dany/Afbeeldingen/Kaarten/tempter.jpg-4x2.pdf'.

PDFtk

PDFtk is gespecialiseerd in het splitsen en samenvoegen van PDF documenten. PDFtk installeer je met de volgende opdracht:

dany@pindabook:~> sudo zypper install pdftk
[sudo] wachtwoord voor root: 
Ophalen van metagegevens uit installatiebron 'openSUSE-Leap-42.3-Update' ....................................................[gereed]
Cache van installatiebron 'openSUSE-Leap-42.3-Update' wordt gebouwd .........................................................[gereed]
Ophalen van metagegevens uit installatiebron 'openSUSE-Leap-42.3-Update-Non-Oss' ............................................[gereed]
Cache van installatiebron 'openSUSE-Leap-42.3-Update-Non-Oss' wordt gebouwd .................................................[gereed]
Gegevens van installatiebron laden...
Lezen van geïnstalleerde pakketten...
Pakketafhankelijkheden oplossen...

De volgende 3 NIEUWE pakketten zullen worden geïnstalleerd:
  libgcj48 libgcj48-jar pdftk

Het volgende aanbevolen pakket was automatisch geselecteerd:
  libgcj48-jar

3 nieuwe te installeren pakketten.
Totale downloadgrootte: 19,5 MiB. Reeds in de cache: 0 B. Na de bewerking zal aanvullend 67,8 MiB worden gebruikt.
Doorgaan? [j/n/...? alle opties tonen] (j): 
pakket libgcj48-jar-4.8.5-32.1.x86_64 wordt opgehaald                                          (1/3),   9,8 MiB ( 10,8 MiB uitgepakt)
Ophalen: libgcj48-jar-4.8.5-32.1.x86_64.rpm .....................................................................[gereed (4,5 MiB/s)]
pakket libgcj48-4.8.5-32.1.x86_64 wordt opgehaald                                              (2/3),   9,1 MiB ( 54,0 MiB uitgepakt)
Ophalen: libgcj48-4.8.5-32.1.x86_64.rpm .........................................................................[gereed (4,1 MiB/s)]
pakket pdftk-2.02-10.1.x86_64 wordt opgehaald                                                  (3/3), 696,2 KiB (  3,0 MiB uitgepakt)
Ophalen: pdftk-2.02-10.1.x86_64.rpm ...........................................................................[gereed (648,1 KiB/s)]
Controleren op conflicten tussen bestanden: .................................................................................[gereed]
(1/3) Installeren van: libgcj48-jar-4.8.5-32.1.x86_64 .......................................................................[gereed]
(2/3) Installeren van: libgcj48-4.8.5-32.1.x86_64 ...........................................................................[gereed]
(3/3) Installeren van: pdftk-2.02-10.1.x86_64 ...............................................................................[gereed]

Om twee PDF documenten samen te voegen, gebruik je de volgende opdracht:

dany@pindabook:~> pdftk linux1sp11.pdf linux2sp10.pdf cat output linux.pdf

Om verschillende PDF documenten samen te voegen, mag je eveneens jokers gebruiken:

dany@pindabook:~> pdftk linux*sp*.pdf cat output linux.pdf

ImageMagick

ImageMagick is een echt Zwitsers zakmes. Zoals PDFJam bevat het voor een ontwerper verschillende nuttige opdrachten. De volledige documentatie vindt je hier.

Zoals elke opdracht kan je ImageMagick in scripts opnemen om zo taken te automatiseren. ImageMagick is bijvoorbeeld handig om afbeeldingen naar andere formaten om te zetten:

dany@pindabook:~> cd SVG/
dany@pindabook:~/SVG> for BESTAND in *svg ; do convert $BESTAND -density 300 $BESTAND.png; done

Een afbeelding (bijvoorbeeld een gescand document) omzetten naar een PDF document gaat als volgt:

dany@pindabook:~> convert Nederlands_betoog_1.png Nederlands_betoog_1.pdf