`
mazhiyuan
  • 浏览: 64741 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用Freemarker+iText生成PDF文件

阅读更多

项目里需要实现客户下载pdf文件的一个需求,在经过比较之后决定使用Freemarker+iText解决这个问题。在整个实现过程中遇到不少问题,总结一下贴出来吧,也许今后用得上。

 

使用的jar:iText2.0.8、core-renderer、iTextAsian

问题1:iText的版本问题

           最初使用的是iText 2.1.7版本,但是发现这句话总是会报错,具体报错就不贴了,记得是无法找到一个方法

          

ITextRenderer renderer = new ITextRenderer();

          后来换了2.0.8以后这个问题不在出现,也许是和其他jar有冲突吧。

          iTextAsian是解决中文和日文输出的问题。

 

问题2:字体样式

      看到网上有不少讨论这个问题的帖子,使用这两个技术时,感觉蛮简单

 

      在后台:

ITextFontResolver fontResolver = renderer.getFontResolver();
fontResolver.addFont(fontDir1, BaseFont.IDENTITY_H,
		    BaseFont.NOT_EMBEDDED);
fontResolver.addFont(fontDir2, BaseFont.IDENTITY_H,
		    BaseFont.NOT_EMBEDDED);

     另外在freemarker中,使用css加上字体即可:

 

body {
    font-family: SimSun;      
    font-size:14px;     
    font-style:italic; 
    font-weight:500;
}

.heiti
{
   font-family: simsun-bold;   
}

 

 

问题3:图片问题

     之前生成的pdf总是无法显示图片,无论把图片放在ftl文件的什么位置,在ftl中写什么样子的路径都不好使,后来参考了downpour大大的帖子http://downpour.iteye.com/blog/509417?page=4 

才解决了这个问题:

renderer.setDocumentFromString(str);
			
// 解决图片的相对路径问题   
renderer.getSharedContext().setBaseURL("file:/D:/images/"); 
  
renderer.layout();
renderer.createPDF(os);
os.close();

   当然这里的路径最好设置为资源文件中的值,这样在上线后即便修改也无需重新部署。

 

 

问题4:关于pdf中文换行以及分页的问题

    这2个问题我在项目中没有发现,似乎使用Freemarker会使得自动完成这2个任务吧。

 

 现就这么多,以后还会有关于Freemarker和iText的东西发上来,不得不赞下这2个项目啊,真是好用,呵呵

 另外感谢pourdown大大,大家还可以参考这个文章,不过是e文的:

 http://today.java.net/pub/a/today/2007/06/26/generating-pdfs-with-flying-saucer-and-itext.html

分享到:
评论

相关推荐

    freemarker+itext生成PDF

    这篇博客 "freemarker+itext生成PDF" 可能详细介绍了如何结合这两者来生成PDF文件,这在报表生成、发票打印或任何需要静态化输出的场景中非常有用。 首先,让我们了解FreeMarker。FreeMarker是一个基于模板的语言,...

    基于itext7+freemarker模板导出pdf

    在IT领域,生成PDF文档是常见的需求,尤其在报表、合同和文档自动化中。本教程将探讨如何使用iText7和FreeMarker库结合,来创建一个基于模板的PDF生成流程,确保中文支持和图片的正常显示。 首先,iText7是一款强大...

    freemarker+html生成pdf.zip

    `Freemarker`是一个强大的模板引擎,通常用于动态生成HTML、XML等文本格式,而将`Freemarker`与HTML模板结合生成PDF,可以充分利用HTML的易编辑性和富文本特性,为用户提供高质量的文档输出。下面我们将深入探讨如何...

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

    然后,创建一个 PdfUtils 工具类,用于生成PDF文档。 四、PDF工具类编写 PdfUtils工具类主要用于生成PDF文档。该类中包含了生成HTML模板、将HTML模板转换为PDF文档的方法。方法上有完整的注释,思路是利用模板引擎...

    java html模板 itext 生成pdf 页眉页脚 合并pdf列子

    搜索了好多篇例子,算是强拼硬凑成现在的...此包中包含可测试成功代码,关联模板、字体文件、jar等 希望能帮助到大家。 这篇文章的作者蛮厉害,有不少借鉴。 http://blog.csdn.net/layman1024/article/details/74628658

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

    对于没有使用宏、函数等word、excel,需要按模板动态生成word、excel、html,只需要一个freemarker,先将word、excel、html等另存为**xml**,即可使用模板动态生成文件,目前xlsx是不支持的 4. PdfTemplate 对于不会...

    springboot使用itext生成pdf并保存到本地

    总结一下,要实现在Spring Boot应用中使用iText生成带有页眉、页码、水印、目录和二维码的PDF,你需要: 1. 引入iText及相关库。 2. 创建HTML页面并将其转换为PDF。 3. 定制PDF内容,包括添加页眉、页码和水印。 4. ...

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

    在Java开发中,生成PDF文件是一项常见的需求,特别是在企业级应用中,如生成合同、报告等文档。FreeMarker是一个强大的模板引擎,常用于生成HTML、XML等动态内容,但也可以结合其他库来生成PDF。本篇文章将深入探讨...

    java根据动态模板生成pdf(包含柱状图)所需jar包

    java根据动态模板生成pdf(包含柱状图)所需jar包 iText+FreeMarker+JFreeChart生成可动态配置的PDF文档。 iText有很强大的PDF处理能力,但是样式和排版不好控制,直接写PDF文档,数据的动态渲染很麻烦。 FreeMarker...

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

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

    itext生成pdf所需的jar包

    iText支持动态生成PDF,包括添加文本、图像、表格、超链接、水印等元素。在处理复杂的PDF生成需求时,iText通常是一个可靠的选择。它不仅适用于Java环境,还有.NET平台的版本。 其次,我们要提到的是Freemarker。...

    基于SpringBoot实现的生成工资条源代码,使用FreeMarker模板引擎, iTextPdf生成工资条PDF

    5. 使用iTextPdf生成PDF:将渲染后的HTML转换为PDF,可以利用iTextPdf提供的`Document`、`PdfWriter`、`HtmlConverter`等类完成这个过程。 6. 提供下载接口:在控制器层创建一个HTTP接口,当用户访问这个接口时,...

    EOS 中使用freemarker模板生成PDF文件导出

    在博文《EOS中使用Freemarker模板生成PDF文件导出》中,作者可能详细介绍了以上步骤,并可能分享了具体代码示例和遇到的问题解决方案。由于没有直接提供该博文的内容,我们只能推测其可能涵盖的主题。例如,作者可能...

    freemarker解析成pdf

    本篇文章将深入探讨如何利用Freemarker来解析并生成PDF文件。 首先,理解Freemarker的基本概念至关重要。Freemarker是一个基于模板的、与语言无关的模板引擎,它的主要工作是将数据模型和模板结合,生成最终的输出...

    html模板结合itextpdf生成pdf文档--demo

    本教程主要探讨如何利用HTML模板和iTextPDF库来创建PDF文件,同时也会提及Apache POI和Freemarker在导出Excel方面的应用,以及如何在PDF上添加文字水印。 首先,iTextPDF是一个强大的Java库,专门用于生成和修改PDF...

    itextpdf将html生成pdf所需要的全部jar

    在实际应用中,这些JAR文件通常会组合使用,首先,JFinal可能用于处理Web请求和数据库交互,获取需要生成PDF的HTML内容;接着,FreeMarker处理HTML模板并填充数据;然后,XMLWorker将处理后的HTML转化为iText可以...

    Java+电子签名,生成PDF格式的合同

    然后,将这些数据模型与模板结合,通过Freemarker的API生成PDF文档。 2. **插入电子签名**: 生成PDF后,我们需要找到合适的签名位置。这通常可以通过PDF坐标系统来实现,可以是预设的固定位置,也可以根据文档...

    Freemarker导出 word 和 pdf 工具类

    Freemarker是一款强大的Java...总结,使用Freemarker导出Word和PDF文档是一种常见的技术手段,结合合适的库和精心设计的工具类,可以高效地实现动态文档生成。理解这些知识点对于提升开发效率和产品质量具有重要意义。

    iText+Flying Saucer生成pdf文档所需要的jar包

    在IT行业中,生成PDF文档是常见的需求,尤其在报表、发票、合同等场景下。...在实际项目中,根据具体需求,还可以结合其他工具或库,比如使用Thymeleaf或FreeMarker模板引擎生成HTML,进一步提升生成PDF的效率和质量。

    itext 导出pdf 例子

    本示例将深入讲解如何利用iText库来导出PDF文件,以满足特定的需求。 首先,确保已将iText库添加到项目依赖中。通常,可以通过Maven或Gradle来引入。对于Maven项目,可以在pom.xml文件中添加以下依赖: ```xml ...

Global site tag (gtag.js) - Google Analytics