当前位置: 首页 > 知识库问答 >
问题:

无法在PDF-PDFBox Java中保存阿拉伯语单词

徐鑫鹏
2023-03-14

试图将阿拉伯语单词保存在可编辑的PDF中。它在英语单词中都很好用,但当我使用阿拉伯语单词时,我得到了一个例外:

public static void main(String[] args) throws IOException
{
  String formTemplate = "myFormPdf.pdf";
  try (PDDocument pdfDocument = PDDocument.load(new File(formTemplate)))
  {
    PDAcroForm acroForm = pdfDocument.getDocumentCatalog().getAcroForm();
    if (acroForm != null)
    {
        PDTextField field = (PDTextField) acroForm.getField( "sampleField" );
        field.setValue("جملة");
    }
    pdfDocument.save("updatedPdf.pdf"); 
  }
}

共有1个答案

魏煜祺
2023-03-14

这就是我如何使它工作,我希望它能帮助别人。只需使用要在PDF中使用的语言支持的字体。

public static void main(String[] args) throws IOException
{
  String formTemplate = "myFormPdf.pdf";

  try (PDDocument pdfDocument = PDDocument.load(new File(formTemplate)))
  {
    PDAcroForm acroForm = pdfDocument.getDocumentCatalog().getAcroForm();
    // you can read ttf from resources as well, this is just for testing 
    PDFont font = PDType0Font.load(pdfDocument,new File("/path/to/font.ttf"));
    String fontName = acroForm.getDefaultResources().add(pdfont).getName();
    if (acroForm != null)
    {
        PDTextField field = (PDTextField) acroForm.getField( "sampleField" );
        field.setDefaultAppearance("/"+fontName +" 0 Tf 0 g");
        field.setValue("جملة");
    }

    pdfDocument.save("updatedPdf.pdf"); 
  }
}

编辑:添加mkl注释字体名称和字体大小是Tf指令的参数,黑色的灰度值0是g指令的参数。参数和指令名必须适当分开。

 类似资料:
  • 问题内容: 尝试将 阿拉伯 文字保存在可编辑的PDF中。它对 英语语言来说 都可以正常工作,但是当我使用阿拉伯语单词时,出现了这个异常: java.lang.IllegalArgumentException:U + 0627在此字体Helvetica编码中不可用:WinAnsiEncoding 这是我生成PDF的方式: 问题答案: 这就是我的工作方式,希望对其他人有所帮助。只需使用要在PDF中使用

  • 问题内容: 我已经更改了表和列的字符集,我得到的阿拉伯文本为???? MYSQL数据库中的标记 这是桌子的设计 当我再次触发选择查询时,它显示???? 作为文字? 谁能告诉我我在哪里做错了? 问题答案: 手动将阿拉伯数据插入您的Phpmyadmin。 首先,您检查数据库,表和列名称是否设置为utf8。如果未将这些设置为utf8,则首先进行设置,然后可以将阿拉伯数据插入到db表中。 对于数据库: 对

  • 我有一个关于阿拉伯语编码和将阿拉伯语存储到mysql的问题。 我应用了以下所有步骤: set-MySQL字符集:UTF-8 Unicode(utf8) 设置MySQL连接排序规则:utf8\u常规\u ci 集合数据库和表排序规则设置为:utf8\U general\U ci或utf8\U unicode\U ci mysql_查询(“设置名称‘utf8’”); mysql_查询('SET CHA

  • 在过去的几个小时里,我一直在试图找到一个解决方案,但无法做到。我在互联网和这个论坛上尝试了每一种可能的解决方案,但似乎没有任何效果。问题就在这里。 我想存储阿拉伯数据,用户将在mysql数据库中的表单文本区域中键入或粘贴。该网站是阿拉伯文,表格只包含这一个文本区域。 要点: 该网站正在正确显示静态阿拉伯语内容。整个网站都使用utf8字符集。所以这不是问题。 表(home)和内容字段(Content

  • 问题内容: 我有一个包含JTextField的表单,其中一些特定于法语,另一些特定于阿拉伯语。我想从一种语言切换到另一种而不按Alt + Shift键。解决方案的任何帮助将不胜感激。谢谢, 问题答案: 感谢aymeric的回答,但我找到了解决问题的方法,这是我解决问题的方法:

  • 问题内容: 我有一个要排序的阿拉伯语单词列表。我曾尝试使用不同的语言环境(例如英语或法语,但希望不高)使用标准的Collat​​or,甚至创建了自己的RuleBasedCollat​​or,但无济于事。显然,默认排序依赖于unicode值顺序,该顺序在许多情况下都有效,但显然不适用于此顺序。 按照javadocs的说明,RuleBasedCollat​​or需要一个字符串,该字符串以您希望它们排序