java中利用itext编辑pdf
来源:互联网 发布:克罗地亚交通地图软件 编辑:程序博客网 时间:2024/05/22 10:52
最近项目需要,在调研如何在pdf中增加标识字样,用来区分版本.最后确定用itext来实现.
itext的官网是:http://www.itextpdf.com/
代码如下:
- /**
- * authory kingviker
- * time : 2012-12-12
- */
- import java.io.FileOutputStream;
- import java.io.IOException;
- import com.itextpdf.text.DocumentException;
- import com.itextpdf.text.Font;
- import com.itextpdf.text.Image;
- import com.itextpdf.text.pdf.BaseFont;
- import com.itextpdf.text.pdf.PdfArray;
- import com.itextpdf.text.pdf.PdfContentByte;
- import com.itextpdf.text.pdf.PdfDictionary;
- import com.itextpdf.text.pdf.PdfName;
- import com.itextpdf.text.pdf.PdfObject;
- import com.itextpdf.text.pdf.PdfReader;
- import com.itextpdf.text.pdf.PdfStamper;
- public class AddContentToPDF {
- public static void main(String[] args) throws IOException, DocumentException {
- //创建一个pdf读入流
- PdfReader reader = new PdfReader("C:/help.pdf");
- //根据一个pdfreader创建一个pdfStamper.用来生成新的pdf.
- PdfStamper stamper = new PdfStamper(reader,
- new FileOutputStream("C:/help2.pdf"));
- //这个字体是itext-asian.jar中自带的 所以不用考虑操作系统环境问题.
- BaseFont bf = BaseFont.createFont("STSong-Light",
- "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); // set font
- //baseFont不支持字体样式设定.但是font字体要求操作系统支持此字体会带来移植问题.
- Font font = new Font(bf,10);
- font.setStyle(Font.BOLD);
- font.getBaseFont();
- //页数是从1开始的
- for (int i=1; i<=reader.getNumberOfPages(); i++){
- //获得pdfstamper在当前页的上层打印内容.也就是说 这些内容会覆盖在原先的pdf内容之上.
- PdfContentByte over = stamper.getOverContent(i);
- //用pdfreader获得当前页字典对象.包含了该页的一些数据.比如该页的坐标轴信息.
- PdfDictionary p = reader.getPageN(i);
- //拿到mediaBox 里面放着该页pdf的大小信息.
- PdfObject po = p.get(new PdfName("MediaBox"));
- System.out.println(po.isArray());
- //po是一个数组对象.里面包含了该页pdf的坐标轴范围.
- PdfArray pa = (PdfArray) po;
- System.out.println(pa.size());
- //看看y轴的最大值.
- System.out.println(pa.getAsNumber(pa.size()-1));
- //开始写入文本
- over.beginText();
- //设置字体和大小
- over.setFontAndSize(font.getBaseFont(), 10);
- //设置字体颜色
- over.setColorFill(BaseColor.RED);
- //设置字体的输出位置
- over.setTextMatrix(107, 540);
- //要输出的text
- over.showText("我要加[终稿]字样 " + i);
- over.endText();
- //创建一个image对象.
- Image image = Image.getInstance("c:/1.jpg");
- //设置image对象的输出位置pa.getAsNumber(pa.size()-1).floatValue() 是该页pdf坐标轴的y轴的最大值
- image.setAbsolutePosition(0,pa.getAsNumber(pa.size()-1).floatValue()-100);//0, 0, 841.92, 595.32
- over.addImage(image);
- //画一个圈.
- over.setRGBColorStroke(0xFF, 0x00, 0x00);
- over.setLineWidth(5f);
- over.ellipse(250, 450, 350, 550);
- over.stroke();
- }
- stamper.close();
- }
- }
jar我下载的都是2012-12-12的最新版
2 0
- java中利用itext编辑pdf
- java中利用itext编辑pdf
- java中利用itext编辑pdf
- java利用itext编辑pdf
- java利用itext编辑pdf
- 利用itext工具编辑生成pdf
- Java利用Itext导出pdf
- 如何利用iText在java程序中生成PDF文件
- 如何利用iText在java程序中生成PDF文件
- 如何利用iText在java程序中生成PDF文件
- iText编辑Pdf模板
- iText编辑Pdf模板
- 在Android中利用iText生成PDF
- 利用itext创建pdf表格文件(java)
- 利用java操作Itext创建pdf文件
- Java 利用iText生成pdf并导出
- java 利用itext生成PDF并下载
- 利用java的iText操作PDF文件
- 需要了解的水环境模型
- Android 之 Binder与进程间通信
- java list.addAll方法的一些使用记录
- How to assign UIImageView PlaceHolderImage
- CString 转 ( UNICODE用wstring, ANSI用string )
- java中利用itext编辑pdf
- struts2系列五之可以传递参数
- 最大子数组之和
- 给select赋值
- jquery easyui datebox $("#id").val() 取不到值
- Git
- QT中在界面中任何拖动控件位置
- struts2系列六之使用实体类变量作为参数
- Activiti工作流与Google Chrome框架集成支持IE浏览器