2017-02-16 2 views
0

Dieses ist mein Code, zum eines pdf von Java mit itext pdf Bibliothek zu schaffen, die ich es folge. Mein Problem ist jetzt, dass ich JavaScript-Code entweder von HTML nicht hinzufügen kann, wenn onload oder keines von Java-Code aufgerufen wird. Ich habe keine Ausnahme. was mache ich falsch, ist es möglich, erreicht zu werden?laden Sie Javascript von pdf mit Java itextpdf

public class App { 
    public static final String src = "new.pdf"; 
    public static final String HTML = "test.html"; 

    public static void main(String[] args) throws IOException, DocumentException { 


     Document document = new Document(); 
     PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(src)); 
     // writer.addJavaScript("<script>alert('asdas')</script>"); 
     document.open(); 
     document.setJavaScript_onLoad("yourFunction()"); 
     XMLWorkerHelper.getInstance().parseXHtml(writer, document, new FileInputStream(HTML)); 
     document.close(); 
    } 

} 

<html> 
    <head> 
     <style>.col{padding:3px 20px 3px 20px}</style> 
     <script type="text/javascript"> 
      function yourFunction(){ 
       alert('You clicked the bottom text'); 
      } 
     </script> 
    </head> 
<body style="font-family:tahoma" onload="yourFunction()"> 
<div style="background:rgb(230,230,230); padding:5px ;border:1px solid black;"> 
    <b style="color:rgb(51,153,255)">Sample header</b> 
    <img style="float:right" height="25px" width="80px" src="resources/images/itext.png"/> 
</div> 
<br/> 
<table border='0' style='border-collapse: collapse;'> 
    <tr> 
     <td class="col">String 1</td> 
     <td class="col">: 1234354545</td> 
    </tr> 
    <tr> 
     <td class="col">String 32</td> 
     <td class="col">: rere</td> 
    </tr> 
    <tr> 
     <td class="col">String 3</td> 
     <td class="col">: ureuiu</td> 
    </tr> 
    <tr> 
     <td class="col">Date</td> 
     <td class="col">: dfdfjkdjk</td> 
    </tr> 
</table> 
<br/> 
<br/> 
<br/> 
<hr/> 
<br/> 
Contact us 
</body> 
</html> 

Antwort

1

XMLWorker kann Javascript nicht analysieren, wenn eine PDF-Datei zu erzeugen. XMLWorker wird es in der Tat ignorieren, daher wird es nicht funktionieren, es mit der Funktion setJavaScript_onLoad() aufzurufen, unabhängig davon, welche Funktion in der HTML-Datei enthalten ist. Ich bin mir nicht sicher, was Sie hier erreichen wollen, aber Sie könnten Java-Funktionalität verwenden, um das eingebettete Javascript zu bewerten. Sie können das Skript nicht im iText-Kontext ausführen.

Wenn Sie Javascript in Ihr PDF eingebettet benötigen, würde ich iText verwenden, um es nach dem Parsen des HTML hinzuzufügen. Dies erfordert, dass Sie das Javascript separat haben und an die bereitgestellte API angepasst haben. Sie müssen die Javascript-API überprüfen, um zu sehen, was Sie in einer PDF-Datei tun können. Im Allgemeinen fügen Sie einer Seite, einem Formular usw. ein Wörterbuch "Zusätzliche Aktionen" hinzu, um Javascript ausführen zu können. Sie können die PDF-Spezifikation überprüfen, wie das AA-Wörterbuch strukturiert wird und welche Auslöser bereitgestellt werden. Erwarten Sie jedoch nicht, dass Sie JavaScript für HTML in eine PDF-Datei einfügen können, und erwarten Sie, dass es sofort einsatzbereit ist.

Sie müssen auch etwas genauer auf das, was Sie in Javascript versuchen und wenn Sie versuchen, es für uns zu tun, um ein bisschen genauer in unseren Antworten zu sein.

+0

Ich sah diesen Beitrag und ich dachte, dass es mit älterer Version möglich war http://javabeat.net/javascript-communication-between-html-and-pdf-in-itext/ – xXxpRoGrAmmErxXx

+1

Ich habe Ihre Frage ein wenig falsch gelesen, ich werde meine Antwort erweitern. –

Verwandte Themen