iText简介

iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。 iText的安装非常方便,下载iText.jar文件后,只需要在系统的CLASSPATH中加入iText.jar的路径,在程序中就可以使用iText类库了。
 

iTextAsian.jar (亚洲语言包,可以使用中文) 需要添加到工程中 使用时需要在系统的环境变量Path中加入iText的路劲,在程序中就可以使用了 用iText生成PDF文档需要5个步骤:

1)建立com.lowagie.text.Doucment对象的实例 Document document = new Document();

2)建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入磁盘中PDFWriter.getInstance(document,new FileOutputStream(“要存放的文件路径名”));

3)打开文档document.open();

4)向文档中添加内容

所有向文档添加的内容都是以对象为单位     如:Phrase(短语)、Paragraph(段落)、Chunk(文本块)、Table、Graphic

比较常用的为Paragraph对象,用于向文档中添加一段文字。Chunk(文本块)是处理文本的最小单位,由一串带格式(包括字体、颜色、大小) 的字符串组成。     Phrase(短语)由一个或多个Chunk(文本块)组成,Phrase(短语)也可以设定字体, 但对于其中以设定过字体的Chunk(文本块)无效。通过Phrase(短语)成员函数 Add可以将一个Chunk(文本块)加入到Phrase(短语)中。

如:phrase.add(chunk);     Paragraph(段落)由一个或多个Chunk(文本块)或Phrase(短语)组成,相当于Word文档中的段落概念,同样可以设定段落的字体大小、颜色等属性。

另外也可以设定段落的首行缩进、对齐方式(左对齐、右对齐、居中对齐)。通过函数SetAlignment()可以设定段落的对齐方式

如:Paragraph.setAlignment(int age);     参数有1(居中对齐)、2(右对齐)、3(左对齐);不设置默认左对齐。

Chunk chunk1 = new Chunk("ceshi1");

Chunk chunk2 = new Chunk("ceshi2");

Phrase phrase = new Phrase();

Phrase.add(chunk1);

Phrase.add(chunk2);

Paragraph paragraph1 = new Paragraph("ceshizhi");

第一种,直接传值进去

Paragraph paragraph2 = new Paragraph (chunk2);

paragraph2.setAlignment(1); 居中对齐

第二种,传一个文本块对象进去

Paragraph paragraph2 = new Paragraph (phrase);

第三种,传一个短语对象进去

Document.add(paragraph1);

Document.add(paragraph2);

Document.add(paragraph3); 把段落写入文档中

5) 关闭文档

Document.close();

其他: 换页 Document.newPage();

中文处理 当有中文的时候使用上面的方法则中文不会被写入,

因此需要用到:

BaseFont bfChinese = BaseFont.createFont("STSong-Light","UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);

Font fontChinese = new Font(bfChinese, 12, Font.NORMAL,Color.GREEN);

然后打开文档写入的时候,就应该按照下面的写法:

Paragraph paragraph1 = new Paragraph("测试", fontChinese);

同上面一样"测试"可以用文本块或短语替换;

图片处理 iText中处理图像的类为com.lowagie.text.Image 目前iText支持的图像格式有:、GIF、JPG、PNG等格式 iText用同样的构造函数自动识别图像格式: //参数为gif、jpg、png格式的图片都可以

Image image = Image.getInstance("参数"); //定义一个图片信息,可以是绝对路径,也可以是

URL Image img = Image.getInstance("D:\\4.jpg");

img = Image.getInstance(new URL(http://xxx.com/logo.jpg)); //添加到document中 document.add(img);

图像的位置 图像的位置主要是指图像在文档中的对齐方式、图像和文本的位置关系。

IText中通过函数public void setAlignment(int alignment)进行处理, 参数alignment为Image.RIGHT、Image.MIDDLE、Image.LEFT分别指右对齐、居中、左对齐;

当参数alignment为Image.TEXTWRAP、Image.UNDERLYING分别 指文字绕图形显示、图形作为文字的背景显示。

这两种参数可以结合以达到预期的效果, 如

setAlignment(Image.RIGHT|Image.TEXTWRAP) 显示的效果为图像右对齐,文字围绕图像显示。 图像的尺寸和旋转 //设置图像的宽和高

image.scaleAbsolute(int newWidth, int newHeight); //设置图像比例,表示显示的大小为原始大小的多少比例

image.scalePercent(int percent); //设置图像的高宽比例

image.scalePercent(int percentX,int percentY); //设置图像旋转一定的角度;

参数arg为弧度,而不是角度 image.setRotation(float arg);

Itext简绍及操作PDF文件的更多相关文章

  1. vue项目中操作PDF文件

    以前从来没接触过前端要求显示PDF文件,一时之间有点懵逼,不知从哪下手啊... 无奈之下,去找度娘,方法还不少,iframe  embed  object这些标签就可以, 可是拿过来做个demo一试, ...

  2. .net通过iTextSharp.pdf操作pdf文件实现查找关键字签字盖章

    之前这个事情都CA公司去做的,现在给客户做demo,要模拟一下签字盖章了,我们的业务PDF文件是动态生成的所以没法通过坐标定位,只能通过关键字查找定位了. 之前在网上看了许多通多通过查询关键字,然后图 ...

  3. 操作PDF文件的关键技术点

    一个PDF文档从大到小可以分成如下几个要素:文档.章节.小节.段落.表格.列表. com.lowagie.text.Document表示PDF文档.必须为它创建一个PDF写入器,即com.lowagi ...

  4. c#操作pdf文件系列之创建文件

    1.我使用的工具是vs2013,引用的第三方程序集itextpdf 具体安装方法,可以通过nuget搜索iTextSharp然后进行安装. 2具体代码如下 创建两个不同pdf文件,每个地方什么意思代码 ...

  5. itext操作PDF文件添加水印

    功能描述:添加图片和文字水印 /** * * [功能描述:添加图片和文字水印] [功能详细描述:功能详细描述] * @param srcFile 待加水印文件 * @param destFile 加水 ...

  6. Qt 操作 pdf 文件

    写了好久的东西,不小心按了下返回键就没了.CSDN居然没自动保存,坑爹啊 原本还有很多信息的,现在直入正题吧. QT没有内置PDF操作的功能(其实有一个,QPrinter,不过只能写不能读,基本是半残 ...

  7. fpdf fpdi 操作pdf文件 写入中文汉字

      今天给公司做一个线上合同签约功能,用户签约后 生成pdf版的文件 .网上搜了搜大概都是用fpdf进行操作的  , 通过fpdi 可以进行读取pdf模板. 在通过继承fpdf 操作现有的pdf文档 ...

  8. 分享一个操作pdf文件的js文件-pdfObject.js(文件预览、下载、打印等操作都具备)

    获取相关资料或者源码的朋友可以关注下公众号,回复关键字pdf20200518即可

  9. 使用iText库创建PDF文件

    前言 译文连接:http://howtodoinjava.com/apache-commons/create-pdf-files-in-java-itext-tutorial/ 对于excel文件的读 ...

随机推荐

  1. html5+css3学习笔记-prefixfree前缀补全插件

    虽然现代浏览器支持CSS3,但是一些过往的版本或是目前有些CSS3属性的应用还是离不开前缀的.一些牛逼且执着于web技术且乐于分享的仁兄(Lea Verou)就搞了个名叫prefixfree.js的插 ...

  2. 5.编写Java应用程序。首先,定义描述学生的类——Student,包括学号(int)、 姓名(String)、年龄(int)等属性;二个方法:Student(int stuNo,String name,int age) 用于对对象的初始化,outPut()用于输出学生信息。其次,再定义一个主类—— TestClass,在主类的main方法中创建多个Student类的对象,使用这些对象来测 试St

    Student类: package com.bao; public class Student { int stuNo;String name,sex;int age,weight; Student( ...

  3. Oracle Day05 集合与数据处理

    1.集合 --集合操作: 并集.交集.差. select deptno,job,sum(sal) from emp group by deptno,job union select deptno,to ...

  4. PHP下利用PHPMailer配合QQ邮箱下的域名邮箱发送邮件

    作 为PHP入门开发者,常常有这种述求:自己的网站中需要添加一个使用自己的域名作为发件人邮件地址的自动发送邮件的方法,用于诸如给用户发送验证码.通知 信息等.比如:我的某个用户注册模块,需要使用reg ...

  5. Struts2透过自定义拦截器实现登录之后跳转到原页面

    Struts2通过自定义拦截器实现登录之后跳转到原页面 这个功能对用户体验来说是非常重要的.实现起来其实很简单. 拦截器的代码如下: package go.derek.advice; import g ...

  6. android基础知识点复习之短信发送

    界面布局: activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/an ...

  7. j2ee网站项目首页如何直接使用action

    之前做过一些网站项目,大多数都是首页就是登录,直接进入首页的不多,也就没有注意到,今天刚好注意到了就来记一下.也算是一个小技巧 <welcome-file>index.jsp</we ...

  8. YII2 请求(request)

    请求 一个应用的请求是用 yii\web\Request 对象来表示的,该对象提供了诸如 请求参数(译者注:通常是GET参数或者POST参数).HTTP头.cookies等信息. 默认情况下,对于一个 ...

  9. CSS3秘笈:第七章

    第七章  margin.padding和border 1.盒模型:四个属性: (1)padding:内容与其边框线之间的空间. (2)border:盒子周围的直线 (3)background-colo ...

  10. Codeforces Round #350 (Div. 2)_D2 - Magic Powder - 2

    D2. Magic Powder - 2 time limit per test 1 second memory limit per test 256 megabytes input standard ...