gpt4 book ai didi

c# - iTextSharp 西里尔字母

转载 作者:太空狗 更新时间:2023-10-30 01:23:57 25 4
gpt4 key购买 nike

我用了http://www.codeproject.com/Articles/260470/PDF-reporting-using-ASP-NET-MVC3从我的 Razor View 生成 pdf 文件,效果很好,但我无法显示 č,ć 等西里尔字母。我尝试了所有方法,但无法正常工作。

我必须以某种方式告诉 HtmlWorker 使用不同的字体:

 using (var htmlViewReader = new StringReader(htmlText))
{
using (var htmlWorker = new HTMLWorker(pdfDocument))
{

htmlWorker.Parse(htmlViewReader);
}
}

你能帮忙吗?

编辑:

我少了一行

styleSheet.LoadTagStyle(HtmlTags.BODY, HtmlTags.ENCODING, BaseFont.IDENTITY_H);

其余同答案。

最佳答案

如果将Standard PdfRendererRender 方法更改为以下代码片段,它应该可以工作:

public byte[] Render(string htmlText, string pageTitle)
{
byte[] renderedBuffer;

using (var outputMemoryStream = new MemoryStream())
{
using (var pdfDocument = new Document(PageSize.A4, HorizontalMargin, HorizontalMargin, VerticalMargin, VerticalMargin))
{
string arialuniTff = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "ARIALUNI.TTF");
iTextSharp.text.FontFactory.Register(arialuniTff);

PdfWriter pdfWriter = PdfWriter.GetInstance(pdfDocument, outputMemoryStream);

pdfWriter.CloseStream = false;
pdfWriter.PageEvent = new PrintHeaderFooter { Title = pageTitle };
pdfDocument.Open();

using (var htmlViewReader = new StringReader(htmlText))
{
using (var htmlWorker = new HTMLWorker(pdfDocument))
{
var styleSheet = new iTextSharp.text.html.simpleparser.StyleSheet();
styleSheet.LoadTagStyle(HtmlTags.BODY, HtmlTags.FACE, "Arial Unicode MS");
styleSheet.LoadTagStyle(HtmlTags.BODY, HtmlTags.ENCODING, BaseFont.IDENTITY_H);
htmlWorker.SetStyleSheet(styleSheet);

htmlWorker.Parse(htmlViewReader);
}
}
}

renderedBuffer = new byte[outputMemoryStream.Position];
outputMemoryStream.Position = 0;
outputMemoryStream.Read(renderedBuffer, 0, renderedBuffer.Length);
}

return renderedBuffer;
}

关于c# - iTextSharp 西里尔字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10701272/

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