Sar*_*ang 14 java api unicode pdf-generation jdk1.4
我试过iText,PDFBox和Oracle Forms.我还成功地在iText的情况下生成古吉拉特语PDF文档.但是,不幸的是,它没有在古吉拉特语(UTF-8)语言中生成适当的字体.
我的项目在jdk 1.4中,必须使用.所以,我需要支持Gujarati Font的旧版API.
如果有任何选择,请建议.
示例代码:
public void GeneratePDFusingiText(String lStrGujaratidata)
{
try
{
BaseFont bf = BaseFont.createFont("C:\\Windows\\Fonts\\Shruti.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
Font font = new Font(bf, 12);
Document document = new Document();
PdfWriter.getInstance(document, new FileOutputStream("D:/GeneratePDFusingiText.pdf"));
document.open();
document.add(new Paragraph(lStrGujaratidata, font));
document.close();
}
catch(Exception e)
{
System.out.println("Exception while generating PDF");
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
编辑1:
也许图像没有显示出来.它在这里上传.
编辑2:

步骤1)我输入古吉拉特语字符串谷歌音译.
步骤2)我使用BableMap软件将其转换为unicode,以使用Resourse Bundle.
问题:让我有一个字符串:બિલાડી(Biladi)
它的unicode将是:\ u0AAC \ u0ABF\u0AB2\u0ABE\u0AA1\u0AC0
检查上面的Bold Unicode字符.这就是我遇到问题的地方.现在,如果我将此unicode更改为\ u0ABF\u0AAC\u0AB2\u0ABE\u0AA1\u0AC0,它将以PDF格式输出正确的输出.
同时它在HTML中输出错误的输出,即:િબલાડી
我必须在他们之间进行管理.
我尝试过使用"gu"和"gu.UTF-8"和"UTF-8".但是,每次我得到相同的输出.
更新答案
\n\n在您发表评论后,我意识到我错了,即变音符号应该出现在字节序列中的第二个,即使它应该被渲染在主要字符的左侧。
\n\n因此,事实证明,iText 不支持印度语字符集上的这种类型的渲染。粗略地说,iText 使用 awt 的Graphics2D将非拉丁 unicode 字符一一呈现为 PDF 中的图像。(我想这是因为不一定每个人的计算机上都安装了合适的字体)。此功能不考虑这种特殊顺序。
iText 使用另一位开发人员提供的类,确实支持阿拉伯语的类似行为。请参阅com.itextpdf.text.pdf.ArabicLigaturizer。也许您可以自己创建一个类似的?(!)
\n\n貌似以前也出现过这样的情况:
\n\n原答案
\n\n肯乔,
\n\n我相信 iText 显示了正确的字符,但在将字符串转换为 unicode 点之前,输入的前 2 个字符已被“翻转”。因此,问题发生在数据到达 iText 之前。
\n\n根本问题是“第一个”字符是“前基”字符,它是变音符号的一种的一种类型。它有点像欧洲文本中的“重音”,它不能单独存在,其目的是修饰另一个字符。在本例中,它将“Ba”(\xe0\xaa\xac) 转换为“Bi”。
\n\n您将在 Unicode 代码页中看到,第一个字符 (\xe0\xaa\xbf) 确实是代码点 \\u0ABF,第二个字符 (\xe0\xaa\xac) 是 \\u0AAC : http: // en.wikipedia.org/wiki/Gujar%C4%81ti_script#Unicode
\n\n因此,在谷歌音译和代码点表示之间的某个地方,这些字符被翻转了。因此,您需要回顾一下您是如何进行翻译的。
\n\n您是如何将这些字符转换为代码点的?
\n\n看起来,一些解释者将“前基”放在主辅音之后,而不是之前:
\n\n因此,如果您能找出这种“翻转”发生的位置,那么您的解决方案有望出现。
\n\n希望这可以帮助
\n| 归档时间: |
|
| 查看次数: |
3848 次 |
| 最近记录: |