我想用iText7將內容添加到現有的PDF中。我已經能夠創建新的PDF並使用段落和表格添加內容給他們。但是,一旦我重新打開我創建的PDF並嘗試向其中寫入更多內容,新內容將開始覆蓋舊內容。我希望新內容在舊內容之後附加到文檔中。我怎樣才能做到這一點?使用iText7和Java生成PDF
編輯
這是設置將與做一個PDF文檔的每個變化來執行一些常用的方法類。
public class PDFParent {
private static Document document;
private static PdfWriter writer;
private static PdfReader reader;
private static PageSize ps;
private static PdfDocument pdfDoc;
public static Document getDocument() {
return document;
}
public static void setDocument(Document document) {
PDFParent.document = document;
}
public static void setupPdf(byte[] inParamInPDFBinary){
writer = new PdfWriter(new ByteArrayOutputStream());
try {
reader = new PdfReader(new ByteArrayInputStream(inParamInPDFBinary));
} catch (IOException e) {
e.printStackTrace();
}
pdfDoc = new PdfDocument(reader, writer);
ps = PageSize.A4;
document = new Document(pdfDoc, ps);
}
public static byte[] writePdf(){
ByteArrayOutputStream stream = (ByteArrayOutputStream) writer.getOutputStream();
return stream.toByteArray();
}
public static void closePdf(){
pdfDoc.close();
}
這是怎麼了添加內容到PDF
public class ActAddParagraphToPDF extends PDFParent{
// output parameters
public static byte[] outParamOutPDFBinary;
public static ActAddParagraphToPDF mosAddParagraphToPDF(byte[] inParamInPDFBinary, String inParamParagraph) throws IOException {
ActAddParagraphToPDF result = new ActAddParagraphToPDF();
setupPdf(inParamInPDFBinary);
//---------------------begin content-------------------//
getDocument().add((Paragraph) new Paragraph(inParamParagraph));
//---------------------end content-------------------//
closePdf();
outParamOutPDFBinary = writePdf();
return result;
}
當我去執行這個第二類,這似乎是治療原文件,就好像它是空白。然後將新的段落寫在原始內容的頂部。我知道我錯過了一些東西,只是不確定那是什麼。
你試過了什麼(顯示關鍵代碼),究竟是如何失敗(覆蓋第一個現有頁面或最後一個頁面上的內容)? – mkl
@mkl我用你的建議編輯了我的問題 – hubertw