开发者

Zoom option in PDF-Renderer library

I am checking the api of https://pdf-renderer.dev.java.net/ I want to convert the PDF to image at zoom 开发者_运维百科level 100%.

Does any one tried that?


    int widthPage  = (int)page.getBBox().getWidth();
    int heightPage = (int)page.getBBox().getHeight();

    if(page.getAspectRatio()<1){
        widthPage  =  (int)(widthPage / page.getAspectRatio() );
        heightPage =  (int)(heightPage / page.getAspectRatio() );
    }

    // get the width and height for the doc at the default zoom
    Rectangle rect = new Rectangle(0, 0, (int) widthPage, (int) heightPage);
    // 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
            );
    // save it as a file


I would suggest iText for PDF viewing. It has been pretty good for me so far.


Just change the Image dimensions. When you zoom the Image all the characters appeared in clear view if the image dimensions are high. Download 04-Request-Headers.pdf file and paste it in C drive, converted files are saved in PDFConvertedFiles folder. Jars Required PDFRenderer-0.9.0

package com.pdfrenderer.examples;

import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

import javax.imageio.ImageIO;

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

public class ConvertAllPDFPagesToImageWithDimenstions {
    public static void main(String[] args) {
        try {
            String sourceDir = "C:/04-Request-Headers.pdf";// PDF file must be placed in DataGet folder
            String destinationDir = "C:/PDFConvertedFiles/";//Converted PDF page saved in this folder

    File sourceFile = new File(sourceDir);
    File destinationFile = new File(destinationDir);

    String fileName = sourceFile.getName().replace(".pdf", "");
    if (sourceFile.exists()) {
        if (!destinationFile.exists()) {
            destinationFile.mkdir();
            System.out.println("Folder created in: "+ destinationFile.getCanonicalPath());
        }

        RandomAccessFile raf = new RandomAccessFile(sourceFile, "r");
        FileChannel channel = raf.getChannel();
        ByteBuffer buf = channel.map(FileChannel.MapMode.READ_ONLY, 0, channel.size());
        PDFFile pdf = new PDFFile(buf);
        System.out.println("Total Pages: "+ pdf.getNumPages());
        int pageNumber = 1;
        for (int i = 0; i < pdf.getNumPages(); i++) {
            PDFPage page = pdf.getPage(i);

            // image dimensions 
            int width = 1200;
            int height = 1400;

            // create the image
            Rectangle rect = new Rectangle(0, 0, (int) page.getBBox().getWidth(), (int) page.getBBox().getHeight());
            BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

            // width & height, // clip rect, // null for the ImageObserver, // fill background with white, // block until drawing is done
            Image image = page.getImage(width, height, rect, null, true, true );
            Graphics2D bufImageGraphics = bufferedImage.createGraphics();
            bufImageGraphics.drawImage(image, 0, 0, null);

            File imageFile = new File( destinationDir + fileName +"_"+ pageNumber +".png" );// change file format here. Ex: .png, .jpg, .jpeg, .gif, .bmp

            ImageIO.write(bufferedImage, "png", imageFile);
            pageNumber++;

            System.out.println(imageFile.getName() +" File created in Folder: "+ destinationFile.getCanonicalPath());
        }
    } else {
        System.err.println(sourceFile.getName() +" File not exists");
    }
} catch (Exception e) {
    e.printStackTrace();
}
}
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜