首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IText HTML to PDF内存泄漏

IText HTML to PDF内存泄漏
EN

Stack Overflow用户
提问于 2016-08-17 14:11:14
回答 1查看 1.5K关注 0票数 0

日安,

我正在使用itext将HTML转换为PDF。但是当它调用XMLWorkerHelper.getInstance().parseXHtml(writer, document, is);时它变慢了,当我检查JVisualVM时,似乎有一个内存泄漏。

下面是我的代码:

代码语言:javascript
复制
ByteArrayOutputStream baos = new ByteArrayOutputStream();
    Document document = new Document();
    PdfWriter writer = PdfWriter.getInstance(document, baos);        
    document.open();
    InputStream is = new ByteArrayInputStream(content.getBytes());
    XMLWorkerHelper.getInstance().parseXHtml(writer, document, is);

    document.close();
    return baos.toByteArray();

它在Tomcat服务器上运行。

下面是html代码:

代码语言:javascript
复制
<!--?xml version="1.0" encoding="UTF-8"?-->
<html>
 <head> 
    <title>Title</title>
    
   
 </head> 
    
<body>  
  
      
EXAMPLE

</body>
</html>

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2016-08-17 17:20:42

对于Maven项目:将以下依赖项添加到项目的pom.xml文件:

代码语言:javascript
复制
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>3.14</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf -->
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>itextpdf</artifactId>
        <version>5.5.8</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/com.itextpdf.tool/xmlworker -->
    <dependency>
        <groupId>com.itextpdf.tool</groupId>
        <artifactId>xmlworker</artifactId>
        <version>5.5.8</version>
    </dependency>
代码语言:javascript
复制
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;

    import org.apache.poi.util.IOUtils;

    import com.itextpdf.text.Document;
    import com.itextpdf.text.DocumentException;
    import com.itextpdf.text.pdf.PdfWriter;
    import com.itextpdf.tool.xml.XMLWorkerHelper;

    public class HtmlToPdf {
        public static void main(String[] args) throws DocumentException, IOException {
            File htmlFile = new File(args[0]);
            String pdfFileName = "test.pdf";
            Document document = new Document();
            PdfWriter writer = null;
            InputStream is = null;
            OutputStream out = null;
            if (htmlFile.exists()) {
                try {
                    is = new FileInputStream(htmlFile);
                    out = new FileOutputStream(pdfFileName);
                    writer = PdfWriter.getInstance(document, out);
                    document.open();
                    XMLWorkerHelper.getInstance().parseXHtml(writer, document, is);             
                    System.out.println("PDF Created!");
                } finally {

                    // close the document before before input stream (is) and writer closure                
                    if(document != null && document.isOpen()) {
                        document.close();
                    }

                    // no harm in closing writer here
                    if(writer != null) {
                        writer.close();
                    }
                    IOUtils.closeQuietly(out);
                    IOUtils.closeQuietly(is);
                }
            }
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38989235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档