如何提高PDF渲染器中图像的分辨率?

如何提高PDF渲染器中图像的分辨率?,第1张

如何提高PDF渲染器中图像的分辨率?

pageNumber
将从PDF文件46_2.pdf中选择的内容转换为具有所需尺寸的图像格式46_2.png。图像的分辨率随所需尺寸而增加。

如何将单个PDF页面转换为具有分辨率的png或jpeg图像格式。

码:

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 PdfToImageWithDimensions {    public static void main(String[] args) {        try {        String sourceDir = "C:/PDFCopy/46_2.pdf";// PDF file must be placed in DataGet folder        String destinationDir = "C:/PDFCopy/Converted/";//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); int pageNumber = 1;// which PDF page to be convert PDFPage page = pdf.getPage(pageNumber); // 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); System.out.println(imageFile.getName() +" File created in: "+ destinationFile.getCanonicalPath());        } else { System.err.println(sourceFile.getName() +" File not exists");        }    } catch (Exception e) {        e.printStackTrace();    }}}

输出: 转换后的文件保存在

C:PDFCopyConverted
文件夹中。下面是控制台输出

46_2_1.png File created in: C:PDFCopyConverted

感谢Jeff Friesen基于您的jRebel
示例,我在pdfrenderer中尝试过

另一个解决方案:

如何在Java中使用PDF渲染器将所有PDF页面转换为png / jpeg / jpg / gif / bmp图像格式。待转换文件04-Request-
Headers.pdf

码:

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:/documents/04-Request-Headers.pdf";// PDF file must be placed in DataGet folder String destinationDir = "C:/documents/Converted/";//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();    }}}

输出: 所有文件都保存在“

C:/documents/Converted/
文件夹”中。下面是控制台输出

Total Pages: 1304-Request-Headers_1.png File created in Folder: C:documentsConverted04-Request-Headers_2.png File created in Folder: C:documentsConverted04-Request-Headers_3.png File created in Folder: C:documentsConverted04-Request-Headers_4.png File created in Folder: C:documentsConverted04-Request-Headers_5.png File created in Folder: C:documentsConverted04-Request-Headers_6.png File created in Folder: C:documentsConverted04-Request-Headers_7.png File created in Folder: C:documentsConverted04-Request-Headers_8.png File created in Folder: C:documentsConverted04-Request-Headers_9.png File created in Folder: C:documentsConverted04-Request-Headers_10.png File created in Folder: C:documentsConverted04-Request-Headers_11.png File created in Folder: C:documentsConverted04-Request-Headers_12.png File created in Folder: C:documentsConverted04-Request-Headers_13.png File created in Folder: C:documentsConverted


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4957736.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-13
下一篇 2022-11-13

发表评论

登录后才能评论

评论列表(0条)

保存