如何使用iText将ByteArrayInputStream内容放入PDF?

时间:2015-02-05 14:23:28

标签: java pdf pdf-generation itext bytearrayoutputstream

我有以下情况,我有一个方法:

ByteArrayInputStream fis = new ByteArrayInputStream(Bean.getValoreString("PDFmulti", "PDF").getBytes());

正如您所见 fis varialbe是 ByteArrayInputStream Bean.getValoreString(" PDFmulti"," PDF&#34 ;)。getBytes()返回 byte []

所以现在我需要使用iText将 fis 对象的内容放入PDF中。

我该怎么做?我认为我必须阅读此输入流并将其内容放入 ByteArrayOutputStream ,如下所示:

public static byte[] readFully(InputStream stream) throws IOException
{
    byte[] buffer = new byte[8192];
    ByteArrayOutputStream baos = new ByteArrayOutputStream();

    int bytesRead;
    while ((bytesRead = stream.read(buffer)) != -1)
    {
        baos.write(buffer, 0, bytesRead);
    }
    return baos.toByteArray();
}

但是呢?

1 个答案:

答案 0 :(得分:1)

在对上一个问题https://stackoverflow.com/questions/28342714/how-to-convert-a-string-object-representing-a-pdf-into-a-bytearrayinputstream-th的评论中,您说我必须连接所有PDF以创建单个PDF。

这是您在新问题中遗漏的重要信息。如果我阅读了您的新问题,就好像您希望以某种其他形式保留byte[]中存在的PDF。例如:您希望将其存储为文件。

如果是这种情况,那么您不需要iText!只需将字节写入FileOutputStream

但是,现在我知道您需要连接文件,我知道您需要多个PdfReader个实例,然后将这些PdfReader个实例与PdfCopy(或{{ 1}})用一系列不同的PDF创建单个PDF。

这是一个完全不同的问题!在这种情况下,为什么要创建PdfSmartCopy?有一个PdfReader contructor接受ByteArrayOutputStream作为参数。为什么不将InputStream传递给该构造函数?