itext处理pdf文件非常灵活,现在把写入在adobe reader中打开pdf文件后在左侧附件栏中可以看到的附件:
public byte[] addAttachmentForItext(byte[] pdf, Map<String, byte[]> attachMap) throws IOException,
DocumentException {
ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
PdfReader reader = new PdfReader(pdf);
PdfStamper stamper = null;
try {
stamper = new PdfStamper(reader, byteOut);
// PdfFileSpecification pfs =
// PdfFileSpecification.fileEmbedded(stamper.getWriter(),
// "C:\\Users\\chentao\\Desktop\\filetrace.XML", "test", null);
// stamper.addFileAttachment(null, pfs);
for (Entry<String, byte[]> attach : attachMap.entrySet()) {
//方法参数依次为:附件描述,附件流,附件文件(流和文件传一个就可以),附件名称
stamper.addFileAttachment(attach.getKey(), attach.getValue(), null, attach.getKey());
}
}
return byteOut.toByteArray();
}
当然,可以写可见附件,肯定可以写隐藏的文件,就是往pdf里面藏东西。