ItextSharp HTML 到 PDF 转换 如何将带有上标和下标的文本按原样转换
ItextSharp HTML to PDF conversion how to convert text with superscript and subscript as it is
你好,这是我将 HTML 转换为 PDF 的实现,因为 i
private static PdfContent PdfContentA()
{
var cssText = System.IO.File.ReadAllText(@"C:\Users\kalanamithm\Desktop\Ground Operations\MvcApplication1\MvcApplication1\Resources\CSS\FTL.css");
//var htmlText = System.IO.File.ReadAllText(@"C:\Users\kalanamithm\Desktop\Ground Operations\MvcApplication1\MvcApplication1\Resources\HTML\grace.html");
var htmlText = System.IO.File.ReadAllText(@"C:\Users\kalanamithm\Desktop\Ground Operations\MvcApplication1\MvcApplication1\Resources\HTML\FLT.html");
var memoryStream = new MemoryStream();
var document = new Document();
var writer = PdfWriter.GetInstance(document, memoryStream);
document.Open();
var xmlWorkerFontProvider = new XMLWorkerFontProvider();
xmlWorkerFontProvider.Register("http://localhost:58045/Resources/Fonts/TequilaSunset-Regular.ttf");
xmlWorkerFontProvider.Register("http://localhost:58045/Resources/Fonts/Mf Sippin On Sunshine.ttf");
using (var cssMemoryStream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(cssText)))
{
using (var htmlMemoryStream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(htmlText)))
{
XMLWorkerHelper.GetInstance().ParseXHtml(writer, document, htmlMemoryStream, cssMemoryStream);
}
}
document.Close();
var pdfContent = new PdfContent
{
MemoryStream = memoryStream,
FileName = "SomeName"
};
return pdfContent;
}
um 在这里遇到一个问题,当 um 转换 SuperScript pr 下标时,它不会在 Pdf 中显示。
ITextSharp 中是否有针对此问题的解决方案?
我想出了一个解决办法
在 html 中,我手动创建了一个上标,如下所示,它可以工作
(基于我的场景)
"<span style=\"width:500px;\">" +
"<span>500 m</span>" +
"<span style=\"vertical-align:super;font-size:8px;\">2</span>" +
"</span>" +
既然您的问题提到了 'as it is',那么您可以在 css 文件中为 sub 和 sup 标签添加 css。然后所有下标和上标标签将在 pdf 中呈现良好。无需更改初始 html.
<style>
sup {
vertical-align: super;
font-size: 9px;
}
sub {
vertical-align: sub;
font-size: 9px;
}
</style>
你好,这是我将 HTML 转换为 PDF 的实现,因为 i
private static PdfContent PdfContentA()
{
var cssText = System.IO.File.ReadAllText(@"C:\Users\kalanamithm\Desktop\Ground Operations\MvcApplication1\MvcApplication1\Resources\CSS\FTL.css");
//var htmlText = System.IO.File.ReadAllText(@"C:\Users\kalanamithm\Desktop\Ground Operations\MvcApplication1\MvcApplication1\Resources\HTML\grace.html");
var htmlText = System.IO.File.ReadAllText(@"C:\Users\kalanamithm\Desktop\Ground Operations\MvcApplication1\MvcApplication1\Resources\HTML\FLT.html");
var memoryStream = new MemoryStream();
var document = new Document();
var writer = PdfWriter.GetInstance(document, memoryStream);
document.Open();
var xmlWorkerFontProvider = new XMLWorkerFontProvider();
xmlWorkerFontProvider.Register("http://localhost:58045/Resources/Fonts/TequilaSunset-Regular.ttf");
xmlWorkerFontProvider.Register("http://localhost:58045/Resources/Fonts/Mf Sippin On Sunshine.ttf");
using (var cssMemoryStream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(cssText)))
{
using (var htmlMemoryStream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(htmlText)))
{
XMLWorkerHelper.GetInstance().ParseXHtml(writer, document, htmlMemoryStream, cssMemoryStream);
}
}
document.Close();
var pdfContent = new PdfContent
{
MemoryStream = memoryStream,
FileName = "SomeName"
};
return pdfContent;
}
um 在这里遇到一个问题,当 um 转换 SuperScript pr 下标时,它不会在 Pdf 中显示。
ITextSharp 中是否有针对此问题的解决方案?
我想出了一个解决办法 在 html 中,我手动创建了一个上标,如下所示,它可以工作 (基于我的场景)
"<span style=\"width:500px;\">" +
"<span>500 m</span>" +
"<span style=\"vertical-align:super;font-size:8px;\">2</span>" +
"</span>" +
既然您的问题提到了 'as it is',那么您可以在 css 文件中为 sub 和 sup 标签添加 css。然后所有下标和上标标签将在 pdf 中呈现良好。无需更改初始 html.
<style>
sup {
vertical-align: super;
font-size: 9px;
}
sub {
vertical-align: sub;
font-size: 9px;
}
</style>