我需要使用 iText 创建一些简单但符合 PDF/A-1b 的 PDF 文件。
我的第一种方法如下所示:
Document document = new Document(Pagesize.A4);
ByteArrayOutputStream pdfBuffer = new ByteArrayOutputStream);
PdfAWriter pdfAWriter
= PdfAWriter.geInstance (document, pdfBuffer, PdfAConformanceLevel.PDFA_1B);
pdfAWriter.createXmpMetadata();
Font fixedFont = FontFactory.getFont("Courier New", BaseFont.CP1252, BaseFont.EMBEDDED, 10, Font.NORMAL);
document.open();
Chunk chunk = new Chunk("Hello World", fixedFont);
Paragraph paragraph = new Paragraph(chunk);
document.add(paragraph);
document.close();
// this is pseudo code to transfer the Buffer to a real file
writeByteArrayToFile(pdfBuffer.toByteArray());
Thos 代码生成错误消息:
必须嵌入所有字体。这不是:Helvetica
环顾四周,我发现 Helvetica 是 iTextn 的默认文档字体,无法更改,这是默认情况下不嵌入的基本 PDF 字体,只有当我有 Helvetica pfb 或 ttf 文件时才能嵌入它(我没有也不想购买,因为我根本不打算在我的文档中使用该字体)。
我的 PDF 中根本不需要任何 Helvetica 文本。我需要生成 PDF/A-1b,它需要嵌入所有字体,包括 PDF Base Fonts。
那么这是一个Bug吗?如果没有可用的 Helvetica 字体文件,使用 iText 生成 PDF/A 的正确方法是什么?