java利用itext编辑pdf

最近项目需要,在调研如何在pdf中增加标识字样,用来区分版本.最后确定用itext来实现 .

     itext的官网是:http://www.itextpdf.com/

代码如下:

Java代码   收藏代码
  1. /** 
  2.  * authory kingviker  
  3.  * time : 2012-12-12 
  4.  */  
  5. import java.io.FileOutputStream;  
  6. import java.io.IOException;  
  7.   
  8. import com.itextpdf.text.DocumentException;  
  9. import com.itextpdf.text.Font;  
  10. import com.itextpdf.text.Image;  
  11. import com.itextpdf.text.pdf.BaseFont;  
  12. import com.itextpdf.text.pdf.PdfArray;  
  13. import com.itextpdf.text.pdf.PdfContentByte;  
  14. import com.itextpdf.text.pdf.PdfDictionary;  
  15. import com.itextpdf.text.pdf.PdfName;  
  16. import com.itextpdf.text.pdf.PdfObject;  
  17. import com.itextpdf.text.pdf.PdfReader;  
  18. import com.itextpdf.text.pdf.PdfStamper;  
  19.   
  20. public class AddContentToPDF {  
  21.   
  22.     public static void main(String[] args) throws IOException, DocumentException {  
  23.   
  24.         //创建一个pdf读入流  
  25.         PdfReader reader = new PdfReader("C:/help.pdf");   
  26.         //根据一个pdfreader创建一个pdfStamper.用来生成新的pdf.  
  27.         PdfStamper stamper = new PdfStamper(reader,  
  28.           new FileOutputStream("C:/help2.pdf"));   
  29.           
  30.         //这个字体是itext-asian.jar中自带的 所以不用考虑操作系统环境问题.  
  31.         BaseFont bf = BaseFont.createFont("STSong-Light",   
  32.                 "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); // set font  
  33.         //baseFont不支持字体样式设定.但是font字体要求操作系统支持此字体会带来移植问题.  
  34.         Font font = new Font(bf,10);  
  35.         font.setStyle(Font.BOLD);  
  36.         font.getBaseFont();  
  37.         //页数是从1开始的  
  38.         for (int i=1; i<=reader.getNumberOfPages(); i++){  
  39.   
  40.            //获得pdfstamper在当前页的上层打印内容.也就是说 这些内容会覆盖在原先的pdf内容之上.  
  41.             PdfContentByte over = stamper.getOverContent(i);  
  42.             //用pdfreader获得当前页字典对象.包含了该页的一些数据.比如该页的坐标轴信息.  
  43.             PdfDictionary p = reader.getPageN(i);  
  44.             //拿到mediaBox 里面放着该页pdf的大小信息.  
  45.            PdfObject po =  p.get(new PdfName("MediaBox"));  
  46.            System.out.println(po.isArray());  
  47.            //po是一个数组对象.里面包含了该页pdf的坐标轴范围.  
  48.            PdfArray pa = (PdfArray) po;  
  49.            System.out.println(pa.size());  
  50.            //看看y轴的最大值.  
  51.            System.out.println(pa.getAsNumber(pa.size()-1));  
  52.             //开始写入文本  
  53.             over.beginText();  
  54.             //设置字体和大小  
  55.             over.setFontAndSize(font.getBaseFont(), 10);
  56. //设置字体颜色
  57.             over.setColorFill(BaseColor.RED); 
  58.             //设置字体的输出位置  
  59.             over.setTextMatrix(107540);   
  60.             //要输出的text  
  61.             over.showText("我要加[终稿]字样 " + i);    
  62.             over.endText();  
  63.             //创建一个image对象.  
  64.             Image image = Image.getInstance("c:/1.jpg");  
  65.             //设置image对象的输出位置pa.getAsNumber(pa.size()-1).floatValue() 是该页pdf坐标轴的y轴的最大值  
  66.             image.setAbsolutePosition(0,pa.getAsNumber(pa.size()-1).floatValue()-100);//0, 0, 841.92, 595.32  
  67.             over.addImage(image);  
  68.              
  69.             //画一个圈.  
  70.             over.setRGBColorStroke(0xFF0x000x00);  
  71.             over.setLineWidth(5f);  
  72.             over.ellipse(250450350550);  
  73.             over.stroke();  
  74.         }  
  75.   
  76.         stamper.close();  
  77.   
  78.     }  
  79. }  
 

 

jar我下载的都是2012-12-12的最新版

  • itextpdf-5.3.4.jar (1.7 MB)
  • 下载次数: 19
  • itext-asian.jar (2.1 MB)
  • 下载次数: 23

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/352201.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

java设置pdf不可编辑_禁止编辑,但允许在Java iText / PDF中进行页面提取

我正在使用iText生成PDF文件 . 我想禁止编辑PDF&#xff0c;但允许读者提取页面 . 这是我设置加密的代码&#xff1a; writer.setEncryption(null, null, 0xffffffff, PdfWriter.STANDARD_ENCRYPTION_128); 第三个参数指定权限 . 我正在使用0xffffffff而不是单独的iText标志ALL…

HTML5 PDF 编辑,pdf.js的使用与改造

一、前期准备 1.1 需求描述 1.想让各个浏览器能显示服务器存放的PDF文件(主要是手机的浏览器) 2.想让项目结构如下:lib目录存放pdf.js等依赖文件,src存放要显示的pdf文件 想要的项目结构 3.这样我就可以将这个项目放到我网站的任何目录下,比如放到PDF或者别的文件夹下 PDF目…

如何免费编辑PDF文档?

我们都知道PDF文档不像Word文档一样可以直接编辑修改&#xff0c;想要编辑PDF文档&#xff0c;我们就需要借助专业的PDF编辑器。今天小编就给大家推荐一款可以免费编辑PDF文档的工具“金闪PDF编辑器”。 金闪PDF编辑器是一款功能齐全的强大的PDF工具&#xff0c;目前有移动端安…

PDF文件编辑并去除水印

我相信很多博友肯定被这个问题烦恼过&#xff0c;并且当初我自己也因为这个事情熬的掉了好几根头发&#xff0c;这件事就是PDF文件编辑过后会留下很严重的水印&#xff0c;并且无法除去&#xff0c;想去除就得花钱购买会员&#xff0c;想白嫖都没有办法&#xff0c;接下来我就为…

怎么编辑PDF文件?分享三种好用的编辑方法

怎么编辑PDF文件中的内容呢&#xff1f;大家在日常使用PDF文件的过程中肯定遇到过需要编辑文件的需求&#xff0c;因为我们不能保证每个文件中的内容都不会出错&#xff0c;问题是PDF文件不容易改动&#xff0c;我们怎么做才能够编辑PDF文件呢&#xff1f;不用着急&#xff0c;…

如何编辑PDF文件?编辑PDF的方法有哪些?

PDF文件是一种广泛使用的文档格式&#xff0c;通常用于共享和阅读文档&#xff0c;如电子书、报告、合同等。但是&#xff0c;有时候您可能需要编辑PDF文件。编辑PDF文件可能听起来很困难&#xff0c;但是有许多方法可以轻松地编辑PDF文件。本文将探讨几种最常见的编辑PDF文件的…

PDF编辑:Adobe Acrobat X Pro 官方原版下载+中文汉化补丁

Adobe在10月份发布了新一代Acrobat X软件家族&#xff0c;其中包括PDF创建编辑软件Acrobat X Pro,因为Acrobat X Pro是Acrobat Pro 9.0的后续版本&#xff0c;故也有人称其为Acrobat Pro 10.0。虽然Aodbe Acrobat X Pro正式版发布许久了&#xff0c;但Acrobat X Pro 简体中文版…

Windows系统下的PDF编辑工具软件-PDF编辑器下载

PDF编辑器是一款Windows系统下的PDF编辑工具软件&#xff0c;它支持修改编辑PDF文件并向PDF添加文字、擦除内容、插入图片、绘制直线、加椭圆框、加矩形框和旋转PDF等功能。PDF编辑器可以让您在PDF文件的任何位置添加文字、删除内容、加图片或进行其他编辑&#xff0c;简单的如…

JVM学习笔记二

1. JVM内存参数 要求 熟悉常见的 JVM 参数&#xff0c;尤其和大小相关的 堆内存&#xff0c;按大小设置 解释&#xff1a; -Xms 最小堆内存&#xff08;包括新生代和老年代&#xff09; -Xmx 最大堆内存&#xff08;包括新生代和老年代&#xff09; 通常建议将 -Xms 与 -…

【6.05 代随_48day】 打家劫舍、打家劫舍 II、打家劫舍 III

打家劫舍、打家劫舍 II、打家劫舍 III 打家劫舍1.方法图解步骤代码 打家劫舍 II1.方法代码 打家劫舍 III图解步骤代码 打家劫舍 力扣连接&#xff1a;198. 打家劫舍&#xff08;中等&#xff09; 1.方法 确定dp数组&#xff08;dp table&#xff09;以及下标的含义 dp[i]&am…

go 并发/并行/协程/sync锁读写锁

下面来介绍几个概念&#xff1a; 进程/线程&#xff1a; 进程是程序在操作系统中的一次执行过程&#xff0c;系统进行资源分配和调度的一个独立单位。线程是进程的一个执行实体&#xff0c;是 CPU 调度和分派的基本单位&#xff0c;它是比进程更小的能独立运行的基本单位。一…

易点易动打通财务系统,打破数据孤岛,实现固定资产的账实一致

固定资产管理涉及资产的采购、验收、账务处理、折旧管理等全流程,同时也牵涉到财务系统和资产系统两大信息孤岛。这两个系统之间数据不互通,导致资产的账实信息无法同步,无法真正实现资产管理的账实一致。 固定资产系统作为固定资产管理的业务系统,负责资产的采购申请、验收入…

【ECCV2022】DaViT: Dual Attention Vision Transformers

DaViT: Dual Attention Vision Transformers, ECCV2022 解读&#xff1a;【ECCV2022】DaViT: Dual Attention Vision Transformers - 高峰OUC - 博客园 (cnblogs.com) DaViT&#xff1a;双注意力Vision Transformer - 知乎 (zhihu.com) DaViT: Dual Attention Vision Trans…

计算机右上角无法搜索,win10系统,文件夹右上角的搜索栏点击无反应,无法输入怎么办?...

具体方法如下&#xff1a; 1、在win10系统上按winR键打开运行原版win10系统下载&#xff0c;输入regedit&#xff0c;如下图所示&#xff1a; 2、打开注册表之后原版win10系统下载&#xff0c;点击HKEY_LOCAL_MACHINE&#xff0c;如下图所示&#xff1a; 3、然后依次点击“HKEY…

wow!蛇形矩阵!但是看到最后一行我就吐血了......

&#xff08;本人是小学生哟&#xff01;&#xff09; 今天看到了一道特别BT的题目&#xff0c;蛇形矩阵。 【问题描述】(本题所有的矩阵&#xff0c;就相当于数字填入一个正方形) 一个n行n列的蛇形矩阵可由如下方法生成&#xff1a; 从矩阵的左上角&#xff08;第1行第1列&…

对WoW Shader文件的分析

Wow的渲染引擎是同时支持固定渲染管线渲染和Shader渲染管线渲染的.bls文件是wow的shader文件,分析它的实现可以学习引擎是怎样渲染的,以及如何做一个兼容固定管线和Shader管线的引擎. bls里存储的是OpenGL low-level shading language的指令,terrain1.bls,terrain2.bls,terrain…

wow服务器显示锦标赛,魔兽世界史诗钥石地下城 全球锦标赛“计时赛”指南

史诗钥石地下城全球锦标赛(MDI)春季赛的“试炼场”已经结束。全球数以千计的勇士响应号召&#xff0c;获得了进入锦标赛服务器参加“计时赛”的资格。东部赛区的地下城英雄们&#xff0c;请了解以下这些信息&#xff01; 欢迎来到锦标赛服务器 所有成功通过“试炼场”挑战的玩家…

wow转服服务器不显示,《魔兽世界》部分服务器开启免费转服 解决负载过高问题...

《魔兽世界》全新资料片“暗影国度”已于本周四正式开启&#xff0c;新版本上线导致大量玩家同时涌入游戏&#xff0c;给一些服务器造成了不小的负担。为了解决这个问题&#xff0c;提升玩家体验。今日&#xff0c;魔兽世界官方微博宣布官方为部分高负载、高排队的服务器开启了…

wow镜头模拟

3D游戏编程中&#xff0c;镜头的控制相当重要&#xff0c;不同的镜头表现&#xff0c;能给玩家完全不同的体验&#xff1b;比如《跑跑卡丁车》中的跟随镜头&#xff0c;每当甩尾的时候&#xff0c;镜头也会有相应的运动轨迹&#xff0c;如果只是单单的垂直俯视&#xff0c;那肯…

魔兽世界服务器卡 邮件寄不出去,魔兽世界怀旧服邮件收不到怎么办 WOW怀旧服邮件取不出来解决方法...

魔兽世界怀旧服邮件收不到是游戏邮箱玩法&#xff0c;玩家们邮寄金币与物品给朋友时有时候等了很久还没到达喔&#xff0c;很多玩家想知道魔兽世界怀旧服邮件收不到怎么办、WOW怀旧服邮件取不出来解决方法呢&#xff0c;跑跑车游戏网为大家带来介绍。 *魔兽世界怀旧服邮件收不到…