中的依赖项。
我需要你的助手在object
组件中显示PDF文档的内容。目前PDF显示为空白。
bean代码为:
public void CreatePDF() throws IOException {
try{
Document doc = new Document(PageSize.A4, 50, 50, 50, 50);
OutputStream out = new ByteArrayOutputStream();
PdfWriter writer = PdfWriter.getInstance(doc, out);
doc.open();
PdfPTable table = new PdfPTable(1);
PdfPCell cell = new PdfPCell(new Phrase("First PDF"));
cell.setBorder(Rectangle.NO_BORDER);
cell.setRunDirection(PdfWriter.RUN_DIRECTION_LTR);
table.addCell(cell);
doc.add(table);
doc.close();
out.close();
InputStream in =new ByteArrayInputStream(((ByteArrayOutputStream)out).toByteArray());
streamedContent = new DefaultStreamedContent(in, "application/pdf");
Map<String, Object> session = FacesContext.getCurrentInstance().getExternalContext().getSessionMap();
byte[] b = (byte[]) session.get("reportBytes");
if (b != null) {
streamedContent = new DefaultStreamedContent(new ByteArrayInputStream(b), "application/pdf");
}
}
catch (Exception e) {
e.printStackTrace();
}
}
和jsf代码:
<p:commandButton value="Show PDF" actionListener="#{pdf.CreatePDF}" icon="ui-icon-disk" update=":request:testpdf" />
<p:media id="testpdf" value="#{pdf.streamedContent}" width="190" height="250" player="pdf"/>
现在我得到下面的错误:
[p>]] ServletException的根本原因。java.lang.NoClassDefFoundError:javax/el/ValueReferenceorg.primefaces.el.InterceptingResolver.getValue (InterceptingResolver.java: 51)在com.sun.el.parser.AstIdentifier。getValue(未知来源)atcom.sun.el.parser.AstValue。getValue(未知来源)atcom.sun.el.ValueExpressionImpl。getValue(未知来源)atcom.sun.faces.facelets.el.TagValueExpression.getValue (TagValueExpression.java: 109)在org.primefaces.el.ValueExpressionAnalyzer.intercept (ValueExpressionAnalyzer.java: 69)在org.primefaces.el.ValueExpressionAnalyzer.getExpression (ValueExpressionAnalyzer.java: 45)在org.primefaces.util.DynamicResourceBuilder.build (DynamicResourceBuilder.java: 49)在org.primefaces.component.media.MediaRenderer.getMediaSrc (MediaRenderer.java: 125)在org.primefaces.component.media.MediaRenderer.encodeEnd (MediaRenderer.java: 42)在javax.faces.component.UIComponentBase.encodeEnd (UIComponentBase.java: 884)
iText WAR文件保存在/lib文件夹下,它工作得很好。兼容的版本是iText 2.1.7,请参考文档