使用Java将HTML转换为PDF

jv4diomz  于 2022-12-02  发布在  Java
关注(0)|答案(3)|浏览(314)

我有一个HTML,并希望将其转换为内存中的PDF,但找不到很好的库将HTML转换为PDF。
我已经尝试使用ITextRendererJsoup执行此操作,但是引发了Can't load the XML resource (using TRaX transformer). org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 3; The markup in the document preceding the root element must be well-formed.异常
这是我的代码

Document document = Jsoup.parse(template, "UTF-8");
                document.outputSettings().syntax(Document.OutputSettings.Syntax.html);
                ByteArrayOutputStream binaryOutput = new ByteArrayOutputStream();
                renderer.setDocumentFromString(document.html());
                renderer.layout();
                renderer.createPDF(binaryOutput);
n1bvdmb6

n1bvdmb61#

您正在寻找一种呈现HTML并将其存储为PDF的方法。在这个问题中,人们试图呈现XML(它接近HTML,而且肯定是XHTML),以便最终将其存储为PDF:Java Render XML Document as PDF
但来到你的错误信息:该错误与您未显示的输入文档有关。根元素之前的文档应该/可能如下所示:

<?xml version="1.0"?>
<!-- comment -->
<?processinginstruction whatever parameters?>
<rootElement/>

所以<rootElement/>之前的所有内容都是您的错误信息所指向的。我猜您正在查看一个HTML文档,它可能包含一些JSoup HTML解析器正在处理的内容。除非您与我们共享该文档,否则您将不得不自己解决这些问题。

ffdz8vbo

ffdz8vbo2#

您可以尝试使用此软件包:com.itextpdf.html2pdf.HtmlConverter
有了这个,你要做的就是:HtmlConverter.convertToPdf(tempFileHtml, tempFilePdf);并导出它。它没有太多格式错误的xmls/htmls的问题。我使用了它,我对得到的结果很满意:)

6uxekuva

6uxekuva3#

IronPDF for Java(也适用于.NET)是进行HTML到PDF转换的常用工具。
pom.xml中添加了以下内容(将版本更改为最新版本):

<dependencies>

    <dependency>
        <groupId>com.ironsoftware</groupId>
        <artifactId>ironpdf</artifactId>
        <version>2022.11.0</version>
    </dependency>

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>2.0.3</version>
    </dependency>

</dependencies>

我能够渲染像素完美的PDF,看起来和我的HTML完全一样。

import com.ironsoftware.ironpdf.*;

// Render the HTML as a PDF. Stored in myPdf as type PdfDocument;
PdfDocument myPdf = PdfDocument.renderHtmlAsPdf("<h1> ~Hello World~ </h1> Made with IronPDF!");
 
// Save the PdfDocument to a file
myPdf.saveAs(Paths.get("html_saved.pdf"));

// Or with a local file:
myPdf = PdfDocument.renderHtmlFileAsPdf("example.html");
myPdf.saveAs(Paths.get("html_file_saved.pdf"));

// Even works with Webpages:
myPdf = PdfDocument.renderUrlAsPdf("https://ironpdf.com");
myPdf.saveAs(Paths.get("url.pdf"));
  • 免责声明,我隶属于IronPDF,并将非常乐意回答任何问题,您可能有与软件。*

相关问题