【问题标题】:load javascript from pdf with java itextpdf使用 java itextpdf 从 pdf 加载 javascript
【发布时间】:2017-02-16 11:55:52
【问题描述】:

这是我使用 itext pdf 库从 java 创建 pdf 的代码,我成功了。我现在的问题是我不能在调用 onload 时从 html 添加 javascript 代码,也不能从 java 代码添加 javascript 代码。 我没有任何例外。 我做错了什么?有可能实现吗?

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>

【问题讨论】:

    标签: javascript java html itext


    【解决方案1】:

    XMLWorker 在生成 PDF 文件时无法解析 Javascript。 XMLWorker 实际上会忽略它,因此尝试使用 setJavaScript_onLoad() 调用它是行不通的,无论 HTML 文件中的函数如何。我不确定您要在这里实现什么,但您可以使用 Java 功能来评估嵌入式 Javascript。您将无法在 iText 上下文中运行脚本。

    如果您需要在 PDF 中嵌入 Javascript,我会在解析 HTML 后使用 iText 添加它。这需要您单独拥有 Javascript 并根据提供的 API 进行调整。您需要检查 Javascript API 以查看您可以在 PDF 文件中执行的操作。通常,您将向页面、表单等添加“附加操作”字典,以便能够运行 Javascript。您可以查看有关如何构建 AA 字典以及提供哪些触发器的 PDF 规范。但同样,不要期望能够将 Javascript for HTML 放入 PDF 并期望它开箱即用。

    您还需要更具体地说明您在 Javascript 中尝试执行的操作以及您尝试执行此操作的时间,以便我们在回答中更加具体。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多