В настоящее время у меня есть шаблон pdf (в указанном c месте), и я использую его со сгенерированным файлом pdf, который я сохраняю в том же месте, а затем объединяю с помощью PdfStamper. Затем я прикрепил недавно созданный PDF-файл к электронному письму. Я не хочу записывать PDF-файл на диск. В настоящее время я использую FileOutputStream:
PdfReader pdfTemplate = new PdfReader(getServletContext().getRealPath("/")+
"invoicepdf/manualSalesInvoiceTemplate.pdf");
FileOutputStream fileOutputStream = new FileOutputStream(getServletContext().getRealPath("/")+
"invoicepdf/manualSalesInvoice.pdf");
PdfStamper stamper = new PdfStamper(pdfTemplate, fileOutputStream);
stamper.setFormFlattening(true);
AcroFields form = stamper.getAcroFields();
, а затем
//add any file attachments to the message
String filename = getServletContext().getRealPath("/")+
"invoicepdf/manualSalesInvoice.pdf";
MimeBodyPart attachmentBodyPart = new MimeBodyPart();
//use a JAF FileDataSource as it does MIME type detection
DataSource source = new FileDataSource(filename);
attachmentBodyPart.setDataHandler(new DataHandler(source));
attachmentBodyPart.setFileName("Invoice" + i_invoiceID +
".pdf");
//add the attachment
multipart.addBodyPart(attachmentBodyPart);
Затем я отправляю сохраненный manualSalesInvoice.pdf по электронной почте, как показано, но мне нужно снова получить доступ к диску сервера, чтобы сделать это . Я надеялся, что смогу просто создать объект, или я могу использовать поток памяти, или временный файл (не уверен, нужно ли ему физическое расположение), или даже ByteArrayStream? ... Я хочу избежать чтения с диска.
Любые идеи приветствуются.
спасибо