Java添加、提取、替换和删除PDF图片
程序员文章站
2022-04-09 09:23:54
(一)简介 PDF在大多操作平台都能以高质量被使用,非常适合将有用的信息存档和分享。接下来这篇文章将介绍通过Java添加、提取、删除和替换PDF文档中的图片。文章大概结构如下: 工具使用: Free Spire.PDF for JAVA 2.4.4(免费版) Intellij IDEA 或 Ecli ......
(一)简介
pdf在大多操作平台都能以高质量被使用,非常适合将有用的信息存档和分享。接下来这篇文章将介绍通过java添加、提取、删除和替换pdf文档中的图片。文章大概结构如下:
- 添加图片到pdf
- 提取pdf中图片
- 替换pdf中图片
- 删除pdf中图片
工具使用:
- free spire.pdf for java 2.4.4(免费版)
- intellij idea 或 eclipse
jar包导入:
方式一:从官网获取free spire.pdf for java之后解压,在idea或者eclipse中shift+ctrl+alt+s添加导入spire.pdf.jar包到项目中,jar文件可在解压路径下的lib文件夹中获取。
方式二:使用maven配置导包。可以参考。
主要使用的源文档截图:
(二)java 代码示例
1. 给pdf添加图片
public static void main(string[] args) { pdfdocument doc = new pdfdocument(); //创建一个空白页 pdfpagebase page = doc.getpages().add(); transformtext(page); drawimagemethod(page); //保存pdf文件 doc.savetofile("output/drawimage.pdf"); doc.close(); } //绘制文本 - 转换 private static void transformtext(pdfpagebase page) { pdfgraphicsstate state = page.getcanvas().save(); //实例化一个pdftruetypefont对象 pdftruetypefont font = new pdftruetypefont(new font("arial unicode ms", font.plain, 10), true); pdfsolidbrush brush1 = new pdfsolidbrush(new pdfrgbcolor(color.blue)); pdfsolidbrush brush2 = new pdfsolidbrush(new pdfrgbcolor(color.gray)); pdfstringformat format = new pdfstringformat(pdftextalignment.center); page.getcanvas().translatetransform(page.getcanvas().getclientsize().getwidth()/2, 20); page.getcanvas().drawstring("sales report chaert", font, brush1, 0, 0, format); page.getcanvas().scaletransform(1f, -0.9f); page.getcanvas().drawstring("sales report chart", font, brush2, 0, -2 * 18 * 1.5f, format); page.getcanvas().restore(state); } //绘制图片 private static void drawimagemethod(pdfpagebase page) { pdfimage image = pdfimage.fromfile("data/saleschart.jpg"); float width = image.getwidth() * 0.75f; float height = image.getheight() * 0.75f; double x = (page.getcanvas().getclientsize().getwidth() - width) / 2; page.getcanvas().drawimage(image, (int)x,80, width, height); }
结果:
2. 提取pdf中图片
import com.spire.pdf.*; public class extraction { public static void main(string[] args) throws exception { pdfdocument doc = new pdfdocument(); doc.loadfromfile("data/ who_moved_my_cheese.pdf.pdf"); //设置index获取文档第一页 int index = 0; for (pdfpagebase page : (iterable<pdfpagebase>) doc.getpages()) { //使用extractimages方法获取指定页上图片 for (bufferedimage image : page.extractimages()) { //指定输出文件路径及名称 file output = new file("output/" + string.format("image_%d.png", index++)); //将图片保存为png格式文件 imageio.write(image, "png", output); } } } }
结果:
3. 替换pdf中图片
import com.spire.pdf.*; public class replaceimage { public static void main(string[] args) throws ioexception { //加载pdf文档 pdfdocument pdf = new pdfdocument(); pdf.loadfromfile("data/who_moved_my_cheese.pdf"); //获取第一页 pdfpagebase page = pdf.getpages().get(0); //加载一张图片 pdfimage image = pdfimage.fromfile("data/1.png"); //使用加载的图片替换第一页上的第一张图片 page.replaceimage(0, image); //保存文档 pdf.savetofile("替换图片.pdf"); } }
结果:
4. 删除pdf中图片
import com.spire.pdf.*; public class deleteimage { public static void main(string[] args) { pdfdocument doc = new pdfdocument(); doc.loadfromfile("data/who_moved_my_cheese.pdf"); //获取文档的第一页 pdfpagebase page = doc.getpages().get(0); //删除第一页的第一张图 page.deleteimage(0); doc.savetofile("output/删除图片.pdf"); doc.close(); } }
结果:
p.s. 另外关于pdf中图片的操作还有:为pdf添加图片水印。
上一篇: java 下载文件
下一篇: php数字转汉字代码(算法)