Вопрос

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

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

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

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

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

Подход 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);
    }
  }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top