2017-02-16 9 views
0

これは私が成功するitext pdfライブラリを使ってjavaからpdfを作成するためのコードです。私の問題は今、私はonloadが呼び出されたとき、またはJavaコードからどちらもHTMLからjavascriptコードを追加できないということです。 私は例外がありません。 私は間違って何をしているのですか?達成することは可能でしょうか? PDFファイルを生成するときにjava with 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> 

答えて

1

XMLWorkerはJavascriptを解析することはできません。 XMLWorkerは実際にそれを無視するので、setJavaScript_onLoad()を使ってXMLWorkerを呼び出そうとすると、HTMLファイル内の関数に関係なく動作しません。私はあなたがここで何を達成しようとしているのかは分かりませんが、Javaの機能を使って埋め込まれたJavascriptを評価することができます。 iTextコンテキストでスクリプトを実行することはできません。

PDFに埋め込まれたJavaScriptが必要な場合は、HTMLを解析した後にiTextを使用して追加します。これには、Javascriptを個別に用意し、提供されたAPIに合わせて調整する必要があります。 PDFファイルでできることを確認するには、Javascript APIをチェックする必要があります。一般的には、Javascriptを実行できるように、ページ、フォームなどに「追加アクション」辞書を追加します。 AAディクショナリをどのように構成するか、どのトリガが提供されているかについて、PDF仕様を確認することができます。しかし、やはりHTML用のJavascriptをPDFに入れて、すぐに使えると期待してはいけません。

また、Javascriptで何をしようとしているのか、私たちの回答では少し具体的にするためにそれをしようとしているときに、さらに具体的にする必要があります。

+0

私はこの投稿を見て、私は以前のバージョンで可能だったと思ったhttp://javabeat.net/javascript-communication-between-html-and-pdf-in-itext/ – xXxpRoGrAmmErxXx

+1

私は少しあなたの質問を誤読しました私の答えを広げるでしょう。 –