将itext pdf另存为blob,但不存在。

糯米沙玛

我正在使用此代码使用iText生成PDF。首先,它将HTML创建为PDF,然后将其转换为字节数组,BLOB或字节数组。我不想在服务器上创建pdf的任何物理存储。首先,我想使用itext将HTML转换为PDF的blob,然后,我要将那个blob存储在我的DB中(我将完成在DB中的存储)。

          String userAccessToken=requests.getSession()
                    .getAttribute("access_token").toString();
          Document document = new Document(PageSize.LETTER);
          String name="/pdf/invoice.pdf";
          PdfWriter pdfWriter = PdfWriter.getInstance
               (document, new FileOutputStream(requests.getSession().getServletContext().getRealPath("")+"/assets"+name));
          document.open();
          document.addAuthor("Real Gagnon");
          document.addCreator("Real's HowTo");
          document.addSubject("Thanks for your support");
          document.addTitle("Please read this ");
          XMLWorkerHelper worker = XMLWorkerHelper.getInstance();

          //data is an html string 
          String str = data;
          worker.parseXHtml(pdfWriter, document, new StringReader(str));
          document.close();
          ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
          PdfWriter.getInstance(document, byteArrayOutputStream);
          byte[] pdfBytes = byteArrayOutputStream.toByteArray();

          link=name;
          System.out.println("Byte array is "+pdfBytes);

问题:-使用itext将html转换为pdf BLOB,而没有PDF的物理存在。

布鲁诺·洛瓦吉(Bruno Lowagie)

这个问题的另一个答案几乎是正确的,但并不完全正确。

OutputStream创建时可以使用任意值PdfWriter如果要在内存中完全创建文件,可以使用ByteArrayOutputStream如下所示的文件:

ByteArrayOutputStream baos = new ByteArrayOutputStream();
Document document = new Document();
PdfWriter.getInstance(document, baos);
document.open();
// add stuff
document.close();
byte[] pdf = baos.toByteArray();

简而言之:首先创建一个ByteArrayOutputStream,将其传递OutputStream给,PdfWriter然后在关闭文档后,您可以从中获取字节OutputStream

(在另一个答案中,没有办法检索字节。另外:重要的是,不要在关闭文档之前尝试检索字节。)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章