我一直在使用PDFBOX和EasyTable,它扩展了PDFBOX以绘制数据表。我遇到一个问题,即我有一个带有HTML数据字符串的Java对象,需要使用PDFBOX将其添加到PDF。仔细阅读文档似乎没有取得任何成果。
下面的代码是一个片段问候世界,我希望在pdf上生成具有H1格式的代码。
// Create a document and add a page to it
PDDocument document = new PDDocument();
PDPage page = new PDPage();
document.addPage( page );
// Create a new font object selecting one of the PDF base fonts
PDFont font = PDType1Font.HELVETICA_BOLD;
// Start a new content stream which will "hold" the to be created content
PDPageContentStream contentStream = new PDPageContentStream(document, page);
// Define a text content stream using the selected font, moving the cursor and drawing the text "Hello World"
contentStream.beginText();
contentStream.setFont( font, 12 );
contentStream.moveTextPositionByAmount( 100, 700 );
contentStream.drawString( "<h1>HelloWorld</h1>" );
contentStream.endText();
// Make sure that the content stream is closed:
contentStream.close();
// Save the results and ensure that the document is properly closed:
document.save( "Hello World.pdf");
document.close();
}
PDFBox不知道HTML,至少不了解内容。
因此,您必须自己解析HTML并从文本标记所在的文本中派生特殊的文本绘制特征。
E.g。当遇到"<h1>HelloWorld</h1>"
时,您必须提取文本"HelloWorld"
并使用h1
标记中的信息来选择适当的主要标头字体和字体大小以绘制"HelloWorld"
。