首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring MVC pdf生成

Spring MVC pdf生成
EN

Stack Overflow用户
提问于 2011-11-13 14:12:26
回答 1查看 9.1K关注 0票数 3

我有一个基于Spring MVC的java web应用程序。任务是生成一个pdf文件。众所周知,spring引擎有自己的内置iText库,所以生成pdf文件非常简单。首先我们需要做的是重载AbstractView并创建一些PdfView。第二件事是在控制器中使用该视图。但在我的应用程序中,我还必须能够将生成的pdf文件存储在本地驱动器上,或者给我的用户一些链接来下载该文件。因此,这种情况下的视图不适合我。

我想创建一些通用的pdf生成器来创建pdf文件并返回字节数组。因此,我可以将该数组用于文件存储(在硬盘上)或直接在浏览器中打印它。问题是--有没有办法在PdfVIew解决方案中使用这样的引擎(只返回字节数组)?我之所以这样问,是因为重载的buildPdfDocument方法(在PdfView中)已经有了PdfWriter和Document参数。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-13 14:18:11

您应该能够使用视图并将其保存到文件中。

在重载AbstractPdfView时尝试使用Flying Saucer及其iTextRenderer。

代码语言:javascript
复制
import org.xhtmlrenderer.pdf.ITextRenderer;
public class MyAbstractView extends AbstractView {
   OutputStream os;

   public void buildPdfDocument(Map<String,Object> model, com.lowagie.text.Document document, com.lowagie.text.pdf.PdfWriter writer, HttpServletRequest request, HttpServletResponse response){
   //process model params
   os = new FileOutputStream(outputFile);
   ITextRenderer renderer = new ITextRenderer();
   String url = "http://www.mysite.com"; //set your sample url namespace here
   renderer.setDocument(document, url); //use the passed in document
   renderer.layout();
   renderer.createPDF(os);
   os.close();
   }
}

protected final void renderMergedOutputModel(Map<String,Object> model,
                                         HttpServletRequest request,
                                         HttpServletResponse response)
                                  throws Exception{
 if(os != null){
  response.outputStream = os;
 }

public byte[] getPDFAsBytes(){
  if(os != null){
     byte[] stuff;
     os.write(stuff);
     return stuff;
  }
}

}

您可能需要对这里显示的示例实现进行调整,但这应该提供了一个基本要点。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8109986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档