2016-09-15 57 views
0

我試過填寫pdf表格。我有模板並填寫我的數據。如何爲PDF格式的佔位符插入值時設置iText的編碼?

PdfReader reader = new PdfReader(src); 
     FontFactory.register(BaseFont.IDENTITY_H); 
     PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest)); 
     AcroFields form = stamper.getAcroFields(); 
     String[] split = reportDTO.note.split("\\n"); 
     form.setField("field1", "Значение");//value is some text in UTF-8 

但我的價值沒有插入field1 palceholder。它是空的。但如果以英文爲例

form.setField("field1", "some text"); 

本文插入sucsessuful。

如何在普通視圖中設置插入文本的編碼?

+0

我認爲pdf文件字體存在問題。也許你應該使用方法** addSubstitutionFont **在** form **變量上添加正確的字體:'form.addSubstitutionFont(/ *這裏是你的字體爲UTF-8或Cp1251編碼* /)' –

+0

什麼是意圖'FontFactory.register(BaseFont.IDENTITY_H)'?註冊方法記錄爲*註冊ttf-或ttc文件*,但「BaseFont.IDENTITY_H」是一個編碼名稱。 – mkl

回答

0

解決方案之一:

其中包含的Unicode(使用)

2)創建與編碼字體中所有符號

1)下載字體(CP1251,CP1250,UTF8等)

3 )比你應該在表單變量上使用AcroFields的addSubstitutionFont方法添加字體。

public static final String **FONT = "resources/fonts/ARIALUNI.TTF";** 

    somemethod(){ 
    **Font font = FontFactory.getFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);** 
    BaseFont baseFont = font.getBaseFont(); 

    PdfStamper stamper = null; 
    try { 
     stamper = new PdfStamper(reader, new FileOutputStream(fileDestination)); 
     AcroFields form = stamper.getAcroFields(); 
     form.addSubstitutionFont(baseFont); 
     form.setField("field1", "Значение"); 
    ... // other fields, catch etc 
    } 
相關問題