我已经创建了2个pdf文件。它们位于以下文件夹WebContent/pdf/
我之前已经扩展了Spring的AbstractPdfView来动态制作PDF格式。
这次我想用它来
1)显示已创建的pdf和 2)使用itext将模型对象传递给第二个pdf并填充已经创建的pdf表单字段。
我知道1)我可以创建一个链接并直接访问pdf。我试图通过扩展AbstractPdfView来访问它,因为我相信我需要在案例2中使用它。
我只是不确定如何获取资源,然后在此类的浏览器中显示它。
有人可以告诉我如何使用样本完成此操作吗?
弹簧PDF-views.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="BlankPDF" class="com.example.BlankPDF"/>
<bean id="PopulatedPDF" class="com.example.PopulatedPDF"/>
</beans>
弹簧servlet.xml中
<bean id="xmlViewResolver" class="org.springframework.web.servlet.view.XmlViewResolver">
<property name="order" value="1"/>
<property name="location">
<value>/WEB-INF/spring-pdf-views.xml</value>
</property>
</bean>
答案 0 :(得分:3)
我认为您可能实际上想要继承AbstractPdfStamperView:
看起来您将AbstractPdfStamperView子类的“url”属性设置为现有PDF文件的路径:
<!-- PopulatedPDF extends AbstractPdfStamperView -->
<bean id="PopulatedPdf class="com.example.PopulatedPdf">
<property name="url" value="/WEB-INF/pdfs/blankform.pdf" />
</bean>
然后你需要覆盖mergePdfDocument():
@Override
protected void mergePdfDocument(Map<String,Object> model,
com.lowagie.text.pdf.PdfStamper stamper,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
// follow example code for filling out a form using iText:
// http://itextpdf.com/examples/iia.php?id=122
AcroFields form = stamper.getAcroFields();
// form.setField("fieldName", model.get("fieldName"));
}
您可能希望查看iText PdfStamper文档以了解您的所有选项。
http://api.itextpdf.com/itext/index.html?com/itextpdf/text/pdf/PdfStamper.html