Lesen Sie die PDF-Datei in Java - Keine Externen Bibliotheken

Ich habe das schreiben eine einfache Java-server in den letzten paar Wochen.

Zuerst wollte ich ein display, das das Dateisystem basierend auf wo du den server gestartet. Zum Beispiel, wenn Sie den server gestartet hat, in der src Verzeichnis auf, öffnete einen browser und ging auf localhost:5555 würden Sie sehen, die Dateien und Verzeichnisse enthalten, in src. Wäre jedem verbunden. Und ich habe das gut funktioniert.

Wenn Sie auf ein Verzeichnis, zeigt es Ihnen, Ihre Inhalte (wie ich erwähnte). Wenn Sie auf eine Datei klicken, es liest die Datei und zeigt die Datei im Klartext. Wenn Sie klicken Sie auf ein Bild, dient das Bild. Dies alles geschieht im browser, und Sie können verwenden Sie die Taste zurück, um die directory-listings oder Datei, die Sie zuvor anzeigen. Dieser funktioniert auch einwandfrei und verwendet keine externen Bibliotheken.

Dies ist der code, den ich verwende, um eine Textdatei zu Lesen (mit einem Leser):

private String readFile() {
    BufferedReader reader;
    String response = "";
    try {
        FileReader fileReader = new FileReader(requestedFile);
        reader = new BufferedReader(fileReader);
        String line;
        while ((line = reader.readLine()) != null) {
            response += line + "\n";
        }
        reader.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return response;
}

Dies ist der code, den ich verwende, um zu dienen Bilder (ein Eingabe-stream, anstelle von einem Leser):

public byte[] getByteArray() throws IOException {
    byte[] byteArray = new byte[(int) requestedFile.length()];
    InputStream inputStream;
    String fileName = String.valueOf(requestedFile);
    inputStream = new BufferedInputStream(new FileInputStream(fileName));
    int bytesRead = 0;
    while (bytesRead < byteArray.length) {
        int bytesRemaining = byteArray.length - bytesRead;
        int read = inputStream.read(byteArray, bytesRead, bytesRemaining);
        if (read > 0) {
            bytesRead += read;
        }
    }
    inputStream.close();
    FilterOutputStream binaryOutputStream = new FilterOutputStream(outputStream);
    byte [] binaryHeaders = headers.getBytes();
    byte [] fullBinaryResponse = new byte[binaryHeaders.length + byteArray.length];
    System.arraycopy(binaryHeaders, 0, fullBinaryResponse, 0, binaryHeaders.length);
    System.arraycopy(byteArray, 0, fullBinaryResponse, binaryHeaders.length, byteArray.length);
    try {
        binaryOutputStream.write(fullBinaryResponse);
        binaryOutputStream.flush();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

Was ich versuche, jetzt zu dienen PDF-Dateien. Wenn ich eine PDF-Datei in einem der Verzeichnisse und ich darauf klicken, es sollte sich öffnen, die PDF (in welchem Standard-Leser verwendet der browser).

Ich habe schon Googeln dieses Thema und versuchen, ein paar Dinge für ein oder zwei Tage, und ich kann nicht scheinen, um es zu bekommen. Ich finde es seltsam, dass wenn ich auf die PDF-Datei als mein code momentan ist, den browser so wie es scheint, ist das öffnen der PDF-Datei, jedoch kein text angezeigt. Es ist der standard-browser, PDF-viewer, wir alle sind es gewohnt zu sehen, wenn wir auf einen PDF-link. Aber es gibt keinen Inhalt. Es ist nur ein paar leere Seiten.

Kann mir jemand helfen mit diesem? Ich werde nicht verwenden eine externe Bibliothek. Ich will einfach nur, um zu verstehen, wie die PDF-Datei öffnen in Java.

Dank!

  • Öffnen Sie einfach die Datei, und übertragen Sie Sie zurück; was ist das Problem? Ohne zu wissen, was Sie eigentlich tun, ist es unmöglich zu helfen.
  • Sagen Sie, dass es gelesen werden kann, genau so, wie lese ich eine text-Datei (wie oben)?
  • PDF-Dateien sind binäre Dateien, keine text-Dateien, so kann man nicht Durcheinander mit Ihrem Inhalt (wie das hinzufügen von "\n") oder Lesen Sie es Zeile für Zeile, da gibt es kein Konzept, text, Linien gibt.
  • Weder gibt es so etwas wie einen gemeinsamen Zeichencodierung. Durch die Verwendung eines ...Leser Sie implizit davon ausgehen, es ist. Ich bin eigentlich überrascht, Sie dienen können Bilder mit deiner Methode. Und außerdem, was, wenn die Dateien sind einige Gigabyte groß, willst du Sie Lesen, wie Sie in Ihrem code, bevor wir Sie bedienen?
  • Nein, das ist nicht der code, den ich verwende, um zu dienen Bilder. Der code oben ist nur für text-Dateien. Ich bin mit einem InputStream zu Lesen, Bilder.
  • Sie sollte zeigen, die Codes tatsächlich verwendet wird, dann: wie schon andere gesagt haben, PDF != text; Sie sollte stream zurück der bytes, die Sie enthält, mehr nicht.
  • wie gesagt, ich wäre sehr überrascht, wenn u könnte gerade gelesen, dass eine PDF-Datei wie eine Textdatei... warum nicht verwenden eine externe Bibliothek...
  • Ich habe keinen code zum Lesen einer PDF-Datei. Das ist, wo meine Frage kommt. Ich habe code (oben), die ich verwende, um eine Textdatei zu Lesen. Ich war neugierig, wie das Lesen einer PDF-Datei. Offenbar erfordert die Verwendung eines InputStream (wie ich es beim Lesen Bilder).

InformationsquelleAutor rzv | 2013-01-18
Schreibe einen Kommentar