我正在使用Apache PDFBox java库来创建PDF。但是,我在渲染多行文本(换行)时遇到问题:
//Creating PDF document object
PDDocument doc = new PDDocument();
//Adding the blank page to the document
doc.addPage( new PDPage() );
PDPage page = doc.getPage(0);
PDImageXObject pdImage = PDImageXObject.createFromFile("C:\Users\abc\Desktop\abc.png", doc);
PDPageContentStream contentStream = new PDPageContentStream(doc, page);
contentStream.drawImage(pdImage, 10, 720);
//Begin the Content stream
contentStream.beginText();
contentStream.newLineAtOffset(50, 735);
//Setting the font to the Content stream
contentStream.setFont( PDType1Font.TIMES_ROMAN, 16 );
contentStream. showText("ABC Management System");
//Setting the leading
//contentStream.setLeading(14.5f);
//Setting the position for the line
contentStream.newLineAtOffset(25, 600);
String text1 = "This is an example of adding text to a page in the pdf document we can add as many lines";
String text2 = "as we want like this using the ShowText() method of the ContentStream class";
//Adding text in the form of string
contentStream. showText(text1);
contentStream.newLine();
contentStream. showText(text2);
//Ending the content stream
contentStream.endText();
System.out.println("Content added");
//Closing the content stream
contentStream.close();
//Saving the document
doc.save("my_doc.pdf");
System.out.println("PDF created");
//Closing the document
doc.close();
我正在解决的问题是文本的后半部分(text1,text2)没有在PDF文件中呈现。pdf 中仅显示图像和第一行ABC Management System
。
为了生成多行文本,我参考了:PDFBox - 添加多行。
我不明白setLeading
做什么,因此将其注释掉并重试,但文本仍未呈现。
newLineAtOffset()
相对于当前文本位置。要从 0 重新启动,最简单的方法是结束当前文本并启动新的文本块。您当前的代码将您置于 y 1335(或略低,具体取决于前导)。