具有双字节字符的按钮字段

时间:2015-03-12 17:22:36

标签: java itext

在Google上搜索以及stackoverflow,但没有看到这个问题出现在任何地方。我需要一个带双字节字符的按钮字段作为文本。有人知道这是否可行?

目前,如果我将按钮文本设置为任何双字节文本,则文本将不会显示。如果它只是在PDF的正文中,它就显示出来了。

编辑#1:双字节字符集(DBCS),如日语,俄语,荷兰语等。

编辑#2:

PushbuttonField myButton = new PushbuttonField(writer, rect, "myJapaneseButton"); 
myButton.setText("japanese text here");

1 个答案:

答案 0 :(得分:1)

请查看CreateJapaneseButton示例。它创建一个带有如下按钮的PDF:

enter image description here

您的代码段很短,但您可能拥有所需的所有代码,但设置字体的行除外:

public static final String JAPANESE = "\u3042\u304d\u3089";
public static final String FONT = "resources/fonts/FreeSans.ttf";

public void createPdf(String dest) throws IOException, DocumentException {
    Document document = new Document();
    PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(dest));
    document.open();
    PushbuttonField button = new PushbuttonField(writer, new Rectangle(36, 780, 144, 806), "japanese");
    BaseFont bf = BaseFont.createFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
    button.setFont(bf);
    button.setText(JAPANESE);
    writer.addAnnotation(button.getField());
    document.close();
}

如果未设置字体,则使用默认字体。默认字体是标准类型1字体Helvetica。这个字体不懂日文怎么写。我使用了字体freesans.ttf。如果您没有该字体,可以尝试arialuni.ttf或任何其他支持日语的字体。