2016-03-10 5 views
0

Если у нас есть строка с содержимым html-страницы, как ее можно преобразовать в InputStream, сделанный после преобразования этой строки в pdf-документ?Как преобразовать строку html в PDF InputStream?

Я пытаюсь использовать IText с XMLWorkerHelper, и это следующий код работает, но проблема в том, я не хочу, выход на файл. Я попробовал несколько вариантов, чтобы получить результат на InputStream, который я смог бы преобразовать в Primefaces StreamedContent, но не успел. Как мы можем это сделать?

Есть ли другой метод, который мы можем использовать для решения этой проблемы? Мотивацией для этого является использование xhtml-файлов, которые уже отображены и выводятся в виде pdf-файла, который будет загружен пользователем.

Document document = new Document(); 

PdfWriter writer = PdfWriter.getInstance(document, 

    new FileOutputStream("results/loremipsum.pdf")); 

document.open(); 

XMLWorkerHelper.getInstance().parseXHtml(writer, document, 

    new FileInputStream("/html/loremipsum.html")); 

document.close(); 

ответ

1

Если вам нужен InputStream, из которого какой-либо другой код может прочитать PDF ваш код производит, вы можете просто создать PDF с использованием выходного потока байт массива, а затем оберните байтовый массив из этого потока в массив байтов входной поток:

ByteArrayOutputStream baos = new ByteArrayOutputStream(); 

Document document = new Document(); 
PdfWriter writer = PdfWriter.getInstance(document, baos); 
document.open(); 
XMLWorkerHelper.getInstance().parseXHtml(writer, document, new FileInputStream("/html/loremipsum.html")); 
document.close(); 

ByteArrayInputStream pdfInputStream = new ByteArrayInputStream(baos.toByteArray()); 

Вы можете оптимизировать этот бит путем создания и обработки PDF в различных потоках и использовании PipedOutputStream и PipedInputStream вместо этого.

+0

Интересно, я попробую и вернусь. Спасибо – GarouDan

+0

Работал отлично. Большое спасибо. – GarouDan

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