Apache PDFBox Java库 - 文本未呈现

时间:2017-10-31 07:31:46

标签: java apache pdf graphics pdfbox

我正在使用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文件中呈现。只有图像和第一行ABC Management System显示在pdf中。

为了生成多行文本,我提到了:PDFBox - Adding Multiple Lines

我不明白setLeading做了什么,因此对其进行了评论并再次尝试,但文字仍未呈现。

1 个答案:

答案 0 :(得分:1)

$boxes = Box::leftJoin('device', function($join) { $join->on('box.id', '=', 'device.box_id'); $join->whereRaw('device.deleted_at is null'); }) 与当前文字位置有关。要从0重新启动,最简单的方法是结束当前并启动新的文本块。您当前的代码将您置于y 1335(或稍低,取决于领先)。