记事本转pdf(加水印)、转图片 三

这一步就是将添加完水印后的pdf文档转成图片格式,直接上代码吧


import  java.awt.Image;  
import  java.awt.Rectangle;  
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;  
import  javax.swing.SwingUtilities;  
import  com.sun.image.codec.jpeg.JPEGCodec;  
import  com.sun.image.codec.jpeg.JPEGImageEncoder;  
import  com.sun.pdfview.PDFFile;  
import  com.sun.pdfview.PDFPage;  
  
public   class  Pdfpicture {  
    public   static   void  setup()  throws  IOException {  
  
        // load a pdf from a byte buffer   
        File file = new  File(  
                "e://null1.pdf" );  
        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());  
  
        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 );  
            FileOutputStream out = new  FileOutputStream(  
                    "e://picture//"   
                            + i + ".jpg" );  // 输出到文件流   
            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);  
            encoder.encode(tag); // JPEG编码   
  
            out.close();  
        }  
  
        // 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  {  
                    Pdfpicture.setup();  
                } catch  (IOException ex) {  
                    ex.printStackTrace();  
                }  
            }  
        });  
    }  
  
}



说实话,程序转后的图片像素很低,效果不是很好,所以我实际过程中并没有使用程序处理,在这里推荐个很不错的小软件PDF Image Extraction Wizard 6.0专业版,网上有破解的,下一个就行了,免安装,可批量转载,效果非常好,但是转换效率比较低,两三秒转一个两页大小的pdf文档。但效果真的很不错,用程序转容易产生噪声点。


下面给出一份药品说明书的从记事本到pdf到水印到图片的截图效果给大家看看吧。

记事本转pdf(加水印)、转图片 三_第1张图片

记事本转pdf(加水印)、转图片 三_第2张图片

记事本转pdf(加水印)、转图片 三_第3张图片

记事本转pdf(加水印)、转图片 三_第4张图片

你可能感兴趣的:(记事本转pdf(加水印)、转图片 三)