如何使用iText将HTML转换为PDF

20
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import com.itextpdf.text.Document;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;

public class GeneratePDF {
    public static void main(String[] args) {
        try {

            String k = "<html><body> This is my Project </body></html>";

            OutputStream file = new FileOutputStream(new File("E:\\Test.pdf"));

            Document document = new Document();
            PdfWriter.getInstance(document, file);

            document.open();

            document.add(new Paragraph(k));

            document.close();
            file.close();

        } catch (Exception e) {

            e.printStackTrace();
        }
    }
}
这是我将HTML转换为PDF的代码。我能够进行转换,但在PDF文件中保存的是整个HTML,而我需要显示的只是文本。在此期间,<html><body>This is my Project</body></html>被保存到PDF中,但它应该只保存This is my Project

尝试这个:https://dev59.com/lVPTa4cB1Zd3GeqPjXVh - pratZ
我需要在Java中进行转换。 - Aman Kumar
Apache OpenOffice API:http://wiki.openoffice.org/wiki/API/Tutorials/PDF_export#How_to_use_it_from_Java - boxed__l
有没有将HTML转换为PDF/A-2的选项? - S_S
2个回答

50

您可以使用 HTMLWorker 类(已弃用)来执行此操作:

import com.itextpdf.text.html.simpleparser.HTMLWorker;
//...
try {
    String k = "<html><body> This is my Project </body></html>";
    OutputStream file = new FileOutputStream(new File("C:\\Test.pdf"));
    Document document = new Document();
    PdfWriter.getInstance(document, file);
    document.open();
    HTMLWorker htmlWorker = new HTMLWorker(document);
    htmlWorker.parse(new StringReader(k));
    document.close();
    file.close();
} catch (Exception e) {
    e.printStackTrace();
}

或者使用XMLWorker,(从这个jar包下载),使用以下代码:

import com.itextpdf.tool.xml.XMLWorkerHelper;
//...
try {
    String k = "<html><body> This is my Project </body></html>";
    OutputStream file = new FileOutputStream(new File("C:\\Test.pdf"));
    Document document = new Document();
    PdfWriter writer = PdfWriter.getInstance(document, file);
    document.open();
    InputStream is = new ByteArrayInputStream(k.getBytes());
    XMLWorkerHelper.getInstance().parseXHtml(writer, document, is);
    document.close();
    file.close();
} catch (Exception e) {
    e.printStackTrace();
}

1
但是Html Worker类不起作用了,它已经被弃用了,所以你能告诉我我们需要哪个jar文件来使用Html Worker类吗? - Aman Kumar
使用XMLWorkerHelper时,我遇到了“RuntimeWorkerException:找到无效的嵌套标签head,期望关闭标签meta。”的错误。 - Drazen Bjelovuk
它生成了一个空的PDF文件;/ - Ondrej Tokar
请看这里:http://stackoverflow.com/questions/29944021/converting-html-to-pdf-with-itext-library-makes-an-empty-pdf :) - Ondrej Tokar
1
请展示你的导入。我在jar包中找不到PdfWriter类。 - Half Blood Prince
显示剩余12条评论

1

我们的项目需要添加哪个jar文件? - Aman Kumar
你可以在链接中获得帮助,仍然请访问此链接,复制zip文件,获取jar文件,并将其放入构建路径中:https://code.google.com/p/flying-saucer/downloads/list - Jayesh
@Jayesh,有没有适用于Android的解决方案?我能在Android上使用吗?你有没有想过如何将HTML转换为PDF在Android上? - Rucha Bhatt Joshi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接