Convert text into PDF

前端 未结 4 1470
轮回少年
轮回少年 2021-01-26 05:08

I have a huge string of text that is apparently raw data for a PDF file, and I need to make it back into a PDF.

Currently I\'m reading the string into a StringBuffer but

相关标签:
4条回答
  • 2021-01-26 05:35

    A PDF is a binary object. You need to write the bytes directly to a file.

    Turning into text will probably break it. Does it start with %%PDF- and end with %%EOF?

    0 讨论(0)
  • 2021-01-26 05:35

    How did you come across this string? If it is a raw ASCII string, you will be missing a large amount of binary data that is embedded within the PDF.

    If you have a unicode string, you may be able to write it to a file directly using an OutputStream (not a Writer as you don't actually want to write character data).

    0 讨论(0)
  • 2021-01-26 05:38

    The iText approach is the right one. You can do something like this :

    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 讨论(0)
  • 2021-01-26 05:40

    Okay, well after a lot of research I found out that to preserve the binary data in the string that typically you convert it to Base64 encoding. On a complete guess I decoded the string out of Base64 and dropped the bytes into the pdf file, and lo and behold I had a pdf that could be opened!

    Thanks for the answers and I hope this helps someone in the future!

    0 讨论(0)
提交回复
热议问题