gpt4 book ai didi

java - 为什么 jlabel 中的阿拉伯语文本(jlabel 在 jpanel 中)不会出现在带有 jPanel.print (Graphics2D) 的 pdf 中?

转载 作者:行者123 更新时间:2023-12-01 20:00:28 26 4
gpt4 key购买 nike

为什么 jlabel 中的阿拉伯语文本(jlabel 在 jpanel 中)不会出现在带有 jPanel.print (Graphics2D) 的 pdf 中?法语文本显示得很好!请参阅图片以获取更多信息,谢谢:

public class PaneltopdfView extends FrameView {

private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JPanel jPanel1;
private javax.swing.JTextField jTextField1;

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
Desktop desktop = Desktop.getDesktop();
jTextField1.setBackground( jPanel1.getBackground());
// print the panel to pdf
Document document = new Document();
try {
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("test.pdf"));
document.open();
PdfContentByte contentByte = writer.getDirectContent();
PdfTemplate template = contentByte.createTemplate(500, 500);
Graphics2D g2 = template.createGraphics(500, 500);
jPanel1.print(g2);
g2.dispose();
contentByte.addTemplate(template, 30, 300);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (document.isOpen()) {
document.close();
} // TODO add your handling code here:
}
File file = new File("test.pdf");
if (file.exists()) {
try {
desktop.open(file);
} catch (IOException ex) {
// Logger.getLogger(CalculerAbsIndiv.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}

application file pdf

最佳答案

该问题可能是字体/编码问题。

  • 首先,并非每种字体都具有所有可能的字符。如果您选择一种字体(例如 Helvetica)并要求它生成阿拉伯文本,它将不起作用。

    显示的字符(实际像素信息)称为字形。我们与字符关联的代码(ASCII、unicode)是称为代码点。

    每当 iText 遇到一个代码点时所选字体中没有可用的字形信息,它将只需跳过该字符即可。如果您使用了错误的字体,您将从来没有看到任何字符。

  • 其次,如果您使用阿拉伯语,请考虑使用 iText7 和 pdfCalligraph。阿拉伯语(以及其他几种语言)具有所谓的开放式特征。或者,简单地说,他们需要的不仅仅是简单的“查找字形,在此处放置字形”。例如,阿拉伯语有复杂的规则来管理字形顺序和连字。

    pdfCalligraph 了解各种脚本的所有这些规则,并且无需您付出任何努力即可应用它们。

关于java - 为什么 jlabel 中的阿拉伯语文本(jlabel 在 jpanel 中)不会出现在带有 jPanel.print (Graphics2D) 的 pdf 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48078201/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com