有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将文本转换为PDF

我有一个巨大的文本字符串,它显然是PDF文件的原始数据,我需要将其转换回PDF

目前我正在将字符串读入StringBuffer,但如果需要,我可以更改它。从那时起,我尝试将其写入文件并更改扩展名(我真的希望这样做有效,但我知道不会),我尝试将其转换为字符串,然后从中获取一个字节[]并将其写入文件,或者使用DataOutputStream将字节放入文件中。所有这些似乎都不起作用

我也尝试过使用iText插件,我试着通过它将其写入pdf,我还试着将文本作为pdf阅读,然后将其逐页复制到新的pdf。这两种方法都没有取得很好的效果

今天是星期五下午,我很忙,任何建议都会帮上大忙


共 (4) 个答案

  1. # 1 楼答案

    你是怎么碰到这根绳子的?如果是原始ASCII字符串,则会丢失嵌入PDF中的大量二进制数据

    如果您有一个unicode字符串,则可以使用OutputStream(而不是编写器,因为您实际上不想写入字符数据)将其直接写入文件

  2. # 2 楼答案

    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);
        }
      }
    }
    
  3. # 3 楼答案

    PDF是一个二进制对象。您需要将字节直接写入文件

    变成文字可能会破坏它。它是以%%PDF-开头还是以%%EOF结尾

  4. # 4 楼答案

    好的,经过大量的研究,我发现要在字符串中保存二进制数据,通常需要将其转换为Base64编码。在一个完整的猜测中,我解码了Base64中的字符串,并将字节放入pdf文件中,瞧,我有一个可以打开的pdf

    谢谢你的回答,我希望这对将来的人有所帮助