2015-02-05 168 views
0

我有以下的情况下,进入一个方法,我有:如何使用iText将ByteArrayInputStream内容放入PDF中?

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

正如你可以看到FIS varialbe是ByteArrayInputStream的Bean.getValoreString( “PDFmulti”, “PDF”)的getBytes。 ()所以现在我需要把FIS对象的内容转换成利用iText PDF文件返回的byte []

我该怎么做?我想,我要读此输入流并把它的内容为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

在对您之前的问题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(或PdfSmartCopy)创建一个单一的PDF了一系列不同的PDF文件。

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