我有一个双面文档作为两个单独的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]
以上微小的主要代码段来自SuperUser在此问题中的 user171577 的回答:https://superuser.com/questions/181596/software-that-merges-pdf-every-other-page
答案 0 :(得分:3)
我能够通过NullUserException完成以下建议:
此脚本需要一个由所有奇数页面组成的文档,后跟所有偶数页面。它将处理n
偶数页和n+1
个奇数页的情况。
我输入了名为InterleavePages
的'文档JavaScript',其代码如下:
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 :(得分: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();
答案 2 :(得分:0)
正如其他一些交流中所提到的,要将两个pdfs交织在一起,您可以使用Java控制台。
第一步是将pdfs合并到一个文档中。我会通过突出显示两个文件,然后右键单击其中一个文件来完成此操作。应该有一个选项“在Acrobat中组合支持的文件”。
然后,组合它们后,打开要运行代码的组合文件
for(i = 0; i&lt; = 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&lt; = this.numPages / 2-1; i ++)this.movePage(this.numPages-1,this.numPages / 2-i-1);
5)按一次输入。按两次可能会再次运行代码(您不需要)。
6)检查pdf以查看页面是否已隔行扫描。如果没有,请再次尝试第5步。
7)您现在是一个Java向导。祝贺。
答案 3 :(得分: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();