Java缩放PDF内容_PDF-Renderer库中的缩放选项

该代码示例演示如何使用PDF-Renderer库将PDF文件的每一页转换为指定尺寸的图像。通过设置宽度和高度,可以缩放PDF页面内容,并将结果保存为PNG文件。
摘要由CSDN通过智能技术生成

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

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值