How to create a pushbuttonfield with double byte character text?
Currently if I set the button text as any double byte text, the text won't show up.
This works:
PushbuttonField myButton = new PushbuttonField(writer, rect, "JapaneseButton"); myButton.setText("japanese text here");
"japanese text here"
with real Japanese text, the text doesn't show.
Posted on StackOverflow on Mar 12, 2015 by Jason
Please take a look at the CreateJapaneseButton example. It creates a PDF with a button that looks like this:
Button with Japanese text
Your code snippet is very short, but you probably have all the code you need, except the line that sets the font:
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();
}
If you don't set the font, the default font is used. The default font is the Standard Type 1 font Helvetica. This font doesn't know how to write Japanese. I used the font freesans.ttf
. If you don't have that font, you can try arialuni.ttf
or any other font that supports Japanese.