我有以下情况,我有一个方法:
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();
}
但是呢?
答案 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
传递给该构造函数?