Ich habe folgenden (ziemlich uneleganten) Weg eine PDF von einer URL auszulesen:
In der readPdf() Funktion nutze ich folgende Libary: https://pdfbox.apache.org/ .
Der Rest müsste selbsterklärend sein.
Hier meine beiden Fragen:
1. Gibt es einen eleganteren Weg, also dass ich direkt aus der von der URL kopierten Pdf ein String(array) bekomme?
2. Wie fixe ich folgenden Error, wenn ich beide Funktionen zweimal in einer anderen Funktion hintereinander laufen lasse?:
Ich dachte eigentlich, dass meine Funktionen wieder alles geschlossen hätten aber das haben sie wohl nicht.
Danke schoneinmal!
Code:
private static void getPdf(String url) throws IOException {
BufferedInputStream in = new BufferedInputStream(new URL(url).openStream());
Files.copy(in, new File(bufferFile).toPath(), StandardCopyOption.REPLACE_EXISTING);
in.close();
}
private static String[] readPdf() throws IOException {
PDFTextStripper stripper = new PDFTextStripper();
PDDocument document = new PDDocument();
String[] textArray = stripper.getText(PDDocument.load(new File(bufferFile), "schule")).split(" ");
document.close();
return textArray;
}
In der readPdf() Funktion nutze ich folgende Libary: https://pdfbox.apache.org/ .
Der Rest müsste selbsterklärend sein.
Hier meine beiden Fragen:
1. Gibt es einen eleganteren Weg, also dass ich direkt aus der von der URL kopierten Pdf ein String(array) bekomme?
2. Wie fixe ich folgenden Error, wenn ich beide Funktionen zweimal in einer anderen Funktion hintereinander laufen lasse?:
Code:
Exception in thread "main" java.nio.file.FileSystemException: C:\Users\Niklas\Desktop\Test1.pdf: Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird.
at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:86)
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102)
at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:269)
at sun.nio.fs.AbstractFileSystemProvider.deleteIfExists(AbstractFileSystemProvider.java:108)
at java.nio.file.Files.deleteIfExists(Files.java:1165)
at java.nio.file.Files.copy(Files.java:3004)
at projects.Statistics.getPdf(Statistics.java:30)
at projects.Statistics.loop(Statistics.java:52)
at projects.Statistics.main(Statistics.java:22)
Danke schoneinmal!