gpt4 book ai didi

java - Spring AbstractPdfView 在浏览器中显示已经创建的pdf

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:00:54 25 4
gpt4 key购买 nike

我已经创建了 2 个 pdf 文件。它们位于以下文件夹 WebContent/pdf/

我之前扩展了 Spring 的 AbstractPdfView 以动态制作 pdf。

这次我想用它来

1) 显示一个已经创建的 pdf 和2) 使用 itext 将模型对象传递给第二个 pdf 并填写已创建的 pdf 表单字段。

我知道 1) 我可以创建一个链接并直接访问 pdf。我试图通过扩展 AbstractPdfView 来访问它,因为我相信我需要在案例 2) 中使用它。

我只是不确定如何使用此类获取资源然后将其显示在浏览器中。

任何人都可以用示例告诉我如何完成此操作吗?

spring-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>

spring-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>

最佳答案

我认为您实际上可能想要子类化 AbstractPdfStamperView:

http://static.springsource.org/spring/docs/3.0.x/api/org/springframework/web/servlet/view/document/AbstractPdfStamperView.html

看起来您将 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

关于java - Spring AbstractPdfView 在浏览器中显示已经创建的pdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7028697/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com