如何使用PDFBox将标准字体嵌入生成的PDF

时间:2018-12-17 16:09:58

标签: java pdfbox

我需要使用适用于Java的Apache PDFBox库向PDF / A文件中添加一些文本。问题在于,因为它必须是有效的PDF / A文件,所以所有使用的字体都必须嵌入其中。我知道我可以使用PDFBox嵌入TTF字体,但是我想避免在应用程序中提供字体文件,所以我想知道是否有一种方法可以在PDFBox中嵌入一种可用的标准字体,就好像它是外部的。

例如,当我使用一种标准字体编写内容时,PDF验证程序会抱怨:

enter image description here

我使用以下代码编写文本:

  PDFont standardFont = PDType1Font.HELVETICA_BOLD;

  PDPage pag = new PDPage();

  pag.setResources(new PDResources());

  PDPageContentStream contentStream = new PDPageContentStream(pdfFile, pag);

  //Begin the Content stream 
  contentStream.beginText();       

  //Setting the font to the Content stream  
  contentStream.setFont(standardFont, 12);

  //Setting the position for the line 
  contentStream.newLineAtOffset(25, 500);

  //Adding text in the form of string 
  contentStream.showText("JUST A SAMPLE STRING");      

  //Ending the content stream
  contentStream.endText();

  //Closing the content stream
  contentStream.close();

  pdfFile.addPage(pag);

  pdfFile.save(file);

  pdfFile.close();

在设置字体时是否有任何选项可以强制嵌入字体?

预先感谢

1 个答案:

答案 0 :(得分:1)

PDFBox中仅嵌入一种字体。您可以通过以下方式使用它:

PDFont font = PDType0Font.load(doc, SomePdfboxClass.class.getResourceAsStream(
                   "/org/apache/pdfbox/resources/ttf/LiberationSans-Regular.ttf"));