首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用Itextpdf XML Worker将HTML上标标签转换为PDF?

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

Stack Overflow用户
提问于 2017-03-24 10:21:34
回答 2查看 1.4K关注 0票数 1

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

代码语言:javascript
复制
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"));

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

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-24 13:49:51

下面的代码适用于iTextSharp / XML 5.5.11 using the overloaded parseXHtml method并显式设置样式。

HTML:

代码语言:javascript
复制
string HTML = @"
<html><head>
<title>Test HTML</title>
</head><body>
<div>The 1<sup>st</sup> day of the month</div>
</body></html>
";

解析代码:

代码语言:javascript
复制
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());
}

输出:

票数 2
EN

Stack Overflow用户

发布于 2018-06-20 08:03:30

这在HTML5和PDF视图中对我都有效。似乎pdf忽略了css,但喜欢这个标签…

代码语言:javascript
复制
<html>
    <head>
         <style>
            .sup {
            font-size: 60%;
            vertical-align: super; 
            }
        </style> 
    </head>
    <body><span>Something<sup><span class="sup">©</span></sup> Else</span>
    </body>
</html>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42990317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档