2017-05-06 2 views
4

Ich habe ein PDF-Dokument, in dem alle Seitengrößen unterschiedlich sind. Ich möchte jede Seitengröße (die Leinwand) auf die maximale Breite und die maximale Höhe, die in dem Dokument gefunden werden, anpassen und es dann zentrieren.Adjust PDF Canvas maximale Seitengröße

Ich habe mich an pdftk und Ghostscript gewöhnt, aber ich kann ein anderes FOSS-Werkzeug betrachten, wenn es besser ist.

Wie geht das? Danke von Voraus.

Antwort

0

Ich habe meinen Anteil an pdfjam Scripting gemacht, also dachte ich, ich würde es versuchen.

ich ein Skript bekam mit pdfinfo und pdfjam Arbeits (Achtung: dies auf pdflatex basiert, die ein großes Paket, mehrere hundert MBs ist):

#!/bin/bash 

pdf=$1 

nb_pages=$(pdfinfo "$pdf" | grep ^Pages: | cut -f2 -d:) 
echo "Found $nb_pages pages in document" 

# Get page sizes as string of width:height values in points (ie "2380:3368 3368:2380 1684:2380 ...") 
page_sizes=$(seq $nb_pages | while read p; do pdfinfo -f $p -l $p "$pdf" | grep -e '^Page.* size:' | awk '{print $4,$6}'; done) 
echo "Page sizes: $page_sizes" 

max_width=$(echo $page_sizes | tr ' ' '\n' | cut -f 1 -d: | sort -n | tail -n 1) 
echo "Max width: $max_width" 

max_height=$(echo $page_sizes | tr ' ' '\n' | cut -f 2 -d: | sort -n | tail -n 1) 
echo "Max height: $max_height" 

# Run pdfjam on source pdf and set page size, it will center each page 
set -x 
pdfjam --suffix fixed "$pdf" --papersize "{${max_width}pt,${max_height}pt}" 

Es funktioniert (ich versuchte es auf „output.pdf "gefunden auf this page), aber (zumindest auf meinem System) Ich entdeckte, dass es Grenzen gibt, was Sie an --papersize Argument weitergeben können. Wenn der Pdfjam-Schritt für Sie fehlschlägt, können Sie versuchen, eine reduzierte Größe (Aufbewahrungsverhältnis) manuell auszuwählen und den Befehl erneut zu versuchen.

Hoffe, das hilft.

+0

Vielen Dank. Ich werde es versuchen! – Creasixtine

+0

Hallo, es scheint, dass dies heute "nicht akzeptiert" war. Gibt es ein Problem mit der vorgeschlagenen Lösung? –

+0

Entschuldigung. Ich hätte eine eindeutige Befehlszeilenlösung vorgezogen, aber es scheint, dass es keine gibt. Vielleicht sollten wir uns zum Beispiel an die Ghostscript-Ersteller wenden. In jedem Fall möchte ich Ihnen für Ihre Lösung danken. – Creasixtine