2016-09-13 4 views
0

Ich habe eine pdf, die durch den Einsatz von PDFBox wie unten Ich Iterieren:Ändern Seite Zoom eines bestehenden pdf mit PDFBox

PDDocument doc = PDDocument.load(new ByteArrayInputStream(bytearray)); 
PDDocumentCatalog catalog = doc.getDocumentCatalog(); 
for(PDPage page : catalog.getPages()){ 
    ...  
} 

ich die Standard-Vergrößerung für die Seiten festlegen möchten, so dass beim Öffnen Durch einen PDF-Reader öffnet es sich bei 75% Zoom standardmäßig. Ist das möglich? Ich habe einige Posts gesehen, wo der Zoom mit PDPageXYZDestination eingestellt wird, aber ich bin nicht sicher, ob das in meinem Fall anwendbar ist.

Danke.

Antwort

0

dies tun, gilt es für die erste nur gesehen Seite, das heißt beim Öffnen:

PDDocumentCatalog catalog = doc.getDocumentCatalog(); 
PDPage page = doc.getPage(0); // zero-based; you can also put another number to jump to a specific existing page 
PDPageXYZDestination dest = new PDPageXYZDestination(); 
dest.setPage(page); 
dest.setZoom(0.75f); 
dest.setLeft((int) page.getCropBox().getLowerLeftX()); 
dest.setTop((int) page.getCropBox().getUpperRightY()); 
PDActionGoTo action = new PDActionGoTo(); 
action.setDestination(dest); 
catalog.setActions(null); 
catalog.setOpenAction(action); 
doc.save(...); 
+0

Thx. Aber kann ich den Zoom für alle Seiten einstellen? Diese Methode scheint das 'PDActionGoTo' in den Katalog zu setzen, was bedeutet, dass ich einfach den Zoom für eine Seite einstellen kann? Gibt es auch keinen einfacheren Weg dies zu tun? Es sieht nach viel Arbeit aus, nur um den Zoom zu ändern. – drunkenfist

+0

Ich kenne keine solche Einstellung. Das Zoom-Ding ist für Ziele, das ist für das Öffnen, für Aktionen und für Lesezeichen. Ich kenne keinen einfacheren Weg; PDFBox ist sehr niedrig. –

+0

Danke, Ihre Methode funktioniert, wenn ich das PDF in einem Reader lade und öffne. Gibt es eine Möglichkeit, das gleiche zu erreichen, wenn das PDF in einem Browser geöffnet wird? Ich weiß, dass es "PDFOpenParameters" gibt, die ich zum Zoomen verwenden könnte. Aber das Problem ist, ich habe eine API, die das PDF als Antwort ResponseEntity zurückgibt. Der API-Endpunkt würde also etwa wie "abc.com/getpdf" aussehen. Aber es sieht so aus, als ob die offenen Parameter nur für direkte PDF-Dateien funktionieren (d. H. Wenn ich die PDF-Datei im Browser öffne). – drunkenfist

Verwandte Themen