首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将文本转换为PDF

将文本转换为PDF
EN

Stack Overflow用户
提问于 2011-01-15 06:03:31
回答 4查看 19.6K关注 0票数 0

我有一个很大的文本字符串,显然是PDF文件的原始数据,我需要将其重新转换为PDF。

目前,我正在将字符串读取到StringBuffer中,但如果需要,我可以更改它。从那时起,我试着将它写出到一个文件中并更改扩展名(我真的希望这能行得通,但我知道这行不通),我试着把它变成一个字符串,然后从中提取一个byte[],并将它写到文件中,或者使用DataOutputStream将字节放入文件中。所有这些似乎都没有奏效。

我也试过使用iText插件,我试着把它写成pdf格式,我也试着把文本读成pdf格式,然后一页一页地复制到一个新的pdf格式。这两种方法都没有返回非常好的结果。

现在是周五下午,我很忙,任何建议都将是一个巨大的帮助!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-01-17 23:22:01

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

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

票数 1
EN

Stack Overflow用户

发布于 2011-01-15 11:30:34

iText方法是正确的。你可以这样做:

代码语言:javascript
运行
复制
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);
    }
  }
}
票数 2
EN

Stack Overflow用户

发布于 2011-01-15 06:17:18

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

转换成文本可能会破坏它。是否以%%PDF-开头并以%%EOF结尾

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4696463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档