Joa*_*les 1 pdf spring pdf-generation spring-mvc itext
我想从模板创建一个PDF(用PDF形式显示这里在Spring MVC),并输出到浏览器中使用AbstractPdfView,但我不知道如何获得一个Document从PdfStamper,或者如果我应该使用PdfWriter..任何想法?以下是我到目前为止的代码,谢谢
public class RecipePdf extends AbstractPdfView {
@Override
protected void buildPdfDocument(Map<String, Object> model, Document document,
PdfWriter pdfWriter, HttpServletRequest request, HttpServletResponse response)
throws Exception {
PdfReader pdfTemplate = new PdfReader ("/WEB-INF/template/recipe.pdf");
FileOutputStream fileOutputStream = new FileOutputStream("test.pdf");
PdfStamper stamper = new PdfStamper(pdfTemplate, fileOutputStream);
stamper.setFormFlattening(true);
stamper.getAcroFields().setField("number", "12345");
stamper.close();
pdfTemplate.close();
Run Code Online (Sandbox Code Playgroud)
小智 5
Spring的AbstractPdfStamperView和iText可用于使用预定义的模板生成PDF.
package com.pdf.view;
import java.util.Locale;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.context.MessageSource;
import org.springframework.context.MessageSourceAware;
import org.springframework.web.servlet.view.document.AbstractPdfStamperView;
import com.lowagie.text.pdf.PdfStamper;
public class PDFView extends AbstractPdfStamperView implements
MessageSourceAware {
private MessageSource messageSource;
@Override
public void setMessageSource(MessageSource messageSource) {
this.messageSource = messageSource;
}
@Override
protected void mergePdfDocument(Map<String, Object> model,
PdfStamper stamper, HttpServletRequest request,
HttpServletResponse response) throws Exception {
stamper.setFormFlattening(true);
String customerName = (String) model.get("customerName");
Locale locale = request.getLocale();
stamper.getAcroFields().setField("customerNameLabel",
messageSource.getMessage("label.customername", null, locale));
stamper.getAcroFields().setField("customerNameValue", customerName);
stamper.close();
}
}
Run Code Online (Sandbox Code Playgroud)
我使用了XMLViewResolver.下面是spring-servlet.xml中的条目:
<bean class="org.springframework.web.servlet.view.XmlViewResolver">
<property name="location">
<value>/WEB-INF/spring-pdf-views.xml</value>
</property>
</bean>
Run Code Online (Sandbox Code Playgroud)
以下是spring-pdf-views.xml的内容
<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.1.xsd">
<bean id="invoicePDF"
class="com.pdf.view.PDFView">
<property name="url" value = "/WEB-INF/resources/templates/invoiceTemplate.pdf" />
</bean>
</beans>
Run Code Online (Sandbox Code Playgroud)
下面是控制器代码中定义的方法,它将呈现视图.此处在ModelAndView中设置的视图名称与上面的spring-pdf-views.xml中定义的相同.
@RequestMapping(value = "/pdf",method = RequestMethod.POST)
public ModelAndView renderPDF(HttpServletRequest request,
HttpServletResponse response) throws Exception {
ModelAndView mav = new ModelAndView("invoicePDF");
mav.addObject("customerName", "XYZ");
return mav;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6270 次 |
| 最近记录: |