将pdf文件的内容打印到控制台

时间:2016-06-22 14:08:39

标签: java java-7 pdfbox

我正在重新实现pdftk的一个子集(pdftk使用较新版本的pdf失败),其中一个功能就是能够将交互式pdf文件输出到命令行(用于管道目的)。我目前正在这样做

if("".equals(output)){
        File tmp=new File("tmp.pdf");
        doc.save(tmp);
        output= new String(Files.readAllBytes(Paths.get("tmp.pdf")), "UTF-8");
        tmp.delete();
}
System.out.println(output);

问题是当我把它传递给out.pdf时。并打开它,只有表单字段在新的pdf字段中。我的第一个想法是第二行是错误的,但tmp.pdf是完整的pdf文件,表明问题出在我正在阅读pdf的行。有什么建议吗?

编辑: 我找到了一种主要使用/ dev / nul或CON(os依赖)的不同方式。这种方式更好,因为它不创建临时文件,但在Windows上它不能正确管道。有什么办法使它成为管道?

if("".equals(output)){
    if("W".equals(System.getProperty("os.name").substring(0,1)))
        doc.save(new File("CON"));
    else
        doc.save(new File("/dev/stdout"));
System.out.println(output);

1 个答案:

答案 0 :(得分:1)

如评论中所述 - 您可以保存到System.out:

,而不是保存到临时文件
doc.save(System.out);

虽然我从未测试System.out是否可用于此目的并保持内容完整,但我建议您进行一些二进制测试以比较原始PDF和您获得的内容走出管道。

相关问题