我要做的是在setFields()
方法之后立即在我正在编辑的当前pdf的末尾添加一个新页面。我用PdfReader
得到它并且从来没有Document对象所以我不确定如何做到这一点。以下是创建PDF的两种方法。
编辑:
经过进一步调查,我发现你可以插入一个带有stamper.insertPage的页面。但这似乎有点太难以做到我想要它。有没有办法将两个pdf与acrofields
合并在一起?通过合并我的意思是第一个pdf有2页,第二个pdf有1页并将它们放在一起,现在pdf有3页。
public static void createPdf(MyDocument document) {
try {
PdfReader pdfTemplate = initPdfReader();
if (pdfTemplate != null) {
OutputStream output = FacesContext.getCurrentInstance().getExternalContext().getResponseOutputStream();
PdfStamper stamper = new PdfStamper(pdfTemplate, output);
stamper.setFormFlattening(true);
AcroFields fields = stamper.getAcroFields();
setFields(document, fields, stamper);
stamper.close();
FacesContext.getCurrentInstance().responseComplete();
}
} catch (Exception e) {
BeanUtils.addMessage(new Message("An error has occurred while crating PDF.:" + ExceptionUtils.getStackTrace(e)));
LOG.error(e);
}
}
InitPdfReader()
public static PdfReader initPdfReader() throws Exception {
PdfReader pdfReader = null;
InputStream inStream = null;
try {
ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
ec.responseReset();
ec.setResponseContentType("pdf");
ec.setResponseHeader("Content-Disposition", "attachment; filename=\"" + "FileName" + "\"");
inStream = FacesContext.getCurrentInstance().getExternalContext().getResourceAsStream("/resources/documents/MyDocument.pdf");
pdfReader = new PdfReader(inStream);
pdfReader.close();
} finally {
if (inStream != null) {
inStream.close();
}
}
return pdfReader;
}