iTextSharp PDF:处理中欧和东欧字符
本指南解决了使用 iTextSharp 生成的 PDF 中中欧和东欧字符(例如“Č”、“Ć”)显示不正确的常见问题。
问题:使用这些字符生成 PDF 通常会导致渲染错误。
根本原因:有几个因素可能导致此情况:
解决方案:循序渐进的方法
准确的代码页选择:针对特定语言和字符集使用正确的代码页(例如,捷克语为“Cp1250”)。
Unicode 转义序列: 使用 Unicode 转义序列来实现一致的编码处理,而不是使用文字特殊字符。
字形支持字体: 选择包含所需字形的字体(如 Arial.ttf 或 FreeSans.ttf)。
字体嵌入:确保字体嵌入到 PDF 中(将“嵌入”参数设置为 true
)以保证正确显示,即使该字体在收件人的系统上不可用。
字体编码定义:显式定义用于字形解释的编码。 选项包括指定代码页或使用 Unicode 进行水平书写(例如“Cp1250”BaseFont.IDENTITY_H
)。
代码示例(说明性):
<code class="language-csharp">using iTextSharp.text; using iTextSharp.text.pdf; public class CEECharacterExample { public void CreatePdf(string destination) { Document document = new Document(); PdfWriter.GetInstance(document, new FileOutputStream(destination)); document.Open(); // Font with glyph support and code page Font fontCp1250 = FontFactory.GetFont("resources/fonts/FreeSans.ttf", "Cp1250", true); // Font with Unicode encoding Font fontUnicode = FontFactory.GetFont("resources/fonts/FreeSans.ttf", BaseFont.IDENTITY_H, true); // Paragraphs using different encodings Paragraph paragraphCp1250 = new Paragraph("Testing characters: \u010c, \u0106, \u0160, \u017d, \u0110", fontCp1250); Paragraph paragraphUnicode = new Paragraph("Testing characters: \u010c, \u0106, \u0160, \u017d, \u0110", fontUnicode); // Add paragraphs to the document document.Add(paragraphCp1250); document.Add(paragraphUnicode); document.Close(); } }</code>
通过实施这些步骤,您应该可以解决 iTextSharp PDF 中的字符显示问题。请记住将 "resources/fonts/FreeSans.ttf"
替换为字体文件的实际路径。
以上是如何在 iTextSharp PDF 中正确显示中欧和东欧字符?的详细内容。更多信息请关注PHP中文网其他相关文章!