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

2019-05-22 06:35:14来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

(一)简介

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 代码示例

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

结果:

2. 提取PDF中图片

 

import com.spire.pdf.*;
public class extraction {
    public static void main(String[] args) throws Exception{
    //加载测试文档
    PdfDocument pdf = new PdfDocument();
    pdf.loadFromFile("data/ Who_Moved_My_Cheese.pdf");
    int index = 0;
    //遍历PDF每一页
    for (int i= 0;i< pdf.getPages().getCount(); i ++){
        //获取PDF页面
        PdfPageBase page = pdf.getPages().get(i);
        //使用extractImages方法获取指定页上图片
        for (BufferedImage image : page.extractImages()) {
            File output = new File("output/" + String.format("Image_%d.png", index++));
            //将图片保存为PNG格式文件
            ImageIO.write(image, "PNG", output);
        }
    }
}
}
View Code 

结果:

 

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

结果:

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

 

结果:

P.S. 另外关于PDF中图片的操作还有:为PDF添加图片水印。

 


原文链接:https://www.cnblogs.com/MariaWang/p/10901761.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Java实现简单的图片浏览器

下一篇:Java基础--面向对象以及相关知识