Всем привет! Есть задача создать pdf с xml,исползую apache.Fop. Есть вопрос по получению pdf:
1) При FileOutputStream все ок,файл сохраняется в папке
2) При ByteArrayOutputStream получаю вот это
(Неизвестное расположение или ошибка)java.io.IOException: Stream closed
%PDF-1.4
%����
1 0 obj
<<
/Creator (Apache FOP Version 2.1)
/Producer (Apache FOP Version 2.1)
/CreationDate (D:20201110174444+06'00')
>>
endobj
2 0 obj
<<
/N 3
/Length 3 0 R
/Filter /FlateDecode
>>
stream
x���wTT��Ͻwz��0�z�mz��0�z�m�:��_���C�(��C .....
public byte[] convertToPDF() throws IOException, FOPException, TransformerException {
Test r = testRepo.findById(1L).orElseThrow(EntityExistsException::new);
FopFactory fopFactory = FopFactory.newInstance(new File(".").toURI());
// 1 OutputStream out = new FileOutputStream(OUTPUT_DIR + "//output.pdf");
// 2 ByteArrayOutputStream out = new ByteArrayOutputStream();
try {
Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, out);
TransformerFactory factory = TransformerFactory.newInstance();
StreamSource xslTsource = new StreamSource(new StringReader(r.getXsl()));
Transformer transformer = factory.newTransformer(xslTsource);
Result res = new SAXResult(fop.getDefaultHandler());
StreamSource xmlSource = new StreamSource(new StringReader(r.getXml()));
transformer.transform(xmlSource, res);
} finally {
out.close();
}
return out.toByteArray();
}