java写入pdf文件图片_Java编辑PDF写入文字 插入图片
package com.test;
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Font;
import com.itextpdf.text.Image;
import com.itextpdf.text.pdf.*;
import org.junit.Test;
import java.io.FileOutputStream;
/**
*编辑PDF
*/
public class PDFTest {
@Test
public void testPDF(){
generatePDF("D:/1.pdf","D:/2.pdf","D:1.png");
}
/**
* 生成新的PDF
* @param pdfPath 要编辑的PDF路径
* @param newPDFPath 生成新的PDF路径
* @param imagePath 插入图片路径
*/
public void generatePDF(String pdfPath,String newPDFPath,String imagePath){
try{
//创建一个pdf读入流
PdfReader reader = new PdfReader(pdfPath);
//根据一个pdfreader创建一个pdfStamper.用来生成新的pdf.
PdfStamper stamper = new PdfStamper(reader,new FileOutputStream(newPDFPath));
//这个字体是itext-asian.jar中自带的 所以不用考虑操作系统环境问题.
BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
//baseFont不支持字体样式设定.但是font字体要求操作系统支持此字体会带来移植问题.
Font font = new Font(bf,10);
font.setStyle(Font.BOLD);
font.getBaseFont();
PdfContentByte over;
//页数是从1开始的
for (int i=1; i<=reader.getNumberOfPages(); i++){
//获得pdfstamper在当前页的上层打印内容.也就是说 这些内容会覆盖在原先的pdf内容之上.
over = stamper.getOverContent(i);
//当前页的下层打印内容 按自己需求选择
//over = stamper.getUnderContent(i);
//用pdfreader获得当前页字典对象.包含了该页的一些数据.比如该页的坐标轴信息.
PdfDictionary p = reader.getPageN(i);
//拿到mediaBox 里面放着该页pdf的大小信息.
PdfObject po = p.get(new PdfName("MediaBox"));
//po是一个数组对象.里面包含了该页pdf的坐标轴范围.
PdfArray pa = (PdfArray) po;
//开始写入文本
over.beginText();
//设置字体和大小
over.setFontAndSize(font.getBaseFont(), 90);
//设置字体颜色
over.setColorFill(new BaseColor(0,110,107,100));
com.itextpdf.text.pdf.PdfGState gState = new PdfGState();
gState.setStrokeOpacity(0.1f);
over.setGState(gState);
//要输出的text 对齐方式 写的字 设置字体的输出位置 字体是否旋转
over.showTextAligned(0,"HELLO WORLD",0,100,100);
over.endText();
//创建一个image对象.
Image image = Image.getInstance(imagePath);
//设置image对象的输出位置pa.getAsNumber(pa.size()-1).floatValue() 是该页pdf坐标轴的y轴的最大值 0, 0, 841.92, 595.32
image.setAbsolutePosition(0,pa.getAsNumber(pa.size()-1).floatValue());
//设置插入的图片大小
image.scaleToFit(50,50);
over.addImage(image);
//画一个圈.
over.setRGBColorStroke(0xFF, 0x00, 0x00);
over.setLineWidth(5f);
over.ellipse(250, 450, 350, 550);
over.stroke();
}
stamper.close();
}catch (Exception e){
e.printStackTrace();
}
}
}
PDF开发包下载地址:http://pdfbox.apache.org/
java写入pdf文件图片_Java编辑PDF写入文字 插入图片相关推荐
- html图片在wps中不显示文字大小,WPS文字插入图片显示不全怎么办 WPS文字插入图片显示不完整的解决方法...
在wps文字编辑文档时,如果我们在使用时插入图片显示不全,这种情况我们该怎么解决呢?想必有不少的用户遇到过这种问题,下面教程之家网为大家带来WPS文字插入图片显示不完整的解决方法,不知道怎么解决的朋友 ...
- Java pdf文件传输_java中pdf文件的管理(pdf文件转png文件,base64传输文件以及删除)...
org.apache.pdfbox pdfbox 2.0.12 影像文件转为base64编码使用java自带的BASE64Encoder类 代码部分: 前端上传文件的保存: @RequestMappi ...
- 在pdf文件中怎样编辑pdf文件图片
想要编辑pdf文件中的图片是比较不容易的,没有好的方法的话不仅浪费时间而且很容易编辑失败,那么pdf图片怎么编辑大小及透明度呢?下面小编给出解答. 一.首先需要在电脑中安装好一个pdf编辑工具: 捷速 ...
- 电脑上怎么做pdf文件_怎么编辑pdf文件内容?什么工具可以编辑pdf?
怎么编辑pdf文件内容?临近毕业时候,我有了报考教师资格证的想法,打算之后当老师.期间,我在网上找了很多报考教资的参考资料,不过它们大多是以pdf格式文件形式存在.有时候要往里加入.修改些内容,但我不 ...
- java生成文字与图片_java生成word(文字和图片)
1.整体思路 利用xml模板,在模板中预留占位标识(${yourContent}),然后将xml转为ftl文件,通过Map传值填充对应的内容即可,word其实和html一样,也有自己的xml标签,表头 ...
- java pdf文件保存_java根据模板文件导出pdf
原文:https://www.cnblogs.com/wangpeng00700/p/8418594.html 在网上看了一些Java生成pdf文件的,写的有点乱,有的不支持写入中文字体,有的不支持模 ...
- mac命令行将输出写入文件_如何在Linux中使用命令行将PDF文件转换为可编辑文本...
mac命令行将输出写入文件 There are various reasons why you might want to convert a PDF file to editable text. M ...
- JAVA删除pdf空白页_如何编辑PDF文件,如何删除PDF文档中的空白页
时代在发展,科技在进步,我们现在日常使用的文件也发展了,以前只有Word跟TXT,现在还增加了一个PDF格式的文件,但PDF格式的文件跟Word和TXT文件不一样,Word跟TXT文件可以直接的打开编 ...
- [PDF文件全攻略]-PDF二次开发(.NET开发 C++开发 Java PHP)
原文:http://www.cankau.cn/news/tech/2009112016.html [PDF文件全攻略]-PDF二次开发(.NET开发 C++开发 Java PHP) 2009-11- ...
最新文章
- keepalived + haproxy 实现web 双主模型的高可用负载均衡--转
- RocketMQ Consumer 负载均衡算法源码学习 -- AllocateMessageQueueConsistentHash
- 会计记忆总结之三:会计等式与复式记账
- python动态映射_sqlalchemy动态映射
- 让你的 Qt 桌面程序看上去更加 native(三):自定义 style
- 缓存,你真的用对了么?
- Python抓取2500份招聘需求,数据显示未来最吃香的岗位是这个
- 最新中文文本挖掘小例子及程序
- 程序员代码面试指南读书笔记1
- 电阻电容封装选择以及电路接地问题
- 树莓派+ L298N 控制二相四线步进电机
- 前端合并单元格(行合并、列合并)
- 关于A 星算法的研究与简单分析及其实现-A star
- SystemUI Monkey测试原生代码报错:MLand类NullPointerException
- 这几款软件的隐藏功能,你们知道多少?
- 面对工业4.0,我国工业企业的挑战与对策
- 登陆qq出现计算机丢失msvcp140.dll,缺少msvcp140.dll怎么办?msvcp140.dll丢失解决方法...
- 纽约大学计算机与科学,纽约大学计算机科学专业排名第30(2020年USNEWS美国排名)...
- 选择所在城市html按字母,微信小程序实现根据字母选择城市功能
- Linux环境下不安装DM数据库,编译dmPython
热门文章
- Linux网络安全精要 William Bo Rothwell
- Auto CAD:CAD三维建模设计之常用工具之放样图文教程案例集合(不规则截面路径放样设计香蕉造型和电吹风外壳造型、导向放样设计茶壶造型和苹果造型)
- java android pptp,Centos7搭建PPTP
- python图像分类_关于使用SVM进行图像分类:使用SVM进行图像分类-Python
- Scratch编程绘制正多边形,寻找多边形的规律!
- 解读 Service Mesh 的实现方式与同程艺龙的具体实践
- 三星健身服务器无响应 怎么办,刚买的三星g7508q怎么网速慢的要死怎么办
- 11.Linux文件管理命令---diff比较两个文件
- 【STM32】入门(九):HAL库学习
- 同一对象实例,序列化后,出现 {$ref:$. 的问题