2017-11-27 4 views
1

Ich versuche, eine SVG Datei in eine PDF Datei für die Einbettung in ein anderes Dokument PDF konvertieren. Ich benutze den Batik-Transcoder, übergebe die Bytes für die SVG und bekomme die Daten für die PDF zurück.Apache Batik SVG zu PDF - Ausgabe PDF ist falsch Größe

Mein Haupt PDF-Dokument und die SVG-Datei in den Transcoder bestanden haben beide Dimensionen:

width="602.8" height="763.8" 

Die Ausgabe PDF Datei aus dem SVG erzeugt ist jedoch kleiner. Aus diesem Grund nimmt das generierte SVG PDF, wenn es in unser Hauptdokument eingebettet ist, nicht den gesamten verfügbaren Platz in unserem Haupt-PDF in Anspruch, wie ich es von ihm erwarte, da es kleinere Dimensionen hat. Wie kann ich erzwingen, dass die Ausgabe pdf die gleichen Abmessungen des Hauptdokuments/Eingabe SVG hat.

+0

pdf wird in 72 dpi gerendert, aber das ist PDF-Format ist Vektor. So können Sie die Größe ändern. Qualität wird gleich sein –

Antwort

1

Also nach einigen weiteren Recherchen kam ich zu einer Lösung. Wir verwenden PDFBox als unser PDF-Bearbeitungswerkzeug, das standardmäßig eine DPI von 72 für Dokumente verwendet.

Batik hingegen verwendet eine DPI von 96, wenn ein SVG in eine PDF-Datei transkodiert wird. Dies macht die Ausgabedatei geringfügig kleiner als das Hauptdokument, das von PDFBox generiert wird. Um Batik zu einer DPI zu konvertieren, die PDFBox standardmäßig unterstützt, müssen wir die Pixel in mm Konvertierung von 96dpi auf 72dpi ändern.

Wir können eine Umcodierung Hinweis auf unsere PDFTranscoder hinzufügen wie folgt:

transcoder.addTranscodingHint(PDFTranscoder.KEY_PIXEL_UNIT_TO_MILLIMETER, 
(25.4f/72f)); 

wo (25.4f/72f) auf 72 dpi entspricht. Dies ersetzt die Standard-dpi von 96dpi (25,4f/96f)