gpt4 book ai didi

Java Css html到pdf转换异常发现无效的嵌套标签头,预期的结束标签链接

转载 作者:太空宇宙 更新时间:2023-11-04 11:18:49 26 4
gpt4 key购买 nike

    package sandbox.xmlworker;

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.tool.xml.XMLWorker;
import com.itextpdf.tool.xml.XMLWorkerHelper;
import com.itextpdf.tool.xml.css.CssFile;
import com.itextpdf.tool.xml.css.StyleAttrCSSResolver;
import com.itextpdf.tool.xml.html.Tags;
import com.itextpdf.tool.xml.parser.XMLParser;
import com.itextpdf.tool.xml.pipeline.css.CSSResolver;
import com.itextpdf.tool.xml.pipeline.css.CssResolverPipeline;
import com.itextpdf.tool.xml.pipeline.end.PdfWriterPipeline;
import com.itextpdf.tool.xml.pipeline.html.HtmlPipeline;
import com.itextpdf.tool.xml.pipeline.html.HtmlPipelineContext;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class D04_ParseHtmlCss {

public static final String SRC = "/home/xxx/workspace/DemoTransformer/src/data/result.html";
public static final String CSS = "/home/xxx/workspace/DemoTransformer/src/data/beyanname.css";
public static final String DEST = "/home/xxx/workspace/DemoTransformer/src/data/resultpdffileson.pdf";

public void createPdf(File file) throws IOException, DocumentException {
// step 1
Document document = new Document();

// step 2
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(file));
writer.setInitialLeading(12.5f);

// step 3
document.open();

// step 4

// CSS
CSSResolver cssResolver = new StyleAttrCSSResolver();
CssFile cssFile = XMLWorkerHelper.getCSS(new FileInputStream(CSS));
cssResolver.addCss(cssFile);

// HTML
HtmlPipelineContext htmlContext = new HtmlPipelineContext(null);
htmlContext.setTagFactory(Tags.getHtmlTagProcessorFactory());

// Pipelines
PdfWriterPipeline pdf = new PdfWriterPipeline(document, writer);
HtmlPipeline html = new HtmlPipeline(htmlContext, pdf);
CssResolverPipeline css = new CssResolverPipeline(cssResolver, html);

// XML Worker
XMLWorker worker = new XMLWorker(css, true);
XMLParser p = new XMLParser(worker);
p.parse(new FileInputStream(SRC));

// step 5
document.close();
}

/**
* Main method
*/
public static void main(String[] args) throws IOException, DocumentException {
File file = new File(DEST);
file.getParentFile().mkdirs();
new D04_ParseHtmlCss().createPdf(new File(DEST));
}
}

此代码来自itext沙箱:http://developers.itextpdf.com/examples/xml-worker-itext5/xml-worker-examples

我还使用 itext-pdf5.4.5 和 xml-worker 5.4.5

但它给出了这个错误,我不知道如何解决这个问题

Exception in thread "main" com.itextpdf.tool.xml.exceptions.RuntimeWorkerException: Invalid nested tag head found, expected closing tag link.
at com.itextpdf.tool.xml.XMLWorker.endElement(XMLWorker.java:134)
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.parser.XMLParser.parse(XMLParser.java:174)
at sandbox.xmlworker.D04_ParseHtmlCss.createPdf(D04_ParseHtmlCss.java:59)
at sandbox.xmlworker.D04_ParseHtmlCss.main(D04_ParseHtmlCss.java:71)

html文件的头部是这样的:

<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>KDV1</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="beyanname.css">
</head>

我使用 itext 从 xml 和 xslt 文件生成了此代码

最佳答案

您的工具正在使用 XML 解析器来解析 HTML。虽然两者看起来很相似,they are not exactly the same 。您的错误是由非子句 <link> 引起的标签,即 valid in HTML但不是 XML 格式。这会导致你的解析器抛出异常。因此,对您来说,最简单的解决方案是替换 XMLParser使用 HTML 解析器或确保您的 HTML 文件位于 XHTML 中这是 XML compliant

关于Java Css html到pdf转换异常发现无效的嵌套标签头,预期的结束标签链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45166802/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com