True type PDFont subclass only supports WinAnsiEncoding (hardcoded!)
--------------------------------------------------------------------
Key: PDFBOX-922
URL: https://issues.apache.org/jira/browse/PDFBOX-922
Project: PDFBox
Issue Type: New Feature
Components: FontBox, PDModel, Writing
Affects Versions: 1.3.1
Environment: JDK 1.6 / OS irrelevant, tried against 1.3.1 and 1.2.0
Reporter: Thanos Agelatos
PDFBox cannot embed Identity-H or Identity-V type TTF fonts in the PDF it
creates, making it impossible to create PDFs in any language apart from English
and ones supported in WinAnsiEncoding. This behaviour is caused because method
PDTrueTypeFont.loadTTF has hardcoded WinAnsiEncoding inside, and there is no
Identity-H or Identity-V Encoding classes provided (to set afterwards via
PDFont.setFont() )
This excludes the following languages plus many others:
- Greek
- Bulgarian
- Swedish
- Baltic languages
- Malteze
The PDF created contains garbled characters and/or squares.
Simple test case:
PDDocument doc = null;
try {
doc = new PDDocument();
PDPage page = new PDPage();
doc.addPage(page);
// extract fonts for fields
byte[] arialNorm = extractFont("arial.ttf");
//byte[] arialBold = extractFont("arialbd.ttf");
//PDFont font = PDType1Font.HELVETICA;
PDFont font = PDTrueTypeFont.loadTTF(doc, new
ByteArrayInputStream(arialNorm));
PDPageContentStream contentStream = new
PDPageContentStream(doc, page);
contentStream.beginText();
contentStream.setFont(font, 12);
contentStream.moveTextPositionByAmount(100, 700);
contentStream.drawString("Hello world from PDFBox
ελληνικά"); // text here may appear garbled; insert any text in Greek or
Bulgarian or Malteze
contentStream.endText();
contentStream.close();
doc.save("pdfbox.pdf");
System.out.println(" created!");
} catch (Exception ioe) {
ioe.printStackTrace();
} finally {
if (doc != null) {
try { doc.close(); } catch (Exception e) {}
}
}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.