Как встроить стандартный шрифт в сгенерированный PDF с PDFBox - PullRequest
0 голосов
/ 17 декабря 2018

Мне нужно добавить текст в файлы PDF / A, используя библиотеку Apache PDFBox для Java.Проблема в том, что, поскольку это должен быть действительный файл PDF / A, все используемые шрифты должны быть встроены в него.Я знаю, что могу встраивать шрифт TTF с помощью PDFBox, но я бы не хотел предоставлять файл шрифта вместе с приложением, поэтому мне было интересно, есть ли способ встроить один из стандартных шрифтов, доступных в 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 голосов
/ 17 декабря 2018

В PDFBox встроен только один шрифт.Вы можете использовать это следующим образом:

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