Como criar um documento PDF a partir dos idiomas do conjunto de caracteres Unicode relacionados ao uso de fontes de terceiros
Estou a usar PDFBox e iText para criar um documento pdf simples (apenas parágrafos) de vários idiomas. Algo como
pdfBox:
private static void createPdfBoxDocument(File from, File to) {
PDDocument document = null;
try {
document = new TextToPDF().createPDFFromText(new FileReader(from));
document.save(new FileOutputStream(to));
} finally {
if (document != null)
document.close();
}
}
private void createPdfBoxDoc() throws IOException, FileNotFoundException, COSVisitorException {
PDDocument document = new PDDocument();
PDPage page = new PDPage();
document.addPage(page);
PDPageContentStream contentStream = new PDPageContentStream(document, page);
PDType1Font font = PDType1Font.TIMES_ROMAN;
contentStream.setFont(font, 12);
contentStream.beginText();
contentStream.moveTextPositionByAmount(100, 400);
contentStream.drawString("š");
contentStream.endText();
contentStream.close();
document.save("test.pdf");
document.close();
}
itext:
private static Font blackFont = new Font(Font.FontFamily.COURIER, 12, Font.NORMAL, BaseColor.BLACK);
private static void createITextDocument(File from, File to) {
Document document = new Document();
PdfWriter.getInstance(document, new FileOutputStream(to));
document.open();
addContent(document, getParagraphs(from));
document.close();
}
private static void addContent(Document document, List<String> paragraphs) {
for (int i = 0; i < paragraphs.size(); i++) {
document.add(new Paragraph(paragraphs.get(i), blackFont));
}
}
Os arquivos de entrada são codificados em UTF-8 e alguns idiomas do conjunto de caracteres Unicode, como o alfabeto russo etc., não são renderizados corretamente em pdf. As fontes nas duas bibliotecas não suportam o conjunto de caracteres Unicode, suponho, e não consigo encontrar nenhuma documentação sobre como adicionar e usar fontes de terceiros. Alguém poderia me ajudar com um exemplo?