java - 如何使用 Itextpdf XML Worker 将 HTML 上标标签转换为 PDF?

标签 java pdf itext superscript xmlworker

我使用的是 itextpdf 版本 5.5.6。我传递了包含上标标签的 html,即 <sup>ABC</sup>以及其他 HTML 内容。但文本 ABC 显示为普通文本。看起来像上标标签 <sup>被转义并且 ABC 文本显示为普通文本。下面是使用 itextpdf 生成 PDF 的代码。

CssAppliers cssAppliers = new CssAppliersImpl(fontProvider);
HtmlPipelineContext htmlContext = new HtmlPipelineContext(cssAppliers);
htmlContext.setTagFactory(Tags.getHtmlTagProcessorFactory()); 
PdfWriterPipeline pdf = new PdfWriterPipeline(document, writer);
HtmlPipeline html = new HtmlPipeline(htmlContext, pdf);
CssResolverPipeline css = new CssResolverPipeline(cssResolver, html);                                                           
byte[] byte1=htmlBufferForPDF.toString().getBytes("UTF-8");
XMLWorker worker = new XMLWorker(css, true);
XMLParser p = new XMLParser(worker);    
ByteArrayInputStream stream = new ByteArrayInputStream(byte1);
p.parse(stream, Charset.forName("UTF-8"));

任何解决此问题的建议都会非常有帮助。

谢谢

最佳答案

以下内容适用于 iTextSharp/XML Worker 5.5.11 using the overloaded parseXHtml method并显式设置 CSS 样式。

HTML:

string HTML = @"
<html><head>
<title>Test HTML</title>
</head><body>
<div>The 1<sup>st</sup> day of the month</div>
</body></html>
";

解析代码:

string css = "sup { vertical-align: super; font-size: 0.8em; }";
using (var stream = new MemoryStream())
{
    using (var document = new Document())
    {
        PdfWriter writer = PdfWriter.GetInstance(document, stream);
        document.Open();
        using (var htmlStream = new MemoryStream(Encoding.UTF8.GetBytes(HTML)))
        {
            using (var cssStream = new MemoryStream(Encoding.UTF8.GetBytes(css)))
            {
                XMLWorkerHelper.GetInstance().ParseXHtml(
                    writer, document, htmlStream, cssStream
                );
            }
        }
    }
    File.WriteAllBytes(OUTPUT, stream.ToArray());
}

输出:

enter image description here

关于java - 如何使用 Itextpdf XML Worker 将 HTML 上标标签转换为 PDF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42990317/

相关文章:

java - 如何将svn日志交换成xml/txt文件

java - 使用java api从Word文档创建PDF文档

java - 读取 pdf 中的现有边距

java - 为 writeSelectedRows() 方法定义行跨度

java - itext 字体颜色在第一页变暗

Java线程队列重叠

java - H2嵌入模式和软件崩溃

java - Eclipse 中的未知主机异常

.net - 使用 .NET 中的二维条码创建 pdf 文档

javascript - 在 Chrome 的新标签/窗口中打开 jsPDF 创建的 pdf