`
crabdave
  • 浏览: 1294715 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用Java将PDF文件转成图片

    博客分类:
  • Java
 
阅读更多

使用Java将PDF文件转成图片

import com.sun.pdfview.PDFFile;
import com.sun.pdfview.PDFPage;

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

/**
 * Created by David on 2016/11/15.
 */
public class Pdf2Pic {
    /**
     * 根据pdf文件拆分图片
     * @param ossKey
     * @param file
     * @return
     * @throws IOException
     */
    public static String splitPic(String ossKey,File file) throws IOException {
        // load a pdf from a byte buffer

        RandomAccessFile raf = new RandomAccessFile(file, "r");
        FileChannel channel = raf.getChannel();
        ByteBuffer buf = channel.map(FileChannel.MapMode.READ_ONLY, 0, channel
                .size());
        PDFFile pdffile = new PDFFile(buf);

        System.out.println("页数: " + pdffile.getNumPages());

        String getPdfFilePath = CheckResultConstances.PATH_PDF_PIC+ossKey;

        //目录不存在,则创建目录
        File p=new File(getPdfFilePath);
        if(!p.exists()){
            p.mkdir();
        }

        System.out.println("getPdfFilePath is  :"+getPdfFilePath);

        for (int i = 1; i <= pdffile.getNumPages(); i++) {
            // draw the first page to an image
            PDFPage page = pdffile.getPage(i);

            // get the width and height for the doc at the default zoom
            Rectangle rect = new Rectangle(0, 0, (int) page.getBBox()
                    .getWidth(), (int) page.getBBox().getHeight());

            // generate the image
            Image img = page.getImage(rect.width, rect.height, // width &
                    // height
                    rect, // clip rect
                    null, // null for the ImageObserver
                    true, // fill background with white
                    true // block until drawing is done
            );

            BufferedImage tag = new BufferedImage(rect.width, rect.height,
                    BufferedImage.TYPE_INT_RGB);
            tag.getGraphics().drawImage(img, 0, 0, rect.width, rect.height,
                    null);

            String dstName=getPdfFilePath+File.separator + i + ".jpg";
            FileOutputStream out = new FileOutputStream(dstName); // 输出到文件流
            System.out.println("成功保存图片到 :  " +getPdfFilePath+File.separator + i + ".jpg");
//
//            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
//            encoder.encode(tag); // JPEG编码


            String formatName = dstName.substring(dstName.lastIndexOf(".") + 1);
            //FileOutputStream out = new FileOutputStream(dstName);
            //JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
            //encoder.encode(dstImage);
            ImageIO.write(tag, /*"GIF"*/ formatName /* format desired */ , new File(dstName) /* target */ );


            out.close();

        }
        return getPdfFilePath;

        // show the image in a frame
        // JFrame frame = new JFrame("PDF Test");
        // frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // frame.add(new JLabel(new ImageIcon(img)));
        // frame.pack();
        // frame.setVisible(true);
    }

    public static void main(final String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                try {
                            File file = new File("/Users/David/Downloads/test.pdf");
                   new Pdf2Pic().splitPic("123",file);
                } catch (IOException ex) {
                    ex.printStackTrace();
                }
            }
        });
    }

}

  

 

pom.xml依赖配置(将附件中的该jar包上传到nexus内部仓库):

<dependency>
	<groupId>com.sun.pdfview</groupId>
	<artifactId>pdfrenderer</artifactId>
	<version>0.9.0</version>
</dependency>

 

参考:

https://my.oschina.net/shma1664/blog/270513

http://superich2008.iteye.com/blog/2047830

分享到:
评论

相关推荐

    java将PDF文件转成png图片格式

    本示例中,我们探讨的是如何使用Java编程语言将PDF文件转换为PNG图片格式。这在很多场景下非常有用,比如网页预览、移动端展示或者进行图像处理等。Java通过库如iText7提供了这样的功能。 iText7是一个强大的PDF...

    java URL转PDF文件

    在Java编程环境中,将一个URL链接的内容转换为PDF文件是一个常见的需求,这通常涉及到网络请求、HTML解析以及PDF生成等多个步骤。以下是一个详细的步骤指南,涵盖了这个过程中的关键知识点: 首先,我们需要处理URL...

    java 把PDF转换成BASE64

    此外,如果需要解码回原始的PDF文件,可以使用`Base64.Decoder`进行解码,然后将结果写入一个新的文件: ```java // 假设base64String是从某个地方获取的 byte[] decodedBytes = Base64.getDecoder().decode(base64...

    JAVA将PDF转OFD 国产化必备

    1. **读取PDF文件**:使用JAVA PDF库读取PDF文件内容,包括文本、图像、表格等元素。 2. **解析PDF结构**:理解PDF文件的页面布局、字体、颜色等信息,以便在OFD中重现相同的效果。 3. **创建OFD文档结构**:根据PDF...

    java实现图片转pdf文件

    在Java编程环境中,将图片转换为PDF文件是一个常见的需求,特别是在文档管理和电子出版领域。这里,我们将探讨如何使用Java和特定库,如iText,来完成这个任务。iText是一个强大的开源库,专门用于创建和修改PDF文档...

    使用java生成pdf文件

    Java 生成 PDF 文件是开发过程中常见的一种需求,用于将数据以规范化的格式导出或打印。在本例中,我们看到使用的是 `iText` 库,这是一个强大的 Java 库,专门用于创建和修改 PDF 文档。以下是 `iText` 的核心概念...

    Java将PDF生成图片

    这些库提供了丰富的API,用于读取、解析和操作PDF文件。 2. **图像渲染**:将PDF转换为图片的关键是渲染PDF页面到图像。Apache PDFBox提供了PDDocument.drawGraphics方法,它允许我们将PDF页面渲染到Java的Graphics...

    Java实现pdf格式图片转换

    在java中通过ImageMagick安装包和im4java.jar把其他格式图片如pdf转换为PNG,JPEG等常用格式图片之间的相互转换。转换效率还可以。内有安装操作步骤及编码内容。亲测有效。 场景运用:在前端图片格式上传中,需要在...

    java显示PDF:将PDF文件转换成图片,然后显示出来

    为了在Java应用中显示PDF,通常我们会采取一种间接方法——将PDF文件转换为图片,然后在应用程序中展示这些图片。这种方法适用于那些只需要查看PDF静态内容且不需要交互功能的场景。 首先,我们需要引入必要的依赖...

    使用Java编写脚本来将PDF转换为图像,Java的PDF处理库,Apache PDFBox

    将代码保存为Java文件(例如,PDFToImageConverter.java)。然后,在命令行中使用Java编译器编译...脚本将使用Apache PDFBox库打开PDF文件并将每个页面转换为JPEG格式的图像。转换后的图像将保存在指定的输出文件夹中。

    Java将图片组合成PDF文件的方法

    1. 需要学习iText库:Java将图片组合成PDF文件的方法需要学习iText库的使用,增加了学习成本。 2. 需要图形用户界面编程:Java将图片组合成PDF文件的方法需要编写图形用户界面,增加了编程难度。 Java将图片组合成...

    JAVA实现多页PDF转一张长图图片

    在Java编程环境中,将多页PDF转换为一张长图图片是一项常见的需求,特别是在文档处理、报表可视化或在线阅读场景中。本项目利用了名为`icepdf`的开源库,其核心组件是`icepdf-core-4.3.3.jar`,这是一个强大的PDF...

    java实现PDF文件添加图片

    PDF文件添加图片是Java开发中常见的一项任务,特别是在生成报告、文档或证书等场景下,可能需要将图像插入到PDF中以增强可视化效果。这里我们将深入探讨如何使用iTextPDF库来实现在PDF中添加图片的功能。 iTextPDF...

    Java转换PDF文件

    然而,在某些情况下,我们可能需要将PDF文件转换为其他格式,例如在Java应用程序中处理数据时。Java作为一种强大的编程语言,提供了多种库和工具来实现PDF文件的转换。下面我们将深入探讨如何在Java环境中进行PDF...

    [Java]PDF转图片解决中文乱码.zip

    PDF转图片是将PDF文档转换成图像格式的过程,这在处理PDF中的中文字符时尤为重要,因为转换后的图片可以避免文字乱码问题。Java中的PDFBox库是一个强大的工具,专门用于处理PDF文档,包括将PDF转换为图像。在这个...

    java用poi转ppt为图片和用pdfbox转pdf为图片的demo

    在"java用poi转ppt为图片"的场景下,我们可以利用POI的API将PPT文件的每一页转换为图像。这样做的好处在于,可以方便地在网络上传输或嵌入到其他不支持PPT格式的应用中。转换过程通常涉及打开PPT文件,遍历每一页...

    Aspose.cad19.5+dwg使用Java转pdf

    在这个场景中,我们将聚焦于如何利用Aspose.cad 19.5版本在Java环境中将DWG(AutoCAD图形数据格式)文件转换为PDF。 Aspose.cad是一款全面的API,专门用于处理CAD文件,支持多种格式的读取、写入和转换。在这个特定...

    Java 生成pdf文件加盖公章图片,上传阿里云

    以上就是使用Java生成PDF文件并加盖公章图片,以及上传阿里云的基本步骤和涉及的关键技术点。实际开发中可能还需要根据具体需求进行调整,例如,公章的透明度、旋转角度等,都需要通过代码进行精确控制。

    PDF转换图片JPG2

    可以把pdf文件转换成jpg, gif,bmp,tiff,png 的图片格式. 可以把jpg, gif,bmp,tiff,png 的图片格式转换成pdf文件. pdf to jpg的主要特性: 1.把pdf文件转换成jpg、bmp、tiff、gif、png等等图片格式. 2.把jpg、bmp、...

Global site tag (gtag.js) - Google Analytics