当前位置: 首页 > 面试题库 >

使用itext的XML worker

倪德业
2023-03-14
问题内容
import java.io.FileOutputStream;
import java.io.StringReader;

import com.itextpdf.text.Document;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.tool.xml.XMLWorkerHelper;
public class HtmlToPDF2 {

      // itextpdf-5.4.1.jar  http://sourceforge.net/projects/itext/files/iText/
      // xmlworker-5.4.1.jar http://sourceforge.net/projects/xmlworker/files/
      public static void main(String[] args ) {
            try {
              Document document = new Document(PageSize.LETTER);
              PdfWriter pdfWriter = PdfWriter.getInstance
                   (document, new FileOutputStream("C:/Users/Jason/Desktop/testpdf.pdf"));
              document.open();
              document.addAuthor("Real Gagnon");
              document.addCreator("Real's HowTo");
              document.addSubject("Thanks for your support");
              document.addCreationDate();
              document.addTitle("Please read this");

              XMLWorkerHelper worker = XMLWorkerHelper.getInstance();

              String str = "<html><head></head><body>"+
                "<a href='http://www.rgagnon.com/howto.html'><b>Real's HowTo</b></a>" +
                "<h1>Show your support</h1>" +
                "<p>It DOES cost a lot to produce this site - in ISP storage and transfer fees, " +
                "in personal hardware and software costs to set up test environments, and above all," +
                "the huge amounts of time it takes for one person to design and write the actual content.</p>" +
                "<p>If you feel that effort has been useful to you, perhaps you will consider giving something back?</p>" +
                "<p>Donate using PayPal® to real@rgagnon.com.</p>" +
                "<p>Contributions via PayPal are accepted in any amount</p>" +
                "<P><br/><table border='1'><tr><td>Java HowTo</td></tr><tr>" +
                "<td style='background-color:red;'>Javascript HowTo</td></tr>" +
                "<tr><td>Powerbuilder HowTo</td></tr></table></p>" +
                "</body></html>";
              worker.parseXHtml(pdfWriter, document, new StringReader(str));
              document.close();
              System.out.println("Done.");
              }
            catch (Exception e) {
              e.printStackTrace();
            }
          }

}

这是我在网上找到的示例代码。当我尝试执行它时,出现此错误:

Exception in thread "main" java.lang.NoSuchMethodError: com.itextpdf.text.Paragraph.trim()Z
at com.itextpdf.tool.xml.html.AbstractTagProcessor.currentContentToParagraph(AbstractTagProcessor.java:257)
at com.itextpdf.tool.xml.html.Header.end(Header.java:93)
at com.itextpdf.tool.xml.html.AbstractTagProcessor.endElement(AbstractTagProcessor.java:189)
at com.itextpdf.tool.xml.pipeline.html.HtmlPipeline.close(HtmlPipeline.java:206)
at com.itextpdf.tool.xml.XMLWorker.endElement(XMLWorker.java:141)
at com.itextpdf.tool.xml.parser.XMLParser.endElement(XMLParser.java:395)
at com.itextpdf.tool.xml.parser.state.ClosingTagState.process(ClosingTagState.java:70)
at com.itextpdf.tool.xml.parser.XMLParser.parseWithReader(XMLParser.java:235)
at com.itextpdf.tool.xml.parser.XMLParser.parse(XMLParser.java:213)
at com.itextpdf.tool.xml.XMLWorkerHelper.parseXHtml(XMLWorkerHelper.java:175)
at xml.HtmlToPDF2.main(HtmlToPDF2.java:41)

我正在使用itextpdf-5.1.2.jar和xmlworker-5.4.3.jar。请帮助


问题答案:

它与xmlworker-5.4.1.jar和itextpdf-5.4.2.jar完美配合。



 类似资料:
  • null 有人能解释一下,当我使用PdfReader阅读模板后,我如何制作模板的副本吗?有没有办法把表格写到模板副本上,而不是一个新文档上? 为了将来的参考,我做了以下工作:

  • 我刚开始使用iText,我不知道XMLWorkerHelper类是如何工作的。我正在尝试创建一个方法,该方法接受包含html文档的字符串,将html转换为pdf文档,并将pdf作为字节数组返回。如果有人能指出下面代码中的错误,我将不胜感激。 我使用的代码如上所述。html代码位于变量articleString中。重要的部分是介于这两个系统之间。出来println语句。这是web应用程序和系统的一部

  • 我正在使用iText 5.1.3,我想在我的Pdf文档中添加一个标题。我使用了已知的解决方案:http://itextpdf.com/examples/iia.php?id=104 此解决方案使用了类,并重写了方法,以便在完成每一页之后准确地添加标题。上面链接中提供的示例工作良好,因为它添加了一个表作为文档的头。我尝试做完全相同的一个区别,即我希望表中的一些单元格具有行span和/或colspan

  • 我正在开发一个web应用程序,并试图使用它的文本创建一个pdf文档。 当我得到一个路径(本地和服务器上)时,它工作得很好,但我知道我需要在不实际创建它的情况下完成它。 我不想要的:PdfCopy copy=newpdfcopy(documentPDF,newfileoutputstream(mypath)) 我想要的是://PdfCopy copy=new PdfCopy(documentPDF,

  • 问题内容: 我们需要将现有的多个PDF导入到一个新的PDF中。部分代码的工作方式类似于 iText in Action 2nd Edition 第6.2.1节中的示例代码: 但是,我们只是意识到在处理带有注解的可填充PDF(在我们的示例中,那些PDF已经填充了数据)时,所有填充数据都会丢失在新PDF中。 我们在本书的同一部分找到了答案: 重要的是要理解呈现页面内容所需的资源与页面的交互功能之间的区

  • 我正在使用iText向现有pdf文件添加文本。它适用于简单的pdf,但与AcroForms的pdf存在问题。 我的代码: 错误消息:“此文档在Adobe Acrobat Reader DC中启用了扩展功能。文档自创建以来已更改,扩展功能的使用不再可用。请与作者联系以获取此文档的原始版本。” 并且没有我想添加到文件中的文本 知道我错过了什么吗?