2013-04-25 59 views
1

The PDF standard观众的喜好指出,它应该可以在一个PDF,它允许设置用户将如何看待这个文件设置“观众的口味。”如何更改一个PDF

有没有免费的命令行工具或完全开源库(所以没有限制/许可的库,例如iText的),可以用来做这个?我发现的是BeCyPDFMetaEdit,它是一个Windows工具。

+1

你可以写任何一个小的Java或利用iText和iTextSharp的改变观众的喜好小C#程序。 – 2013-04-25 06:13:51

+0

谢谢,但一定是以前做过的? – user1914292 2013-04-25 06:45:22

回答

2

这里是你如何能与PDF::API2 Perl包(这是免费的),做到这一点:

use PDF::API2; 

$pdf = PDF::API2->open("old.pdf"); 

$pdf->preferences(
     -centerwindow => 1, 
     -fitwindow => 1, 
     -hidetoolbar => 1, 
     -hidemenubar => 1, 
     ); 

$pdf->saveas('new.pdf'); 
+0

真棒 - 谢谢一堆!点是你的,但我需要找到一种方法来移动它们,因为我不小心将它们授予了错误的答案。页面滚动是一个b#$&1 – user1914292 2013-04-28 10:36:21

+0

错误的答案是什么?对我来说,看起来赏金根本没有被授予。 – mzjn 2013-04-28 14:10:51

+0

它被授予,但答案被删除 - 我认为这是因为我标记了这个问题,并报告说我想把奖励移交给你。你可以看到我的代表在我的历史记录中已经失去了积分... – user1914292 2013-04-28 14:14:08

2

我想你没有得到的回答这个问题,因为它不是在FAQ on StackOverflow的背景下,真正的问题。关于SO的问题应该是您尝试某件事时遇到的技术问题。询问“你能给我一个样品吗?”并不总是被接受。你冒险得到一个反问题:“你有什么尝试?”

这就是说,回应你的评论:“这肯定是以前做过的吗?”:当然有!我没有马上回答,因为我没有时间,而且因为你的问题的答案是不容易的。我认为你会自己找到答案,没有任何问题。

PdfReader reader = new PdfReader("test.pdf"); 
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("test_changed.pdf")); 
stamper.setViewerPreferences(PdfWriter.CenterWindow | PdfWriter.FitWindow); 
stamper.addViewerPreference(PdfName.PRINTSCALING, PdfName.NONE); 
stamper.addViewerPreference(PdfName.NUMCOPIES, new PdfNumber(3)); 
stamper.close(); 
reader.close(); 

你把现有的PDF与PdfReader,你把它复制到改变PDF与PdfStamper。您可以使用setViewerPreferences()方法或addViewerPreference()方法。如果您按照这些方法提供的链接,您会看到可能的查看器首选项的概述。

这是一个iText(Java)示例;将它改为iTextSharp(C#)的例子就是在这里和那里将一些小写变为大写。

免责声明:我iText的软件公司的CEO。我也是iText的原创开发人员,也是“iText in Action”书籍的作者。

+0

对不起,我的问题还不够清楚。我确实很彻底地搜索了网页,但只找到了付费产品或Windows产品。没有命令行工具,也没有完全开源的库。虽然您的答案有帮助,但它受到与我所寻找的不同许可证的约束。赏金在那里的原因,是因为这个问题得到了如此少的关注 - 不是因为(恕我直言)我没有像疯狂的搜索网络... – user1914292 2013-04-27 13:26:56

+0

在这种情况下,你可以澄清你的问题,添加你要找的免费的午餐。这将避免像我这样的人浪费宝贵的时间;-) – 2013-04-27 13:38:11

+1

即使您的产品是伟大的,在一切公平 - stackoverflow是不仅仅是促进您的产品... – user1914292 2013-04-28 10:34:22