2012-11-09 36 views
4

我有一個雙面文檔作爲兩個單獨的pdf文件 - 一個文檔中的正面頁面和另一個文檔中的正面頁面。如何編寫JavaScript重新排序PDF文檔的頁面?

front.pdf 
rear.pdf 

我還他們組合成的所有頁面的單個文件,但所有面向後的頁面前的前置頁。該網頁排序的形式爲,{1,3,5,7,...,[n],2,4,6,8,...,[n-1 OR n+1]}

all.pdf 

我希望編寫可以從裏面的Adobe Abrobat X Pro中運行一個簡單的JavaScript。理想情況下,它只能算作文檔all.pdf的頁面,同時處理的場合時,有兩種奇數或偶數總頁數,然後重新排列它們,這樣他們在原來的順序:

page [1>3>4>2] => page [1>2>3>4] 

微小主導上面的代碼片斷是從答案通過user171577在這個問題超級用戶:https://superuser.com/questions/181596/software-that-merges-pdf-every-other-page

+0

嗨。你不能使用JavaScript。如果你可以使用Java,那麼有一個名爲iText庫的庫。你可以使用相同的。 http://api.itextpdf.com/ –

+2

@yms是的,你可以。有兩種方法可以做到這一點:你可以使用'Doc.insertPages()'將頁面從一個PDF添加到另一個PDF,或者如果你的所有頁面已經在一個PDF中,你可以使用'Doc.movePage()'來移動周圍的頁面。這裏有一個API參考鏈接:http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/js_api_reference.pdf – NullUserException

+1

@DhruvenkumarShah在Acrobat上你可以做任何你可以做的事情通過JavaScript API的GUI界面 - 包括移動頁面。 – NullUserException

回答

3

我能夠從NullUserException做到這一點以下建議:

這個腳本要求所有的OD組成的文檔d頁之後是所有偶數頁。它將處理偶數頁有n和奇數頁的n+1的情況。

我進入了一個 '文檔級JavaScript' 叫InterleavePages,用下面的代碼:

function InterleavePages() { 

var n = this.numPages; 
var nOdd = Math.floor(n/2); 
var nEven = n - nOdd; 
var x; 
var y; 
var i; 

for(i = 0; i < nEven; i++) { 
         // movePage x, toAfterPage y 
         // note page numbers are 0-indexed 
    x = nOdd + (i);  // 
    y = i * 2  ;  // 
    this.movePage(x,y); 
    } 
} 
InterleavePages(); 
1

謝謝,這是一個很大的幫助。只是想指出我發現的限制,它只能用偶數頁來書寫。雖然可能編寫更復雜的計算腳本,但我採取了簡單的方法,只是在我的17頁測試文檔的末尾添加了一個空白頁。我沒有,但是,添加一個通知,所以我不會忘記在必要時添加額外的網頁...

function InterleavePages() { 

var n = this.numPages; 
var nOdd = Math.floor(n/2); 
var nEven = n - nOdd; 
var x; 
var y; 
var i; 

app.alert({ 
cMsg: "Total pages must be an even number", 
cTitle: "Even Number of Pages Required!", 
nIcon: 1, nType: 1 
}); 

this.pageNum = 0; 

for(i = 0; i < nEven; i++) { 
         // movePage x, toAfterPage y 
         // note page numbers are 0-indexed 
    x = nOdd + (i);  // 
    y = i * 2  ;  // 
    this.movePage(x,y); 
    } 
} 
InterleavePages(); 
0

像其他交流所提到的,交織的頁作業的兩份PDF文件,可以使用Java安慰。

第一步是將pdf合併成單個文檔。我會通過突出顯示這兩個文件來做到這一點,然後右鍵單擊其中一個文件。應該有一個選項「在Acrobat中組合支持的文件」。

然後,一旦它們被組合,打開組合的文件,要在其中運行的代碼

爲(I = 0;我< = this.numPages/2-1;我++)this.movePage( this.numPages-1,this.numPages/2-I-1);

的一步一步的細節用於運行這樣的代碼是:

1)打開PDF。

2)轉到第二頁。這樣做可以讓你注意到變化是否發生。你不必做這一步,但它有幫助。

2)按Ctrl + J

3)在彈出的窗口中,我經常到「查看」下拉菜單,並將其設置爲「腳本和控制檯」。

4)在底部的窗口中,將應該讀什麼樣的文本

「的Acrobat EScript內置功能版本10.0 的Acrobat SOAP 10.0」

爲(I = 0; i < = this.numPages/2-1; i ++)this.movePage(this.numPages-1,this.numPages/2-i-1);

5)按​​回車一次。按兩次可能會再次運行代碼(您不需要)。

6)檢查你的pdf,看看頁面是否被隔行掃描。如果不是,請再次嘗試第5步。

7)您現在是Java嚮導。恭喜。