在iTextSharp中反转从右到左(双向)语言的字符串

Zac*_*ack 5 c# bidi itextsharp

我正在使用iTextSharp(C#iText端口)从text/html创建pdf.我的大部分文字都是希伯来语,一种从右到左的语言.

我的问题是PDF反向显示RTL语言,所以我需要以一种只能反转RTL文本的方式来反转我的字符串而不用英语反转任何数字或文本.据我所知,fribidi允许在linux上执行此操作,但我无法找到针对此问题的任何解决方案.

我欢迎任何建议,包括自动执行此操作的iTextSharp的替代方案(如果存在).

Vah*_*idN 8

要正确使用iTextSharp显示RTL文本:

  • 您需要将字体的编码设置为 BaseFont.IDENTITY_H
  • 然后,你必须使用支持容器元素RunDirection,如PdfPCell,ColumnText等,现在你可以设置自己的element.RunDirection = PdfWriter.RUN_DIRECTION_RTL;


elc*_*uco 1

HTML 以逻辑模式显示希伯来语/阿拉伯语,而在 PDF 中,您需要将其存储为可视模式。您需要做的是将逻辑模式转换为视觉模式。有一些库可以做到这一点(谷歌搜索 minibidi,恕我直言,它是 BSD 许可的,或者 fribidi 是 GPL 或 LGPL)。

我真正的建议是改变方向。在 Qt4 中编写一个非常小的应用程序,其第一个参数是 URL,第二个参数是要写入的 PDF。由于 Qt4 有 HTML 支持(通过 QtWebKit),可以选择打印到 PDF(还有后脚本和 SVG),这应该比编写自己的 HTML->PDF 解决方案更简单。