2017-03-16 5 views
0

Windowsでunicode(times new roman)フォントを使用すると、PdfTextFormFieldはすべての文字を正しく表示します。でもűőöüéなど しかし、私はオプション値で、コンボボックスフィールドを作成しようとすると: まず 第二 第三に、 はその後、PDFのオプションは次のようになります。 IRS 電子 HIR に私はデフォルトのフォントを使用する場合は、オプションの発送はOKですが、明らかにűööüé文字はゴミ箱です。 サンプルコード:itext 7.0.1 PdfChoiceFormField不足している文字

import com.itextpdf.io.font.PdfEncodings; 
import com.itextpdf.kernel.geom.Rectangle; 
import com.itextpdf.kernel.font.PdfFont; 
import com.itextpdf.kernel.font.PdfFontFactory; 
import com.itextpdf.kernel.pdf.PdfDocument; 
import com.itextpdf.kernel.pdf.PdfWriter; 
import com.itextpdf.forms.PdfAcroForm; 
import com.itextpdf.forms.fields.PdfChoiceFormField; 
import com.itextpdf.forms.fields.PdfTextFormField; 
import com.itextpdf.forms.fields.PdfFormField; 

public class ComboTest { 
    public static final String FONT = "c:/windows/fonts/times.ttf";  
    public static void main(String args[]) { 
     try { 
      PdfDocument pdfDoc = new PdfDocument(new PdfWriter("combobox.pdf")); 
      PdfFont font = PdfFontFactory.createFont(FONT, PdfEncodings.IDENTITY_H); 
      String[] values = {"First","Second","Third"}; 
      PdfTextFormField text = PdfFormField.createText(
       pdfDoc, 
       new Rectangle(72,200,108,26), 
       "text", 
       "Árvíztűrő tükörfúrógép", 
       font, 
       12.0f 
      ); 
      PdfChoiceFormField combo = PdfFormField.createComboBox(
       pdfDoc, 
       new Rectangle(36, 780, 108, 26), 
       "combo", 
       "Choose your poison", 
       values 
      ); 
      combo.setFontAndSize(font,12); 
      PdfAcroForm form = PdfAcroForm.getAcroForm(pdfDoc, true); 
      form.addField(combo); 
      form.addField(text); 
      pdfDoc.close(); 
     } catch(Exception ex) { 
      System.out.println(ex.toString()); 
     } 
    } 
} 

私の質問はなぜですか?

+0

これは本当にcuriouseです。私はそれを自分で試しました。デフォルトのオプションを "毒を選ぶ"から "二次"に変更すると、 "Second"が正しく表示されます。どのITextバージョンを使用していますか? – GAlexMES

+1

@GAlexMES 7.0.1、OPの質問タイトルに従って。 –

+1

@AmedeeVanGasseありがとう...:D – GAlexMES

答えて

0

mklと思われ、GAlexMESが答えを見つけました。 http://developers.itextpdf.com/content/best-itext-questions-stackoverview/font-examples/itext7-can-i-embed-font-only-partially

私がCP1252を選択し、すべてのフォントを埋め込むと、それは動作します。

PdfFont font = PdfFontFactory.createFont(FONT, PdfEncodings.CP1252); 
font.setSubset(false); 

同じことがunicodeフォントでは機能しません。 さらに、ttfの代わりにafmフォントを使用すると、pdfのサイズはもっと大きくなりますが、少なくとも読めるようになります。

ありがとうございました。

関連する問題