博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java之生成Pdf并对Pdf内容操作
阅读量:6249 次
发布时间:2019-06-22

本文共 5660 字,大约阅读时间需要 18 分钟。

虽说网上有很多可以在线导出Pdf或者word或者转成png等格式的工具,但是我觉得还是得了解知道是怎么实现的。一来,在线免费转换工具,是有容量限制的,达到一定的容量时,是不能成功导出的;二来,业务需求,特别是OA方面的项目,报表不单单只是在线通过浏览器登录对应的站点浏览还需有时导出Pdf格式(pdf格式为通用格式,无论是浏览器还是其他工具都能打开,因此特别是做项目实施的,除了用word编写文档之外,通常还导出一下pdf,这样一来保证给老板看时,不会因为某种原因打不开文件看不到对应的实质内容。

 

直接开门见山:

一、导入Maven依赖

4.0.0
site.duanzy
study_pdf
0.0.1-SNAPSHOT
war
study_pdf
UTF-8
com.itextpdf
itextpdf
5.5.10
com.itextpdf
itext-asian
5.2.0
org.bouncycastle
bcprov-jdk15on
1.54
javax
javaee-api
7.0
provided
org.glassfish.web
javax.servlet.jsp.jstl
1.2.2
maven-compiler-plugin
2.3.2
1.8
1.8
maven-war-plugin
2.2
3.1
false

 

二、编写Java代码

package site.duanzy.pdf.demo;import java.io.FileNotFoundException;import java.io.FileOutputStream;import com.itextpdf.text.Document;import com.itextpdf.text.DocumentException;import com.itextpdf.text.Paragraph;import com.itextpdf.text.pdf.PdfWriter;public class TestPDFDemo1 {    public static void main(String[] args) throws FileNotFoundException, DocumentException {        // 1.新建document对象        Document document = new Document();        // 2.建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中。        // 创建 PdfWriter 对象 第一个参数是对文档对象的引用,第二个参数是文件的实际名称,在该名称中还会给出其输出路径。        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("E://Pdf//test.pdf"));                writer.flush();                writer.close();                // 3.打开文档        document.open();                // 4.添加一个内容段落        document.add(new Paragraph("Hello World!"));        // 5.关闭文档        document.close();    }}

 

package site.duanzy.pdf.demo;import java.io.FileNotFoundException;import java.io.FileOutputStream;import com.itextpdf.text.Document;import com.itextpdf.text.DocumentException;import com.itextpdf.text.Paragraph;import com.itextpdf.text.pdf.PdfWriter;public class TestPDFDemo2 {    public static void main(String[] args) throws FileNotFoundException,            DocumentException {        // 创建文件        Document document = new Document();        // 建立一个书写器        PdfWriter writer = PdfWriter.getInstance(document,                new FileOutputStream("E://Pdf//test2.pdf"));        // 打开文件        document.open();        // 添加内容        document.add(new Paragraph("Some content here"));        // 设置属性        // 标题        document.addTitle("this is a title");        // 作者        document.addAuthor("Mr You");        // 主题        document.addSubject("this is subject");        // 关键字        document.addKeywords("Keywords");        // 创建时间        document.addCreationDate();        // 应用程序        document.addCreator("hd.com");        // 关闭文档        document.close();        // 关闭书写器        writer.close();    }}

 

package site.duanzy.pdf.demo;import java.io.FileOutputStream;import java.io.IOException;import java.net.URL;import com.itextpdf.text.Document;import com.itextpdf.text.DocumentException;import com.itextpdf.text.Image;import com.itextpdf.text.Paragraph;import com.itextpdf.text.pdf.PdfWriter;public class TestPDFDemo3 {    public static void main(String[] args) throws DocumentException,            IOException {        // 创建文件        Document document = new Document();        // 建立一个书写器        PdfWriter writer = PdfWriter.getInstance(document,                new FileOutputStream("E://Pdf//test3.pdf"));        // 打开文件        document.open();        // 添加内容        document.add(new Paragraph("HD content here"));        // 图片1        Image image1 = Image.getInstance("E://Demo//workspace//java_pdf//src//main//webapp//images//test.png");        // 设置图片位置的x轴和y周        image1.setAbsolutePosition(100f, 550f);        // 设置图片的宽度和高度        image1.scaleAbsolute(200, 200);        // 将图片1添加到pdf文件中        document.add(image1);        // 图片2        Image image2 = Image.getInstance(new URL("https://gss0.bdstatic.com/-4o3dSag_xI4khGkpoWK1HF6hhy/baike/s%3D220/sign=bda2ad09277f9e2f74351a0a2f31e962/0b46f21fbe096b63ea0d41bf0c338744eaf8accc.jpg"));        // 将图片2添加到pdf文件中        document.add(image2);        // 关闭文档        document.close();        // 关闭书写器        writer.close();    }}

 

以上值列举三个测试代码,更多可以参考我的github:https://github.com/youcong1996/study_simple_demo.git

记住该示例代码在我的侧分支,分支名为java-pdf。

三、运行测试代码的最后结果(结果最后是生成pdf,一般控制台不报错,就表示OK)

全面示例运行后生成的文件如下图所示:

 

转载地址:http://wngia.baihongyu.com/

你可能感兴趣的文章
Django 文件下载功能
查看>>
xBIM 插入复制功能
查看>>
持续集成简介(转)
查看>>
一行代码让你的TableView动起来-iOS动画
查看>>
AI技术出海 - 阿里云GPU服务器助力旷视勇夺4项世界第一
查看>>
Spring Boot中初始化资源的几种方式
查看>>
通过测试发现的Exchange 2013 CU16存在的一个小bug
查看>>
将桌面文件映射至E盘
查看>>
走红日本 阿里云如何能够赢得海外荣耀
查看>>
入侵CIA和FBI的黑客:可能是一个15岁少年
查看>>
聚焦服务器行业,看美国独立服务器优势
查看>>
高中生开发 Chrome 插件,帮助色盲患者更为清晰的看到网上图片
查看>>
玩笑到现实,大数据涉足文学研究--用数据模型分析莎翁著作
查看>>
[Servlet&JSP] HttpServletResponse的使用
查看>>
【java设计模式】之 单例(Singleton)模式
查看>>
Linux_自制系统服务启动脚本
查看>>
干货:解码OneData,传说中的阿里数据中台是如何练成的?
查看>>
gorename: easy refactoring tool for Golang[转]
查看>>
数据库进程间通信解决方案
查看>>
Guice框架-DI(依赖注入之作用域)
查看>>