2017-03-16 1 views
0

itext 7 Windows에서 유니 코드 (times new roman) 글꼴을 사용하면 PdfTextFormField가 모든 문자를 올바르게 표시합니다. 심지어 űőöüé 등 하지만 옵션 값으로, 콤보 상자 필드를 만들려고 할 때 : 먼저 둘째 셋째, 다음 PDF의 옵션이 될 것입니다 : 국세청 전자 HIR 내가 기본 글꼴을 사용하는 경우 에, 옵션 dispay는 괜찮지 만 분명히 űőöüé 문자는 쓰레기입니다. 샘플 코드 :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입니다. 나는 그것을 스스로 시도했다. 기본 옵션을 "Choose poison"에서 "Second"로 변경하면 "Second"가 올바르게 표시됩니다. 어떤 IText 버전을 사용합니까? – GAlexMES

+1

@GAlexMES 7.0.1, OP의 질문 제목에 따라. –

+1

@AmedeeVanGasse thanks ... : 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); 

동일한 코드는 유니 코드 글꼴에서 작동하지 않습니다. 또한, ttf 대신 afm 글꼴을 사용하면 pdf 크기가 훨씬 커지지 만 읽을 수는 있습니다.

감사합니다.