2015-02-05 2 views
0

Я такую ​​ситуацию, в метод у меня есть:Как разместить содержимое ByteArrayInputStream в PDF с помощью iText?

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

Как вы можете видеть ФИС varialbe является ByteArrayInputStream и Bean.getValoreString ("PDFmulti", "PDF") GetBytes.() возвращает байт []

Так что теперь мне нужно поместить содержимое объекта диез в PDF с использованием IText.

Что я могу сделать для этого? Я думаю, что я должен прочитать этот входной поток и поместить его содержимое в 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-файл.

Это важная информация, которую вы опускаете в своем новом вопросе. Если я прочитаю ваш новый вопрос, вы хотите сохранить PDF-файл, который существует в byte[] в другой форме. Например: вы хотите сохранить его как файл.

Если это так, то вам не нужен iText! Просто напишите байты на FileOutputStream!

Однако теперь, когда я знаю, что вам нужно конкатенация файлов, я знаю, что вам нужно несколько PdfReader экземпляров, а затем использовать эти PdfReader экземпляры в сочетании с PdfCopy (или PdfSmartCopy) для создания одного PDF из серии отличается PDF-файлы.

Это совершенно другой вопрос! В этом случае, почему вы создали ByteArrayOutputStream? Существует PdfReader contructor, который принимает параметр InputStream. Почему бы не пройти fis этому конструктору?

Смежные вопросы