4

我有一个双面文档作为两个单独的 pdf 文件——一个文档中的正面页面和第二个文档中的背面页面。

front.pdf
rear.pdf

我还将它们组合成一个文档,其中包含所有页面,但所有正面页面都位于背面页面之前。页面排序的形式是,{1,3,5,7,...,[n],2,4,6,8,...,[n-1 OR n+1]}

all.pdf

我希望编写一个可以从 Adob​​e Abrobat X Pro 内部运行的简单 javascript。理想情况下,它会计算文档的页数,all.pdf当总页数为奇数或偶数时处理这两种情况,然后将它们重新排序以使其处于原始顺序:

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

上面的小前导代码片段来自user171577在 SuperUser 在这个问题上的回答:https ://superuser.com/questions/181596/software-that-merges-pdf-every-other-page

4

4 回答 4

3

我能够从 NullUserException 完成以下建议:

该脚本需要一个由所有奇数页和所有偶数页组成的文档。它将处理有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();
于 2013-01-08T12:30:16.490 回答
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(); 
于 2013-06-10T14:20:27.543 回答
0

正如在其他一些交流中提到的,要将两个 pdf 的页面交织在一起,您可以使用 Java 控制台。

第一步是将 pdf 合并到一个文档中。我会通过突出显示这两个文件,然后右键单击其中一个来做到这一点。应该有一个“在 Acrobat 中合并支持的文件”选项。

然后,一旦它们组合在一起,打开组合文件,您要在其中运行代码

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

运行此类代码的分步详细信息是:

1)打开PDF。

2) 转到第二页。这样做可以让您注意到是否发生了更改。您不必执行此步骤,但它会有所帮助。

2) 按 Control + J

3)在弹出的窗口中,我总是转到“查看”下拉菜单,并将其设置为“脚本和控制台”。

4)在底部窗口中,替换应该阅读的文本

“Acrobat EScript 内置函数版本 10.0 Acrobat SOAP 10.0”

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

5) 按回车键一次。按两次可能会再次运行代码(您不希望这样做)。

6)检查你的pdf,看看页面是否交错。如果没有,请再次尝试第 5 步。

7) 你现在是一个 Java 向导。恭喜。

于 2014-02-14T09:16:31.903 回答
0

我遇到了同样的问题,我的扫描仪只有单面,扫描仪软件在完成自动进纸器后询问是否还有更多要扫描的内容。如果您抓住堆栈,将其翻过来并再次送入,您最终将得到一个 PDF,其中 n 页文档排列为 1f、2f、3f ... nb、(n-1)b、( n-2)b ... 1b(f=正面,b=背面,从 1 开始的页码)。根据定义,您将拥有偶数个扫描页面,用于重新排列整个内容的 javascript (小心,在这种情况下仅适用于偶数页!)是:

// rearrange the pages from single-side scanner, 0-based page# where
// pages 0 .. n/2-1 are front, pages n/2 .. n-1 are back
function Rearrange() {
    var tpn=0;      // target page number
    for (count = 0; count < this.numPages/2; count++)   { 
        this.movePage(this.numPages-1,tpn);
        tpn=tpn+2;
    }
}
Rearrange();
于 2021-03-30T21:44:59.393 回答