Wie lade ich korrekt ein PDF herunter?



  • Hi zusammen,

    entschuldigt den wenig eindeutigen Titel. Mir fällt gerade keine bessere, kurze Problembeschreibung ein.

    Ich möchte also ein PDF [1] übertragen:

    Reader is = new InputStreamReader(url.openStream());
    FileWriter file = new FileWriter(r.getLocalPath()+"\\"+r.getFilename());
    char[] buffer = new char[256];
    int bytesRead = 0;
    while((bytesRead=is.read(buffer))!=-1) {
      file.write(buffer,0,bytesRead);
    }
    is.close();
    

    Wenn die dieses PDF mit dessen via Browser heruntergeladenen Kopie nachher vergleiche habe ich zwar zwei gleichgroße Dateien mit der selben Anzahl Seiten, aber die Seiten der vom Java-Programm heruntergeladene Kopie sind leer.

    Vergleich man diese Dateien im Hexeditor ergeben sich beispielsweise folgende Unterschiede [2]: Woher kommen diese Unterschiede? Und wie kann ich sie verhindern?

    Danke im Voraus,
    Khadgar

    P.S.: con.getContentEncoding() liefert null

    P.P.S: Sorry für die vielen Überarbeitungen. Verzweifle gerade am BBCode bei dem Versuch das PDF und die Ausgabe des Vergleichs korrekt zu verlinken:
    [1] http://www.s-inf.de/Skripte/HS/Logik.2006-SS-Giesl.(AnE).Logikprogrammierung.pdf
    [2] http://img174.imageshack.us/img174/2127/pdfvergleich7gl.gif



  • Vielleicht solltest du in Erwägung ziehen, Byte- anstatt Character-Streams zu verwenden. Ich würde hier beispielsweise mit BufferedInputStream und FileOutputStream arbeiten.



  • Vielen Dank für die Anregung. Klingt in der Tat gut 🙂



  • Und auch beachten, dass weder read noch write garantieren, dass der gesammte Buffer gelesen/geschrieben wird. Der Rückgabewert sagt, wieviels tatsächlich war.



  • Warum nimmst du keine URLConnection?

    Gruß,
    URLConnection


Anmelden zum Antworten