Java Css+;html到pdf转换异常找到无效的嵌套标记头,应为关闭标记链接
此代码来自itext沙盒: 我还使用itext-pdf5.4.5和xml worker 5.4.5 但它给出了这个错误,我不知道如何解决这个问题Java Css+;html到pdf转换异常找到无效的嵌套标记头,应为关闭标记链接,java,html,css,exception,Java,Html,Css,Exception,此代码来自itext沙盒: 我还使用itext-pdf5.4.5和xml worker 5.4.5 但它给出了这个错误,我不知道如何解决这个问题 package sandbox.xmlworker; import com.itextpdf.text.Document; import com.itextpdf.text.DocumentException; import com.itextpdf.text.pdf.PdfWriter; import com.itextpdf.tool.x
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));
}
}
html文件的标题如下所示:
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)
KDV1
我使用itext从xml和xslt文件生成了这段代码。您的工具正在使用xml解析器解析HTML。虽然这两个人看起来很像。您的错误是由非子句的
标记引起的,该标记不是XML格式的。这会导致解析器抛出异常。因此,对您来说,最简单的解决方案是用HTML解析器替换XMLParser
,或者确保您的HTML文件位于XHTML
中,也就是说,您的工具正在使用XML解析器解析HTML。虽然这两个人看起来很像。您的错误是由非子句的
标记引起的,该标记不是XML格式的。这会导致解析器抛出异常。因此,对于您来说,最简单的解决方案是用HTML解析器替换XMLParser
,或者确保您的HTML文件位于XHTML
中,这是问题似乎出在HTML中,您可以发布它吗?或者至少完整的
完整的标题是这样的:“code”KDV1“code”我用其他java代码从xml和xslt文件生成了这段代码编辑您的问题以添加代码,而不是将其放在注释中。事实上,这是不可理解的版本完成了问题似乎在HTML中,你能发布它吗?或者至少完整的
完整的标题是这样的:“code”KDV1“code”我用其他java代码从xml和xslt文件生成了这段代码编辑您的问题以添加代码,而不是将其放在注释中。事实上,这是不可理解的。该版本没有任何最简单的方法将css、xml和xslt文件连接到pdf文件中吗?在您的示例中,您没有任何xml
或xslt
。但是,如果您想使用纯XML,您需要阅读它并自己生成PDF(当然要使用PDF库),因为XML只用于数据。或者,您可以使用一个支持导出到PDFAre的报告框架—有任何最简单的方法将css、xml和xslt文件合并到pdf文件中吗?在您的示例中,您没有任何xml
或xslt
。但是,如果您想使用纯XML,您需要阅读它并自己生成PDF(当然要使用PDF库),因为XML只用于数据。或者您可以使用支持导出为PDF的报告框架
<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>