itextsharp 中的阿拉伯语编码

2023-12-11

当我尝试使用 C# 这段代码创建阿拉伯语 PDF 时,生成的 PDF 文件包含离散字符。有什么帮助我无法获得连续字符吗?

//Create our document object
Document Doc = new Document(PageSize.LETTER);

//Create our file stream
using (FileStream fs = new FileStream(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "Test.pdf"), FileMode.Create, FileAccess.Write, FileShare.Read))
{
    //Bind PDF writer to document and stream
    PdfWriter writer = PdfWriter.GetInstance(Doc, fs);

    //Open document for writing
    Doc.Open();

    //Add a page
    Doc.NewPage();

    //Full path to the Unicode Arial file
    string ARIALUNI_TFF = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "arabtype.TTF");

    //Create a base font object making sure to specify IDENTITY-H
    BaseFont bf = BaseFont.CreateFont(ARIALUNI_TFF, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);

    //Create a specific font object
    iTextSharp.text.Font f = new iTextSharp.text.Font(bf, 12, iTextSharp.text.Font.NORMAL);

    //Write some text, the last character is 0x0278 - LATIN SMALL LETTER PHI
    Doc.Add(new Phrase("This is a ميسو ɸ", f));

    //Write some more text, the last character is 0x0682 - ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE
    Doc.Add(new Phrase("Hello\u0682", f));

    //Close the PDF
    Doc.Close();
}

仅支持从右到左书写和阿拉伯连字ColumnText and PdfPTable!

看看下面的例子:

  • http://itextpdf.com/examples/iia.php?id=205结果:说_和平.pdf
  • http://itextpdf.com/examples/iia.php?id=215结果:和平.pdf

阅读包含这些示例的书,了解为什么在 Peace.pdf 中并非所有单词都能正确呈现

Search http://tinyurl.com/itextsharpIIA2C11了解这些示例的相应 C# 版本。

无论如何,您需要一种知道如何显示阿拉伯字形的字体:

BaseFont bf = BaseFont.CreateFont(ARIALUNI_TFF, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
Font f = new Font(bf, 12);

您现在可以添加阿拉伯文本,例如在表格中:

PdfPCell cell = new PdfPCell();
cell.AddElement(new Phrase("Hello\u0682", f));
cell.RunDirection = PdfWriter.RUN_DIRECTION_RTL;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

itextsharp 中的阿拉伯语编码 的相关文章

随机推荐

  • TSQL Msg 1013“使用相关名称来区分它们。”

    我看了很多建议 在过去的两个小时里不知道如何解决这个问题 SET DATEFORMAT DMY DECLARE Source DATETIME 01 01 2001 DECLARE Destenaition DATETIME 01 01 2
  • Java 中的链接方法很慢吗?

    假设我有一个对象A哪个可以调用getB call getC call getD 调用 doSomething 现在我想使用一些方法D在我的应用程序中多次 即 A getB getC getD doSomething1 A getB getC
  • 如何在Java中打开txt文件并读取数字

    如何打开 txt 文件并将由输入或空格分隔的数字读取到数组列表中 读取文件 将每一行解析为一个整数并存储到一个列表中 List
  • 如何更改 stderr 中的 java 日志记录控制台输出以使其脱颖而出?

    我正在使用标准ConsoleHandler from java util logging默认情况下 控制台输出定向到错误流 即System err 如何将控制台输出更改为输出流 即System out 我已经到达 SimpleFormatt
  • 当 JsonConstructor 参数名称与 JSON 不匹配时如何抛出异常?

    我正在反序列化一堆 C 只读结构 它们的构造函数标记为 JsonConstructor 如果我收到的任何 JSON 格式错误 我会尝试尽早失败 不幸的是 如果构造函数参数和输入 JSON 之间存在命名差异 则该参数只会被分配一个默认值 有没
  • 如何将调试器附加到 Web 服务?

    我正在使用网络服务 谁能告诉我如何调试它 附加到正在执行应用程序池的 w3wp exe 实例
  • 发布管道无权执行操作“Microsoft.Web/sites/config/list/action”

    我有一个 DevOps 发布管道 通过虚拟机上的 CLI 愉快地推送到开发资源组 当我添加一个阶段推送到相同的 QA 资源组时 我得到以下结果 错误 AuthorizationFailed 对象 ID 为 的客户端 无权在范围 subscr
  • 在jQuery中,如何高效地添加大量元素?

    我目前有真值表生成器的草图 虽然它工作得很好 但速度相当慢 我添加到的每个布尔值组合 table 使用 jQuery 对于每个值 有一个 td 元素由 jQuery 创建 然后添加到 table 此外 我使用 jQuery UI 来制作漂亮
  • 如何知道堆栈函数消耗了多少?

    最近 我在采访中遇到了这样一个问题 我们如何确定特定函数消耗了多少堆栈存储空间 众所周知 堆栈 是平台的实现细节 无法从语言本身内部检查或以任何方式查询 本质上不可能保证 C 或 C 程序的任何部分是否可以进行另一个函数调用 堆栈大小 或者
  • 如何理解“warp 中的所有线程同时执行相同的指令”。在 GPU 中?

    我在读专业CUDA C编程 并在GPU 架构概述部分 CUDA 采用单指令多线程 SIMT 架构来管理和执行 32 个线程组 称为 warp warp 中的所有线程同时执行相同的指令 每个线程都有自己的指令地址计数器和寄存器状态 并根据自己
  • 如何复制 Xcode 项目来创建免费应用程序的付费版本

    我有一个免费的应用程序 我想制作一个付费版本 我尝试创建一个新项目并将类复制到其中 但不是很简单 有没有更简单的方法呢 我复制了目标 但是我可以通过什么方式在一个目标上设置指定的代码 并在另一个目标上设置另一个代码 你能帮助我吗 Paul
  • 如何获取邮政编码的纬度和经度?

    我需要一些帮助来动态获取用户输入的邮政编码的纬度和经度 这样我就可以在邮政编码的这些区域显示商店地址 谷歌正在运行某种地理编码 你应该检查一下 它可能对你有帮助http code google com apis maps documenta
  • Node.js - MySQL 中的“PROTOCOL_ENQUEUE_AFTER_FATAL_ERROR”

    我正在尝试编写一个Node Express来提供REST服务 应用程序启动时一切顺利 然而 几个小时后 我收到一个错误 code PROTOCOL ENQUEUE AFTER FATAL ERROR fatal false 看来有些资源即将
  • 给定 n,对 n 的数字求和。如果该值超过一位数,则继续减少产生一位数

    def digital root n x str n while len x 0 and len x 1 r 0 for i in range len x r r int x i x str r return r 数字根是数字中所有数字的递
  • Spark MapReduce 中的意外结果

    我是 Spark 新手 想了解 MapReduce 是如何在幕后完成的 以确保我正确使用它 这个帖子提供了一个很好的答案 但我的结果似乎不符合所描述的逻辑 我正在运行Spark 快速入门Scala 命令行指南 当我正确地添加行长度时 结果就
  • 类助手不会覆盖祖先的虚拟方法

    我一直将类助手理解为扩展类或部分类 它们的作用就像原始基类代码的扩展 如果我复制代码的接口部分并将其添加到基类中 并在实现中也这样做 那么代码的运行方式将与助手的运行方式完全相同 这让我始终了解助手中的多态性以及为什么它们不能重写基类中的方
  • Facebook 的通知(数据库实现)

    我想知道 Facebook 如何实现他们的通知系统 因为我想做类似的事情 FooBar 评论了你的状态 Red1 Green2 和 Blue3 对您的照片发表了评论 MegaMan 和其他 5 人评论了您的活动 我无法将多个通知写入单个记录
  • 读取文件时脚本跳过第二个 for 循环

    我正在尝试读取日志文件并将某些值与预设阈值进行比较 我的代码设法记录第一个的原始数据for在我的函数中循环 我添加了打印语句来尝试弄清楚发生了什么 并且我成功地推断出我的第二个 for 循环从未 发生 这是我的代码 def smartTes
  • 将 DataAnnotations 添加到自动生成的 DBML 类? MVC 2.0 ASP.NET

    我担心这样做 因为当 dbml 文件再次自动生成时 通常是这样 我的更改将被覆盖 我正在考虑做一个部分类并写出相同的属性来注释它们 但担心它会抱怨重复 而我什至无法实验的原因让我想到了问题的第二部分 我的 dbml 文件列表上的可扩展箭头丢
  • itextsharp 中的阿拉伯语编码

    当我尝试使用 C 这段代码创建阿拉伯语 PDF 时 生成的 PDF 文件包含离散字符 有什么帮助我无法获得连续字符吗 Create our document object Document Doc new Document PageSize