2017-05-21 18 views
0

Ich verwende iText7, um eine PDF zu generieren und dann in einem neuen Tab zu öffnen. Druckdialog automatisch öffnen, wenn PDF geöffnet wird, mit iText7

HttpHeaders headers = new HttpHeaders(); 
headers.setContentType(MediaType.parseMediaType("application/pdf")); 
String filename = "C:\\temp\\first-output2.pdf"; 
headers.add("content-disposition", "inline;filename=" + filename); 
headers.setCacheControl("must-revalidate, post-check=0, pre-check=0"); 

Die Absicht des Benutzers ist immer zu drucken, die PDF-Datei so anzuzeigen und er die Drucktaste ist unbequem zu lassen klicken. Deshalb möchte ich den Druckdialog sofort öffnen, wenn das PDF öffnet.

Diese Lösung hat nicht funktioniert

Open print dialog automatically when PDF opened, using iText

weil PdfAction.PRINTDIALOG in iText7 existiert nicht.

ich auch verschiedene JavaScript-Optionen ausprobiert, die nicht, wie

PdfAction action = PdfAction.createJavaScript("this.print(true);\\r"); 

funktionierten Wie kann ich den Druckdialog direkt nach dem Laden der Seite öffnen?

+0

Sie sind sich bewusst, dass die Unterstützung für offene Aktionen oder JavaScript könnte in einigen PDF-Viewer begrenzt werden? – mkl

+0

Wenn jemand einen eingeschränkten PDF-Viewer verwendet, sollte er eingeschränkt sein. Ich wäre mit einer Lösung zufrieden, die für den Adobe Reader funktioniert. – ratlan

+0

OK. Ich habe nur gefragt, weil hier so viele Fragen von Leuten gestellt werden, die auf Basis eines Proof-of-Concept mit Adobe Reader (JavaScript aktiviert) ihren jeweiligen Kunden eine Funktionalität versprochen haben, die an jedem PDF-Viewer und jeder Konfiguration funktioniert ... – mkl

Antwort

4

Um den Druckdialog beim Öffnen des Dokuments zu öffnen, müssen Sie den JavaScript-Code this.print(true); verwenden.

Sie können eine solche Aktion in iText7 auf folgende Weise hinzufügen:

PdfAction printAction = new PdfAction(); 
printAction.put(PdfName.S, PdfName.JavaScript); 
printAction.put(PdfName.JS, new PdfString("this.print(true);\r")); 
pdfDocument.getCatalog().setOpenAction(printAction); 
Verwandte Themen