iText 5

How to create a pushbuttonfield with double byte character text?

I need a pushbuttonfield with double byte characters (DBCS) as the 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");

But if I replace "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:

https://itextpdf.com/sites/default/files/S05uL.png

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.