Konvertieren der ausgewählten pageNumber
aus PDF-Datei 46_2.pdf in Bildformat 46_2.png mit den gewünschten Abmessungen. Die Auflösung des Bildes ist erhöht.
So konvertieren Sie einzelne PDF-Seite in Png oder JPEG-Bildformat mit Auflösung.
Code:
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();
}
}
}
OutPut: konvertierte Dateien werden in C:\PDFCopy\Converted
Ordner gespeichert. Unter einem steht die Konsolenausgabe.
46_2_1.png File created in: C:\PDFCopy\Converted
Dank Jeff Friesen auf der Grundlage Ihrer example von JRebel habe ich versucht, es in pdfrenderer
Eine andere Lösung:
Wie alle PDF-Seiten konvertieren in PNG/JPEG/JPG/GIF/BMP-Bild Format mit Auflösung in Java mit PDF-Renderer. Datei konvertiert werden 04-Request-Headers.pdf
Code:
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();
}
}
}
OutPut: Alle Dateien werden in C:/Documents/Converted/
Ordner gespeichert. Unter einem ist Konsole Ausgang
Total Pages: 13
04-Request-Headers_1.png File created in Folder: C:\Documents\Converted
04-Request-Headers_2.png File created in Folder: C:\Documents\Converted
04-Request-Headers_3.png File created in Folder: C:\Documents\Converted
04-Request-Headers_4.png File created in Folder: C:\Documents\Converted
04-Request-Headers_5.png File created in Folder: C:\Documents\Converted
04-Request-Headers_6.png File created in Folder: C:\Documents\Converted
04-Request-Headers_7.png File created in Folder: C:\Documents\Converted
04-Request-Headers_8.png File created in Folder: C:\Documents\Converted
04-Request-Headers_9.png File created in Folder: C:\Documents\Converted
04-Request-Headers_10.png File created in Folder: C:\Documents\Converted
04-Request-Headers_11.png File created in Folder: C:\Documents\Converted
04-Request-Headers_12.png File created in Folder: C:\Documents\Converted
04-Request-Headers_13.png File created in Folder: C:\Documents\Converted
was passiert, wenn doppelte Breite und Höhe des Bildes. Wird das nicht die doppelte Auflösung liefern? – geedubb
@geedubb nach Änderung der Breite und Höhe Bildgröße ist erhöht, aber die Auflösung ist gleich. Wenn wir die Auflösung automatisch erhöhen, ändern sie ihre Höhe und Breite. – pudaykiran
Um .. willst du automatisch die Auflösung eines Pixelbildes erhöhen? Sie wissen, dass die "Bildverbesserung" -Funktionen, die Sie in "CSI" sehen, gefälscht sind, nicht wahr? – usr2564301