2013-04-25 64 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