我有一个很大的文本字符串,显然是PDF文件的原始数据,我需要将其重新转换为PDF。
目前,我正在将字符串读取到StringBuffer中,但如果需要,我可以更改它。从那时起,我试着将它写出到一个文件中并更改扩展名(我真的希望这能行得通,但我知道这行不通),我试着把它变成一个字符串,然后从中提取一个byte[],并将它写到文件中,或者使用DataOutputStream将字节放入文件中。所有这些似乎都没有奏效。
我也试过使用iText插件,我试着把它写成pdf格式,我也试着把文本读成pdf格式,然后一页一页地复制到一个新的pdf格式。这两种方法都没有返回非常好的结果。
现在是周五下午,我很忙,任何建议都将是一个巨大的帮助!
发布于 2011-01-17 23:22:01
好的,经过大量的研究,我发现要保存字符串中的二进制数据,通常需要将其转换为Base64编码。根据一个完整的猜测,我解码了Base64中的字符串,并将字节放入pdf文件中,您瞧,我有一个可以打开的pdf!
谢谢你的回答,我希望这对将来的人有帮助!
发布于 2011-01-15 11:30:34
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-15 06:17:18
PDF是一个二进制对象。您需要将字节直接写入文件。
转换成文本可能会破坏它。是否以%%PDF-开头并以%%EOF结尾
https://stackoverflow.com/questions/4696463
复制相似问题