0

PDF ファイルの生データと思われる膨大なテキスト文字列があり、それを PDF に戻す必要があります。

現在、文字列を StringBuffer に読み込んでいますが、必要に応じて変更できます。そこから、ファイルに書き込んで拡張子を変更しようとしました(うまくいくことを本当に望んでいましたが、うまくいかないことはちょっとわかっていました)。それをファイルに書き込むか、DataOutputStream を使用してバイトをファイルに入れます。これらのどれも機能していないようです。

また、iTextプラグインを使用してみました。それを介してpdfに書き込んでみました。また、テキストをpdfとして読み取ってから、ページごとに新しいpdfにコピーしてみました。これらのいずれも、非常に良い結果を返しませんでした。

それは金曜日の午後です。

4

4 に答える 4

2

iText アプローチは正しいものです。次のようなことができます:

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);
    }
  }
}
于 2011-01-15T03:30:34.213 に答える
1

PDFはバイナリオブジェクトです。バイトをファイルに直接書き込む必要があります。

テキストに変えることはおそらくそれを壊すでしょう。それはで始まり、%%PDF-で終わり%%EOFますか?

于 2011-01-14T22:17:18.457 に答える
1

さて、多くの調査の結果、バイナリ データを文字列に保存するには、通常は Base64 エンコーディングに変換することがわかりました。完全な推測で、Base64 から文字列をデコードし、バイトを pdf ファイルにドロップしました。見よ、開くことができる pdf がありました!

答えてくれてありがとう、これが将来誰かに役立つことを願っています!

于 2011-01-17T15:22:00.903 に答える
0

この文字列にどのように出くわしましたか?生のASCII文字列の場合、PDFに埋め込まれている大量のバイナリデータが失われます。

Unicode文字列がある場合は、OutputStreamを使用してファイルに直接書き込むことができる場合があります(実際には文字データを書き込みたくないため、Writerではありません)。

于 2011-01-15T00:42:27.937 に答える