Cannot figure out how to use PDFBox

一个人想着一个人 提交于 2019-12-01 00:02:46

问题


I am trying to create a PDF file with a lot of text boxes in the document and textfields from another class. I am using PDFBox.

OK, creating a new file is easy and writing one line of text is easy. Now, when I am trying to insert the next text line or textfield, it overwrites the content.

    PDDocument doc = null;
    PDPage page = null;

       try{
           doc = new PDDocument();
           page = new PDPage();

           doc.addPage(page);
           PDFont font = PDType1Font.HELVETICA_BOLD;

           PDPageContentStream title = new PDPageContentStream(doc, page);
           title.beginText();
           title.setFont( font, 14 );
           title.moveTextPositionByAmount( 230, 720 );
           title.drawString("DISPATCH SUMMARY");
           title.endText();
           title.close();

           PDPageContentStream title1 = new PDPageContentStream(doc, page);
           title1.beginText();
           title1.setFont( font, 11 );
           title1.moveTextPositionByAmount( 30, 620 );
           title1.drawString("DEPARTURE");
           title1.endText();
           title1.close();


           doc.save("PDFWithText.pdf");
           doc.close();
    } catch (Exception e){
        System.out.println(e);
    }

It does give me an error: "You are overwriting an existing content, you should use the append mode".

So I am trying title1.appendRawCommands(String), but it is not working.

How would I add new text boxes and textfields (from another class)? I have read tens of tutorials on Internet, but they only show creating one line.


回答1:


PDPageContentStream title1 = new PDPageContentStream(doc, page, true, true);

OP posted this as the answer, so this will flag to the system that there was an answer

Furthermore, if the first content stream contains operations substantially changing the graphics state, e.g. by changing the current transformation matrix, and one wants the new content stream to start with these changes reverted, one should use the constructor with three boolean parameters:

PDPageContentStream title1 = new PDPageContentStream(doc, page, true, true, true);


来源:https://stackoverflow.com/questions/14657602/cannot-figure-out-how-to-use-pdfbox

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!