Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用eclipse在pdf中创建波斯语内容_Java_Eclipse_Pdf_Itext - Fatal编程技术网

Java 如何使用eclipse在pdf中创建波斯语内容

Java 如何使用eclipse在pdf中创建波斯语内容,java,eclipse,pdf,itext,Java,Eclipse,Pdf,Itext,我在eclipse中的PDF文件中插入UNICODE字符时遇到问题。 对于这个问题,有一些解决方案,它对我来说不是很有效 解决办法是这样的 document.add(new Paragraph("Unicode: \u0418", new Font(bfComic, 12))); 我想从数据库中检索数据并向用户显示,我的字符是阿拉伯语,有时是波斯语 你有什么建议 谢谢您遇到了不同的问题: 数据编码: 请转到第2.2.2节“短语对象:带前导的块列表”。在本节中,查找标题“数据库编码与JVM使用的

我在eclipse中的PDF文件中插入UNICODE字符时遇到问题。 对于这个问题,有一些解决方案,它对我来说不是很有效

解决办法是这样的

document.add(new Paragraph("Unicode: \u0418", new Font(bfComic, 12)));
我想从数据库中检索数据并向用户显示,我的字符是阿拉伯语,有时是波斯语

你有什么建议


谢谢

您遇到了不同的问题:

数据编码:

请转到第2.2.2节“短语对象:带前导的块列表”。在本节中,查找标题“数据库编码与JVM使用的默认字符集”

您将看到数据库值的检索方式如下:

String name1 = new String(rs.getBytes("given_name"), "UTF-8");
String name2 = rs.getString("given_name")
Font font = new Font(bfComic, 12);
这是因为数据库包含具有特殊字符的不同名称。如果您要检索如下字段,则这些特殊字符可能会显示为乱码:

String name1 = new String(rs.getBytes("given_name"), "UTF-8");
String name2 = rs.getString("given_name")
Font font = new Font(bfComic, 12);
字体编码:

您可以这样创建字体:

String name1 = new String(rs.getBytes("given_name"), "UTF-8");
String name2 = rs.getString("given_name")
Font font = new Font(bfComic, 12);
您没有显示如何创建
bfComic
,但我假设此对象是使用
IDENTITY\u H
作为编码的
BaseFont
对象

从右向左书写/制作连字

虽然您的代码可以显示单个字符,但无法正确显示句子

假设
name1
是“阿拉伯劳伦斯”这个名字的阿拉伯语版本,我们想把这个名字写进PDF。在以下屏幕截图中执行三次:

第一行是错误的,因为字符顺序错误。它们是从左到右写的,而它们应该是从右到左写的。这就是当您执行以下操作时将发生的情况:

document.add(name1);
即使编码正确,也会错误地呈现文本

第二行也错了。字符现在的顺序正确,但没有连字:后跟字母的字母应组合成一个字形:字母

只有将内容添加到
ColumnText
PdfPCell
对象,并将运行方向设置为
PdfWriter.run\u direction\u RTL
才能实现这一点。例如:

pdfCell.setRunDirection(PdfWriter.RUN_DIRECTION_RTL);
现在,文本将正确呈现


我的书的第11章对此进行了解释。您可以在这里找到完整的示例:

但我假设此对象是一个使用标识作为编码的BaseFont对象。-你是个乐观主义者@Bruno Lowagie:我已经用英文创建了pdf,但是当我使用createfont类时,出现了一个错误,即由于许可限制,无法嵌入font.ttf。我如何解决这个错误?使用其他字体或获得嵌入字体的许可证。您应该始终尊重许可证。例如:如果你在一个封闭源代码项目中使用iText,你应该使用与iText相同的开源许可证来开源代码,或者购买商业许可证来使用iText。这就是我的意思。很高兴听到你解决了这个问题。@BrunoLowagie我想知道你对此的想法。。你能看看这个吗\