1

我有以下情况,变成我有的方法:

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

如您所见, fis varialbe 是一个ByteArrayInputStreamBean.getValoreString("PDFmulti", "PDF").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();
}

但是之后?

4

1 回答 1

1

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

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

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

但是,既然我知道您需要连接文件,我知道您需要多个PdfReader实例,然后将这些PdfReader实例与PdfCopy(或PdfSmartCopy)结合使用,从一系列不同的 PDF 中创建单个 PDF。

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

于 2015-02-05T14:40:03.317 回答