欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java添加、提取、替换和删除PDF图片

程序员文章站 2022-07-10 23:54:50
(一)简介 PDF在大多操作平台都能以高质量被使用,非常适合将有用的信息存档和分享。接下来这篇文章将介绍通过Java添加、提取、删除和替换PDF文档中的图片。文章大概结构如下: 工具使用: Free Spire.PDF for JAVA 2.4.4(免费版) Intellij IDEA 或 Ecli ......

(一)简介

pdf在大多操作平台都能以高质量被使用,非常适合将有用的信息存档和分享。接下来这篇文章将介绍通过java添加、提取、删除和替换pdf文档中的图片。文章大概结构如下:

  1. 添加图片到pdf
  2. 提取pdf中图片
  3. 替换pdf中图片
  4. 删除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添加、提取、替换和删除PDF图片

 

(二)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);
}

结果:

Java添加、提取、替换和删除PDF图片

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);
            }
        }
    }
}

结果:

Java添加、提取、替换和删除PDF图片

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");
    }
}

结果:

Java添加、提取、替换和删除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();
    }
}

 

结果:

Java添加、提取、替换和删除PDF图片

p.s. 另外关于pdf中图片的操作还有:为pdf添加图片水印