Frage

Ich habe eine große Textzeichenfolge, die scheinbar Rohdaten für eine PDF-Datei, und ich brauche, um es in ein PDF zu machen zurück.

Zur Zeit lese ich die Zeichenfolge in einen String aber wenn ich brauchen kann ich das ändern. Von dort habe ich nur versucht, es in eine Datei und die Änderung der Erweiterung zu schreiben (ich wirklich gehofft, dass gearbeitet, aber ich wusste, irgendwie würde es nicht), ich habe es in einen String versucht nehmen dann ein Byte immer [] aus es und Schreiben, dass in die Datei oder einen Dataoutputstream mit dem Bytes in die Datei zu setzen. Keiner von ihnen schien zu arbeiten.

Ich habe auch versucht, die iText-Plugin, habe ich versucht zu schreiben es nur zu einem pdf durch das, und ich habe auch versucht, den Text als pdf lesen und kopieren sie dann Seite für Seite zu einem neuen pdf. Keiner von ihnen hat sehr gute Ergebnisse zurück.

Es ist Freitag Nachmittag, ich geklopft habe, werden alle Vorschläge eine große Hilfe sein!

War es hilfreich?

Lösung

Okay, gut nach vieler Forschung fand ich heraus, dass die binären Daten in der Zeichenfolge zu erhalten, dass normalerweise Sie es Base64-Codierung konvertieren. Auf eine vollständige Vermutung decodiert ich die Zeichenfolge aus Base64 und ließ die Bytes in die pdf-Datei, und siehe da ich ein pdf hatte, die geöffnet werden können!

Danke für die Antworten, und ich hoffe, dass dies jemand in der Zukunft hilft!

Andere Tipps

Eine PDF ist ein binäres Objekt. Sie müssen die Bytes direkt in eine Datei schreiben.

in Text Drehen wird wahrscheinlich brechen. Ist es mit %%PDF- und Ende mit %%EOF starten?

Wie kommen Sie auf diese Saite? Wenn es sich um eine Roh-ASCII-String ist, werden Sie eine große Menge von binären Daten fehlen, die innerhalb des PDF eingebettet ist.

Wenn Sie einen Unicode-String haben, können Sie in der Lage sein, sie direkt in eine Datei zu schreiben, einen Output (nicht ein Schriftsteller, wie Sie eigentlich nicht wollen, zu schreiben Zeichendaten).

Der iText Ansatz ist der richtige. Sie können etwas tun:

import java.io.*;

import com.lowagie.text.*;
import com.lowagie.text.pdf.*;

public class TextFileToPDF {

  /*
     ex. java TextFileToPDF  c:\temp\text.txt  c:\temp\text.pdf
  */
  public static void main (String [] args){
    BufferedReader input = null;
    Document output = null;
    System.out.println("Convert text file to pdf");
    System.out.println("input  : " + args[0]);
    System.out.println("output : " + args[1]);
    try {
      // text file to convert to pdf as args[0]
      input = 
        new BufferedReader (new FileReader(args[0]));
      // letter 8.5x11
      //    see com.lowagie.text.PageSize for a complete list of page-size constants.
      output = new Document(PageSize.LETTER, 40, 40, 40, 40);
      // pdf file as args[1]
      PdfWriter.getInstance(output, new FileOutputStream (args[1]));

      output.open();
      output.addAuthor("RealHowTo");
      output.addSubject(args[0]);
      output.addTitle(args[0]);

      String line = "";
      while(null != (line = input.readLine())) {
        System.out.println(line);
        Paragraph p = new Paragraph(line);
        p.setAlignment(Element.ALIGN_JUSTIFIED);
        output.add(p);
      }
      System.out.println("Done.");
      output.close();
      input.close();
      System.exit(0);
    }
    catch (Exception e) {
      e.printStackTrace();
      System.exit(1);
    }
  }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top