Конвертировать текст в PDF - PullRequest
0 голосов
/ 15 января 2011

У меня есть огромная строка текста, которая, по-видимому, является необработанными данными для файла PDF, и мне нужно преобразовать ее обратно в PDF.

В настоящее время я читаю строку в StringBuffer, но если янадо я могу это изменить.Оттуда я попытался просто записать его в файл и изменить расширение (я действительно надеялся, что это сработало, но я вроде знал, что это не будет), я попытался перенести его в строку, а затем получить байт [] изэто и запись этого в файл или использование DataOutputStream для помещения байтов в файл.Кажется, ни один из них не работает.

Я также пытался использовать плагин iText, я пытался просто записать его в PDF-файл и также попытался прочитать текст в формате PDF, а затем скопировать его на страницустраница в новый PDF.Ни один из них не дал очень хороших результатов.

Сегодня пятница, я постучал, любые предложения будут огромной помощью!

Ответы [ 4 ]

1 голос
/ 17 января 2011

Хорошо, спустя много исследований я обнаружил, что для сохранения двоичных данных в строке, которые обычно преобразуются в кодировку Base64.По полному предположению, я расшифровал строку из Base64 и поместил байты в файл PDF, и вот, у меня был PDF, который можно было открыть!

Спасибо за ответы и надеюсь, что это поможет кому-тобудущее!

1 голос
/ 15 января 2011

PDF - это двоичный объект. Вам необходимо записать байты непосредственно в файл.

Превращение в текст, вероятно, сломает его. Начинается ли оно с %%PDF- и заканчивается %%EOF?

0 голосов
/ 15 января 2011

Правильный подход к 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);
    }
  }
}
0 голосов
/ 15 января 2011

Как вы наткнулись на эту строку? Если это необработанная строка ASCII, вам будет не хватать большого количества двоичных данных, встроенных в PDF.

Если у вас есть строка в кодировке Unicode, вы можете записать ее в файл напрямую, используя OutputStream (не Writer, поскольку вы на самом деле не хотите записывать символьные данные).

...