`
king520
  • 浏览: 181194 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
文章分类
社区版块
存档分类
最新评论

freemark与flying saucer生成PDF

 
阅读更多

freemark与flying saucer生成PDF

1.导入flying saucer与freemark的包。

2.利用freemark生成html文件。

3.利用flying saucer进行pdf文件的生成。

具体方案:

参考javaeye中的大牛文章:

http://www.iteye.com/topic/509417

参考方法:

public String generateHtml() throws IOException, Exception {
		String meetingId = getRequest().getParameter("meetingId");
		// TODO 生成HTML
		// 得到配置对象
		Configuration configuration = new Configuration();
		configuration.setDefaultEncoding("utf-8");
		configuration.setOutputEncoding("utf-8");
		// 设置生成模板加载方式(由servletcontext生成)
		configuration.setServletContextForTemplateLoading(
				ServletActionContext.getServletContext(), "WEB-INF/ftl");
		// 生成数据模型
		Map<Object, Object> root = new HashMap<Object, Object>();
		// 把信息带回
		getNeedMeetingInfo(root, meetingId);
		// 得到模板
		Template template = configuration.getTemplate("meeting.ftl");
		// 创建文件夹
		String uploadFoldPathStr = fileSystemService.getDocumentRoot()
				+ "download" + File.separator + "pdf" + File.separator
				+ this.HTML_FOLD_SUFIX + meetingId;
		File uploadFoldPath = new File(uploadFoldPathStr);
		if (!uploadFoldPath.exists()) {
			uploadFoldPath.mkdirs();
		}
		// 文件保存名
		Date dt = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
		String fileSaveName = sdf.format(dt) + ".html";
		File afile = new File(uploadFoldPathStr + File.separator + fileSaveName);
		Writer out = new BufferedWriter(new OutputStreamWriter(
				new FileOutputStream(afile), "utf-8"));

		try {
			// 输出模板
			// template.process(root, this.getResponse().getWriter());
			template.process(root, out);
		} catch (TemplateException e) {
			e.printStackTrace();
		}

		// TODO生成PDF
		String inputFile = uploadFoldPathStr + File.separator + fileSaveName;
		String url = new File(inputFile).toURI().toURL().toString();

		// 生成PDF路径
		String generatorFilePath = fileSystemService.getDocumentRoot()
				+ "download" + File.separator + "pdf" + File.separator
				+ this.PDF_FOLD_SUFIX + meetingId;
		File generatorFoldPath = new File(generatorFilePath);
		if (!generatorFoldPath.exists()) {
			generatorFoldPath.mkdirs();
		}
		
		fileSaveName= sdf.format(dt)+ ".pdf";
		String outputFile = generatorFilePath + File.separator +fileSaveName;
		
		OutputStream os = new FileOutputStream(outputFile);
		ITextRenderer renderer = new ITextRenderer();
		renderer.setDocument(url);
		// 解决中文支持问题
		ITextFontResolver fontResolver = renderer.getFontResolver();
		fontResolver.addFont("C:/Windows/Fonts/simsun.ttc",
				BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);

		// 解决图片的相对路径问题
		renderer.getSharedContext()
				.setBaseURL(
						"file:/D:/Work/Demo2do/Yoda/branch/Yoda%20-%20All/conf/template/");
		renderer.layout();
		renderer.createPDF(os);
		os.close();
		
		
		// 现在开始进行下载操作
		MeetingFiles meetingFiles = new MeetingFiles();
		meetingFiles.setFilePath("download" + File.separator + "pdf" + File.separator
				+ this.PDF_FOLD_SUFIX+ meetingId);
		meetingFiles.setFileName(fileSaveName);
		meetingFiles.setFileSaveName(fileSaveName);
		this.getRequest().setAttribute("meetingFiles", meetingFiles);
		
		String from = "WEB";
		String documentRoot = fileSystemService.getDocumentRoot();
		getRequest().setAttribute("documentRoot", documentRoot);
		getRequest().setAttribute("from", from);
		

		return SUCCESS;
	}


分享到:
评论

相关推荐

    基于iText和flying saucer结合freemark生成pdf 范例

    基于iText和flying saucer结合freemark生成pdf 范例 1. 使用maven构建,不含jar包,可以自行使用maven下载依赖包, 2. 使用前需要将C:/Windows/Fonts/ARIALUNI.TTF 复制到doc-render/src/test/resources/config/fonts...

    SpringBoot集成Freemarker+FlyingSaucer实现pdf在线预览.pdf

    二、FlyingSaucer PDF生成 FlyingSaucer是一个基于IText的PDF生成工具,可以将HTML文档转换为PDF文档。在本方案中,FlyingSaucer用于将生成的HTML模板转换为PDF文档。FlyingSaucer支持中文字符的正确显示,且可以...

    flying-saucer-pdf-9.0.3.jar

    基于iText 和 flying saucer结合freemark java 生成 pdf

    Flying-Saucer使用HTML或者FTL(Freemarker模板)生成PDF

    Flying-Saucer通过html生成pdf。。。项目中已经附带了jar包,放到项目中就可以运行了。亲测了,解决了中文不显示或者样式的问题,感觉蛮实用的。网上找了很久和下载其他资源用了好多积分,如果有需要的就下载吧!!...

    Flying Saucer 支持中文宋体win,Linux,直接使用

    Flying Saucer 支持中文宋体win,Linux; Css 页面字体修改为 font-family:STSong; 就可以了,具体

    flying-saucer-core-9.0.3.jar

    基于iText 和 flying saucer 结合 freemark java 生成 pdf

    通过freemarker模板 生成PDF

    在IT行业中,生成PDF文件是一项常见的任务,尤其在报表、文档和发票的自动化处理中。本主题将深入探讨如何利用Freemarker模板和wkhtmltox工具来实现这一功能。 **Freemarker模板** 是一个强大的Java模板引擎,用于...

    Java中使用 FreeMarker 生成pdf盖章合同文件

    生成PDF文件通常需要额外的库,比如Flying Saucer。这个库可以将HTML转换为PDF。添加Flying Saucer的依赖: ```xml &lt;groupId&gt;org.xhtmlrenderer &lt;artifactId&gt;flying-saucer-pdf &lt;version&gt;9.1.22 ``` 然后,...

    freemark模板导出PDF

    3. **FreeMarker与PDF生成库的结合** - **iText**:这是一个流行的Java库,用于创建和修改PDF文档。我们可以先用FreeMarker处理模板,生成HTML,然后使用iText将HTML转换为PDF。 - **Apache PDFBox**:这是Apache...

    freemarker解析成pdf

    在Java Web开发中,它被广泛应用于生成PDF文档。本篇文章将深入探讨如何利用Freemarker来解析并生成PDF文件。 首先,理解Freemarker的基本概念至关重要。Freemarker是一个基于模板的、与语言无关的模板引擎,它的...

    Freemarker模板生成pdf+java

    Freemarker模板生成pdf+javaFreemarker模板生成pdf+javaFreemarker模板生成pdf+javaFreemarker模板生成pdf+javaFreemarker模板生成pdf+java

    freemarker生成pdf

    在Java世界中,有许多库可以帮助我们生成PDF,例如iText、Apache PDFBox和 Flying Saucer。然而,当我们需要将动态数据与预定义的模板结合时,Freemarker提供了一个灵活且高效的解决方案。 **一、Freemarker基础** ...

    JAVA项目代码绘制PDF和通过freemarker动态生成PDF

    1. itextpdf(CreatePdf) 不太推荐需要在代码内部编写PDF格式,如果要使用,建议写个基类,将同一版本 或者同一类型的公共方法写入,差异化的抽象,一个模板一个子类,子类使用@Component命名,使用反射的方式获取...

    freemarker+itext生成PDF

    在Java应用中,FreeMarker通常与Servlet容器一起使用,用于生成动态网页内容,但也可以用来生成任何类型的文本输出,包括PDF。 接下来是Itext。Itext提供了一系列API,可以方便地创建PDF文档,包括添加文本、图像、...

    java动态导出PDF文件(含jar包)

    在这个项目中,可能用它来根据数据生成HTML模板,然后将其传递给flying-saucer生成PDF。使用模板引擎可以使代码更清晰,更容易维护,因为HTML的生成逻辑和业务逻辑分离了。 综上所述,这个项目展示了如何结合Java、...

    java利用freemarker生成[参照].pdf

    【Java使用FreeMarker生成PDF文档】\n\n在Java开发中,我们经常需要生成各种类型的文档,例如PDF、Word等。FreeMarker是一个强大的模板引擎,它允许开发者通过模板语言来生成文本输出,常用于生成HTML、XML等动态...

    freemark 生成静态页面

    它基于模板语言,通过定义变量和控制结构(如if/else、foreach等),在运行时将这些变量与Java对象的数据结合,生成最终的HTML输出。这使得我们可以灵活地构建动态网页,同时保持页面源码的清晰和可读性。 在给定的...

    实现FreeMark读取模板生成HTML

    在“实现FreeMark读取模板生成HTML”的过程中,我们需要完成以下几个关键步骤: 1. **安装与引入**: 首先,确保你的项目已经添加了FreeMarker的依赖库,通常对于Java项目,可以通过Maven或Gradle将其添加到构建文件...

    导出pdf的一种实现方式 freemark+itext

    总结起来,“freemark+itext”方案提供了一种灵活且强大的方式来生成PDF文档。FreeMarker允许我们使用模板语言来描述文档的结构,而iText则负责将这些结构转换为PDF格式。这种组合使得开发人员能够快速地根据业务...

    word文档生成html模板(freemarker)再转为pdf示例代码

    2、由上述生成的html模板通过java代码生成pdf...适合人群:需要通过法务提供的word类型的合同模板,填充数据生成pdf的人。 阅读建议:按照上述操作步骤,先看README.md文档,再看other/生成html操作步骤目录下的图片。

Global site tag (gtag.js) - Google Analytics