2010-04-17 6 views
9

Ich habe Ghost benutzen meine einzige Figur Plots in PDF zu PNG gemacht zu konvertieren:die MediaBox/CropBox in PDF Obey, wenn Ghostscript ein PDF zu PNG machen

gswin32c -sDEVICE=png16m -r300x300 -sOutputFile=junk.png^
     -dBATCH -dNOPAUSE Figure_001-a.pdf 

Dies funktioniert im Sinne Ich bekomme ein PNG heraus und es enthält die Handlung.

Aber es enthält auch eine große Menge an Leerraum (ein Beispiel Quellbild: http://cdsweb.cern.ch/record/1258681/files/Figure_001-a.pdf).

Wenn Sie es in Acrobat anzeigen, werden Sie feststellen, dass kein weißer Bereich um die Zeichnung herum vorhanden ist. Wenn Sie die obige Befehlszeile verwenden, finden Sie das Diagramm nur etwa 1/3 des Speicherplatzes.

Wenn ich dasselbe mit einer EPS-Datei mache, stoße ich auf dasselbe Problem. Es gibt jedoch den Befehlszeilenparameter -dEPSCrop, der übergeben werden kann, damit die PS-Rendering-Engine die BoundingBox beachtet.

Ich brauche das ähnliche Argument für das Rendern von PDFs. Ich konnte es nicht in Dokumenten finden (noch nicht mal die -dEPSCrop, eigentlich).

+0

Dank! Soweit ich das beurteilen kann, verwendet dies eine Rundungsmethode, bei der ein JPEG o.ä. geschrieben wird, nach den Rändern gesucht wird und dann mit festgelegten Rändern erneut ausgeführt wird. Die Zuschneide-Informationen, die ich verwenden möchte, sind bereits im PDF selbst (heck, Acrobat erkennt es automatisch).Ich kann nicht anders, als mich zu fragen, ob ich etwas Verrücktes machen könnte, wie das PDF in PS umwandeln und dann die Bounding Box von dort extrahieren. :-) – user319080

Antwort

0

Haben Sie versucht, pdfcrop mit pdftex (kommt mit Texlive zum Beispiel) oder (noch nicht versucht) das Python-Skript pdfcrop?

Ich habe einen ähnlichen Workflow mit dem ersten Tool erwähnt.

4

Es gibt verschiedene Möglichkeiten zu steuern, die „Mediengröße“ Ghost macht eine gegebene Eingabe:

-dPDFFitPage
-dUseTrimBox
-dUseCropBox

Mit PDFFitPage Ghostscript auf die aktuelle Seite Gerätegröße übertragen wird (normalerweise die Standardseitengröße). Mit UseTrimBox wird die TrimBox verwendet (und die PageSize wird gleichzeitig auf diesen Wert gesetzt). Mit UseCropBox wird die CropBox verwendet (und die PageSize wird gleichzeitig auf diesen Wert gesetzt). Standardmäßig (geben Sie keinen Parameter), wird Ghostscript mit der MediaBox rendern.

Für Ihr Beispiel sieht es aus wie "-dUseCropBox" wird die Arbeit tun, die Sie erwarten.

Hinweis, Sie können die Gesamtgröße Ihrer Ausgabe zusätzlich steuern, indem Sie "-sPAPERSIZE" verwenden (wählen Sie unter allen vordefinierten Werten aus, die Ghostscript kennt) oder (für mehr Flexibilität) verwenden Sie "-dDEVICEWIDTHPOINTS=NNN -dDEVICEHEIGHTPOINTS=NNN".

8

Ich hatte genau das gleiche Problem. Ich habe es behoben, indem ich -dUseArtBox Schalter hinzugefügt habe.

Beispiel:

/usr/bin/gs -dUseArtBox -dNOPAUSE -sDEVICE=pngalpha -sOutputFile=output.png input.pdf 

Hinweis: -dUseArtBox Schalter since ghostscript version 9.07

unterstützt

-dUseArtBox Sets the page size to the ArtBox rather than the MediaBox. The art box defines the extent of the page's meaningful content (including potential white space) as intended by the page's creator. The art box is likely to be the smallest box. It can be useful when one wants to crop the page as much as possible without losing the content.