Hallo Männers,
ich habe da ein Problem, wo ich jetzt schon eine ganze Zeit dran bin.
Ich mache mir in meinem Programm, ein Vorschaubild von einem PDF.
Das dient zum sortieren von Daten, wenn das PDF nicht mehr gebraucht wird, dann soll es per Button gelöscht werden.
Aber:
die PDF-Datei wird immer vom Programm verwendet und aus diesem Grund kann ich sie nicht löschen.
Es sollte doch eigentlich mit "buf.clear() channel.close() raf.close()" klappen oder gibt es da noch ein Trick 17?
Um das Vorschaubild vom PDF zu erstellen, nutze ich den "PDFRenderer".
Liebe Grüsse
ich habe da ein Problem, wo ich jetzt schon eine ganze Zeit dran bin.
Ich mache mir in meinem Programm, ein Vorschaubild von einem PDF.
Das dient zum sortieren von Daten, wenn das PDF nicht mehr gebraucht wird, dann soll es per Button gelöscht werden.
Aber:
die PDF-Datei wird immer vom Programm verwendet und aus diesem Grund kann ich sie nicht löschen.
Es sollte doch eigentlich mit "buf.clear() channel.close() raf.close()" klappen oder gibt es da noch ein Trick 17?
Um das Vorschaubild vom PDF zu erstellen, nutze ich den "PDFRenderer".
Liebe Grüsse
Java:
public void pdfToImageView(File sourceFile) {
try {
// String sourceDir = "C:/test.pdf";// PDF file must be placed in DataGet folder
// String destinationDir = "C:/";//Converted PDF page saved in this folder
// File sourceFile = new File(sourceDir);
if (sourceFile.exists()) {
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);
System.out.println("getWidth: "+ page.getWidth());
System.out.println("getHeight: "+ page.getHeight());
float w = new Float(page.getWidth());
float h = page.getHeight();
// image dimensions
int width = Math.round(w);
int height = Math.round(h);
// 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);
Image image = page.getImage(width, height, rect, null, true, true );
Graphics2D bufImageGraphics = bufferedImage.createGraphics();
bufImageGraphics.drawImage(image, 0, 0, null);
javafx.scene.image.Image image2 = SwingFXUtils.toFXImage(bufferedImage, null);
imageProperty.setValue(image2);
buf.clear();
channel.close();
raf.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}