Конвертировать текст в 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, поскольку вы на самом деле не хотите записывать символьные данные).