我在JAVA中使用iText动态生成PDF。 Bean属性:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
Document document = new Document(PageSize.LETTER);
pdfWriter = PdfWriter.getInstance(document, baos);
//iText code here
ByteArrayInputStream stream = new ByteArrayInputStream(baos.toByteArray());
StreamedContent file = new DefaultStreamedContent(stream,"application/pdf","Sds.pdf");
因此,bean属性返回StreamedContent类型的此文件变量。当我使用标签时,它就像一个魅力。但是,当我使用媒体对象时如下:
<p:media player="pdf" height="500" width="400" value="#{beanName.beanProperty}"></p:media>
我收到提示“文件不以%pdf-开头”,并在控制台中显示
"org.primefaces.application.PrimeResourceHandler handleResourceRequest
SEVERE: Error in streaming dynamic resource. Expression cannot be null"
我也尝试过使用iframe,但没有运气。基本上,我试图在一个网页上嵌入一个框架,一旦页面加载,我可以自动加载我生成的动态PDF。静态URL工作但动态内容不起作用!我尝试了各种解决方案。 Primefaces downloadLink可以使用,但是Primefaces media不能。顺便说一句,我试图在IE9中实现这一点。 (它也不适用于Chrome)。 我真的很感激任何帮助。谢谢!