Конвертировать текст в PDF

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

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

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

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

4 ответа

Решение

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

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

Подход 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);
    }
  }
}

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

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

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

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

Другие вопросы по тегам