亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法在 PDF 中保存阿拉伯語單詞 -

無法在 PDF 中保存阿拉伯語單詞 -

海綿寶寶撒 2022-09-14 15:59:11
嘗試將阿拉伯語單詞保存在可編輯的 PDF 中。它與英語一起工作得很好,但是當我使用阿拉伯語單詞時,我得到了這個例外:java.lang.非法參數例外: U+0627 在此字體中不可用 海爾維卡 編碼: 溫安西編碼以下是我如何生成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");   }}
查看完整描述

2 回答

?
白衣染霜花

TA貢獻1796條經驗 獲得超10個贊

這就是我如何使它工作,我希望它能幫助其他人。只需使用要在 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 指令的參數。參數和指令名稱必須適當分隔。


查看完整回答
反對 回復 2022-09-14
?
慕尼黑5688855

TA貢獻1848條經驗 獲得超2個贊

您需要一種支持這些阿拉伯符號的字體。
獲得兼容的字體后,您可以使用 PDType0 字體加載它

final PDFont font = PDType0Font.load(...);

字體是引用多種其他字體格式的字體,并且可能加載所有可用的符號。Type 0

另請參閱說明書 - 使用字體(沒有示例,但仍然有用)。Type 0


查看完整回答
反對 回復 2022-09-14
  • 2 回答
  • 0 關注
  • 106 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號