生成pdf入门

摘要:
要使用iText添加依赖项目,必须引入jar包。45//要创建PdfWriter对象,第一个参数是对文档对象的引用,第二个参数是文件的实际名称。输出路径也在名称中给出。
 添加依赖
 项目要使用iText,必须引入jar包。才能使用,maven依赖如下:
<dependency>
		<groupId>com.itextpdf</groupId>
		<artifactId>itextpdf</artifactId>
		<version>5.5.10</version>
		</dependency>
输出中文,还要引入下面itext-asian.jar包:
		<dependency>
			<groupId>com.itextpdf</groupId>
			<artifactId>itext-asian</artifactId>
			<version>5.2.0</version>
		</dependency>
设置pdf文件密码,还要引入下面bcprov-jdk15on.jar包:
		<dependency>
			<groupId>org.bouncycastle</groupId>
			<artifactId>bcprov-jdk15on</artifactId>
			<version>1.54</version>
</dependency>

测试类:

  1 package com.foster;
  2 
  3 import java.io.FileNotFoundException;
  4 import java.io.FileOutputStream;
  5 import java.io.IOException;
  6 import java.net.URL;
  7 import java.util.List;
  8 
  9 import org.junit.Test;
 10 
 11 import com.itextpdf.text.BaseColor;
 12 import com.itextpdf.text.Chapter;
 13 import com.itextpdf.text.Document;
 14 import com.itextpdf.text.DocumentException;
 15 import com.itextpdf.text.Element;
 16 import com.itextpdf.text.Font;
 17 import com.itextpdf.text.Image;
 18 import com.itextpdf.text.ListItem;
 19 import com.itextpdf.text.Paragraph;
 20 import com.itextpdf.text.Section;
 21 import com.itextpdf.text.pdf.BaseFont;
 22 import com.itextpdf.text.pdf.PdfContentByte;
 23 import com.itextpdf.text.pdf.PdfPCell;
 24 import com.itextpdf.text.pdf.PdfPRow;
 25 import com.itextpdf.text.pdf.PdfPTable;
 26 import com.itextpdf.text.pdf.PdfReader;
 27 import com.itextpdf.text.pdf.PdfStamper;
 28 import com.itextpdf.text.pdf.PdfWriter;
 29 
 30 public class TestPDFDemo1 {
 31 
 32     /**
 33      * 生成pdf
 34      * 
 35      * @throws FileNotFoundException
 36      * @throws DocumentException
 37      */
 38 
 39     @Test
 40     public void test01() throws FileNotFoundException, DocumentException {
 41         // 1.新建document对象
 42         Document document = new Document();
 43 
 44         // 2.建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中。
 45         // 创建 PdfWriter 对象 第一个参数是对文档对象的引用,第二个参数是文件的实际名称,在该名称中还会给出其输出路径。
 46         PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("D://testPdf//1.pdf"));
 47 
 48         // 3.打开文档
 49         document.open();
 50 
 51         // 4.添加一个内容段落
 52         document.add(new Paragraph("Hello World!"));
 53 
 54         // 5.关闭文档
 55         document.close();
 56     }
 57 
 58     /**
 59      * 生成的pdf的详细的信息
 60      * 坐标是和我们初中数学中的坐标轴一致的
 61      * @throws Exception
 62      */
 63     @Test
 64     public void test02() throws Exception {
 65         // 创建文件
 66         Document document = new Document();
 67         // 建立一个书写器
 68         PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("D://testPdf//1.pdf"));
 69         // 打开文件
 70         document.open();
 71         // 添加内容
 72         document.add(new Paragraph("Some content here"));
 73 
 74         // 设置属性
 75         // 标题
 76         document.addTitle("this is a title");
 77         // 作者
 78         document.addAuthor("H__D");
 79         // 主题
 80         document.addSubject("this is subject");
 81         // 关键字
 82         document.addKeywords("Keywords");
 83         // 创建时间
 84         document.addCreationDate();
 85         // 应用程序
 86         document.addCreator("hd.com");
 87 
 88         // 关闭文档
 89         document.close();
 90         // 关闭书写器
 91         writer.close();
 92     }
 93 
 94     /**
 95      * 
 96      * 生成图片
 97      * 
 98      * @throws Exception
 99      */
100     @Test
101     public void test03() throws Exception {
102         // 创建文件
103         Document document = new Document();
104         // 建立一个书写器
105         PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("D://testPdf//1.pdf"));
106         // 打开文件
107         document.open();
108         // 添加内容
109         document.add(new Paragraph("HD content here"));
110 
111         // 图片1
112         Image image1 = Image.getInstance("F://logo.png");
113         // 设置图片位置的x轴和y周
114         image1.setAbsolutePosition(100f, 100f);
115         // 设置图片的宽度和高度
116         image1.scaleAbsolute(200, 100);
117         // 将图片1添加到pdf文件中
118         document.add(image1);
119 
120         // 图片2 .相当于图片的而连接
121         Image image2 = Image.getInstance(new URL("http://static.cnblogs.com/images/adminlogo.gif"));
122         // 将图片2添加到pdf文件中
123         document.add(image2);
124 
125         // 关闭文档
126         document.close();
127         // 关闭书写器
128         writer.close();
129     }
130 
131     /**
132      * 生成3列的表
133      * 
134      * @throws DocumentException
135      * @throws FileNotFoundException
136      */
137     @Test
138     public void test04() throws DocumentException, FileNotFoundException {
139         // 创建文件
140         Document document = new Document();
141         // 建立一个书写器
142         PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("D://testPdf//1.pdf"));
143         // 打开文件
144         document.open();
145         // 添加内容
146         document.add(new Paragraph("HD content here"));
147 
148         // 3列的表.
149         PdfPTable table = new PdfPTable(3);
150         table.setWidthPercentage(100); // 宽度100%填充
151         table.setSpacingBefore(30f); // 前间距
152         table.setSpacingAfter(10f); // 后间距
153 
154         List<PdfPRow> listRow = table.getRows();
155         // 设置列宽
156         float[] columnWidths = { 1f, 2f, 3f };
157         table.setWidths(columnWidths);
158 
159         // 行1
160         PdfPCell cells1[] = new PdfPCell[3];
161         PdfPRow row1 = new PdfPRow(cells1);
162 
163         // 单元格
164         cells1[0] = new PdfPCell(new Paragraph("111"));// 单元格内容
165         cells1[0].setBorderColor(BaseColor.RED);// 边框验证
166         cells1[0].setPaddingLeft(30);// 左填充20
167         cells1[0].setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中
168         cells1[0].setVerticalAlignment(Element.ALIGN_MIDDLE);// 垂直居中
169 
170         cells1[1] = new PdfPCell(new Paragraph("222"));
171         cells1[2] = new PdfPCell(new Paragraph("333"));
172 
173         // 行2
174         PdfPCell cells2[] = new PdfPCell[3];
175         PdfPRow row2 = new PdfPRow(cells2);
176         cells2[0] = new PdfPCell(new Paragraph("444"));
177 
178         // 把第一行添加到集合
179         listRow.add(row1);
180         listRow.add(row2);
181         // 把表格添加到文件中
182         document.add(table);
183 
184         // 关闭文档
185         document.close();
186         // 关闭书写器
187         writer.close();
188     }
189 
190     /**
191      * 添加有序的列表
192      * 
193      * @throws Exception
194      */
195     @Test
196     public void test05() throws Exception {
197         // 创建文件
198         Document document = new Document();
199         // 建立一个书写器
200         PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("D://testPdf//1.pdf"));
201         // 打开文件
202         document.open();
203         // 添加内容
204         document.add(new Paragraph("HD content here"));
205 
206         // 添加有序列表
207         com.itextpdf.text.List orderedList = new com.itextpdf.text.List(com.itextpdf.text.List.ORDERED);
208         orderedList.add(new ListItem("Item one"));
209         orderedList.add(new ListItem("Item two"));
210         orderedList.add(new ListItem("Item three"));
211         document.add(orderedList);
212 
213         // 关闭文档
214         document.close();
215         // 关闭书写器
216         writer.close();
217     }
218 
219     /**
220      * PDF中设置样式/格式化输出,输出中文内容,必须引入itext-asian.jar 生成蓝色的中文字体
221      * 
222      * @throws Exception
223      */
224     @Test
225     public void test06() throws Exception {
226         // 创建文件
227         Document document = new Document();
228         // 建立一个书写器
229         PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("D://testPdf//1.pdf"));
230         // 打开文件
231         document.open();
232 
233         // 中文字体,解决中文不能显示问题
234         BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
235 
236         // 蓝色字体
237         Font blueFont = new Font(bfChinese);
238         blueFont.setColor(BaseColor.BLUE);
239         // 段落文本
240         Paragraph paragraphBlue = new Paragraph("paragraphOne blue front", blueFont);
241         document.add(paragraphBlue);
242 
243         // 绿色字体
244         Font greenFont = new Font(bfChinese);
245         greenFont.setColor(BaseColor.GREEN);
246         // 创建章节
247         Paragraph chapterTitle = new Paragraph("段落标题xxxx", greenFont);
248         Chapter chapter1 = new Chapter(chapterTitle, 1);
249         chapter1.setNumberDepth(0);
250 
251         Paragraph sectionTitle = new Paragraph("部分标题", greenFont);
252         Section section1 = chapter1.addSection(sectionTitle);
253 
254         Paragraph sectionContent = new Paragraph("部分内容", blueFont);
255         section1.add(sectionContent);
256 
257         // 将章节添加到文章中
258         document.add(chapter1);
259 
260         // 关闭文档
261         document.close();
262         // 关闭书写器
263         writer.close();
264     }
265 
266     /**
267      * 给pdf设置密码
268      * 
269      * @param args
270      * @throws DocumentException
271      * @throws IOException
272      */
273     @Test
274     public void test07() throws Exception {
275         // 创建文件
276         Document document = new Document();
277         // 建立一个书写器
278         PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("D://testPdf//1.pdf"));
279 
280         // 用户密码
281         String userPassword = "123456";
282         // 拥有者密码
283         String ownerPassword = "hd";
284         writer.setEncryption(userPassword.getBytes(), ownerPassword.getBytes(), PdfWriter.ALLOW_PRINTING,
285                 PdfWriter.ENCRYPTION_AES_128);
286 
287         // 打开文件
288         document.open();
289 
290         // 添加内容
291         document.add(new Paragraph("password!!!"));
292 
293         // 关闭文档
294         document.close();
295         // 关闭书写器
296         writer.close();
297     }
298 
299     /**
300      * 给pdf设置权限..??
301      * 
302      * @throws Exception
303      */
304     @Test
305     public void test08() throws Exception {
306         // 创建文件
307         Document document = new Document();
308         // 建立一个书写器
309         PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("D://testPdf//1.pdf"));
310 
311         // 只读权限
312         writer.setEncryption("".getBytes(), "".getBytes(), PdfWriter.ALLOW_PRINTING, PdfWriter.ENCRYPTION_AES_128);
313 
314         // 打开文件
315         document.open();
316 
317         // 添加内容
318         document.add(new Paragraph("password !!!!"));
319 
320         // 关闭文档
321         document.close();
322         // 关闭书写器
323         writer.close();
324     }
325     /**
326      * 读取已有的pdf的文件
327      * @throws Exception
328      */
329     
330     @Test
331     public void test09() throws Exception {
332 
333         // 读取pdf文件
334         PdfReader pdfReader = new PdfReader("D://testPdf//1.pdf");
335 
336         // 修改器
337         PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileOutputStream("F://2.pdf"));
338 
339         Image image = Image.getInstance(new URL("http://static.cnblogs.com/images/adminlogo.gif"));
340         image.scaleAbsolute(50, 50);
341         image.setAbsolutePosition(0, 700);//位置
342 
343         for (int i = 1; i <= pdfReader.getNumberOfPages(); i++) {
344             PdfContentByte content = pdfStamper.getUnderContent(i);
345             content.addImage(image);
346         }
347 
348         pdfStamper.close();
349     }
350 
351 }

免责声明:文章转载自《生成pdf入门》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇实用技巧:组建Linux下的个人蓝牙局域网js-判断字符串中是否存在emoji表情下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

SQLserver 获取当前时间

选择CONVERT(varchar,GETDATE())--2017selectDATENAME(YEAR,GETDATE())--2017selectDATEPART。获取当前月份--05或5selectDATENAME(MM,...

Linux 安装.src.rpm源码包的方法

接下来是rpm安装过程。...

WinSCP命令行操作

WinSCP命令行操作WinSCP是一个在Windows环境下使用SSH的开源图形SFTP客户端。它还支持SCP协议。它的主要功能是在本地和远程计算机之间安全地复制文件。在cmd下直接输入winscp,进入winscp操作界面。查看帮助。直接在下面输入帮助以查看所有可用命令。当第一个参数为“both”时,一个参数与另一个参数同步。未指定目录时,同步当前工作目...

Elasticsearch之插件介绍及安装

3.KopfPlugin(主要)Kopf是ElasticSearch的管理工具。它还为ES集群操作提供了API。4.级别插件级别工具可以帮助用户监控ElasticSearch的运行状态。但是,此插件需要许可证。安装许可证后,您可以安装marvel的代理。代理将收集弹性搜索的运行状态。ES插件HeadPlugin的在线安装需要转到https://github....

docker-compose启动容器后执行脚本或命令不退出 | 运行内部程序

好在,docker还有个特别之处,我们可以通过dockerbuild读取到Dockerfile中的指令后,在构建新镜像再起容器的时候,可以直接执行脚本文件运行容器内部应用程序,同时不退出容器。在dockerbuild新镜像后,同样docker-composeup-d启动容器服务,查看容器状态docker-composeps,进入容器并查看进程:事实证明,确实...

【开发笔记】- QQ消息轰炸

1.右键单击以创建新的文本文件;2.打开记事本并复制以下代码:;OnErrorResumeTextDimwsh,yesetwsh=createobject(“wscript.shell”)fori=1to100'以下是轰炸时间wscript。睡眠70wsh。AppActivate(“这是要轰炸的人的名字”)wsh。sendKeys“^v”wsh。sendKe...