我正在使用iTextSharp(C#iText端口)从text / html创建pdf。我的大多数文本都是希伯来语,一种从右到左的语言。
我的问题是PDF反向显示RTL语言,所以我需要以一种只能反转RTL文本的方式来反转我的字符串而不用英语反转任何数字或文本。 据我所知,fribidi允许在linux上执行此操作,但我找不到针对此问题的任何解决方案。
我欢迎任何建议,包括自动执行此操作的iTextSharp的替代方案(如果存在)。
答案 0 :(得分:8)
要正确使用iTextSharp显示RTL文本:
BaseFont.IDENTITY_H
RunDirection
的容器元素,例如PdfPCell
,ColumnText
等,现在您可以设置element.RunDirection = PdfWriter.RUN_DIRECTION_RTL
; 答案 1 :(得分:1)
PDFCreator是一款免费工具,几乎可以从任何Windows应用程序创建PDF文件。 它安装为Windows打印机驱动程序,因此任何具有打印功能的Windows程序都可以使用它。
您可以将输入视为要打印的简单文本字符串,并且可以使用print
的{{1}}菜单选项创建正确的PDF。
如果您想更深入地从右到左Notepad
打印,请使用StringFormatFlags.DirectionRightToLeft
字符串格式和Graphics.DrawString()
来电。
来自C#
:
PrintPage Event Handler
答案 2 :(得分:1)
只需将字符串放在表格单元格中:
PdfPCell cell1 = new PdfPCell(new Phrase("מספר",font));
cell1.HorizontalAlignment = 2; //0=Left, 1=Centre, 2=Right
答案 3 :(得分:0)
HTML在逻辑模式下显示希伯来语/阿拉伯语,在PDF中,您需要将其存储为可视模式。您需要做的是从逻辑模式转换为可视模式。有一些图书馆这样做(google为minibidi是BSD许可的恕我直言,或fribidi是GPL或LGPL)。
我真正的建议是改变方向。在Qt4中编写一个非常小的应用程序,它将URL作为第一个参数,第二个是要编写的PDF。由于Qt4具有HTML支持(通过QtWebKit)可以选择打印到PDF(后脚本和SVG),这应该更简单,然后编写自己的HTML-> PDF解决方案。