我有一个PDF,我想要一个快速的方法来每隔一页插入一个空白页面(最后除外)。例如。我的PDF有页面
1: A
2: B
3: C
4: D
应该看起来像:
1: A
2: empty
3: B
4: empty
5: C
6: empty
7: D
有没有简单的脚本方法呢?我想过使用pdftk,但我不确切知道它是否是最简单的方法...我正在运行Windows 7。
到目前为止感谢!
答案 0 :(得分:8)
这也是审查论文的想法。这是完整的脚本。
#!/bin/bash
if [ $# -ne 1 ]
then
echo "Usage example: ./bashscript src.pdf"
exit $E_BADARGS
else
NUM=$(pdftk $1 dump_data | grep 'NumberOfPages' | awk '{split($0,a,": "); print a[2]}')
COMMSTR=''
for i in $(seq 1 $NUM);
do
COMMSTR="$COMMSTR A$i B1 "
done
$(echo "" | ps2pdf -sPAPERSIZE=a4 - pageblanche.pdf)
$(pdftk A=$1 B=pageblanche.pdf cat $COMMSTR output 'mod_'$1)
(pdfnup 'mod_'$1 --nup 2x1 --landscape --outfile 'print_'$1)
$(rm pageblanche.pdf && rm 'mod_'$1)
fi
#for f in *.pdf; do ./bashscript.sh $f; done 2> /dev/null
答案 1 :(得分:6)
这样做:
pdftk A=notblank.pdf B=blank.pdf cat A1-1 B1-1 A2-2 B1-1 A3-3 output combined.pdf
如果你想在每3页的末尾有一个空白页面,那就是这样的:
pdftk A=notblank.pdf B=blank.pdf cat A1-3 B1-1 A4-6 B1-1 A7-9 output combined.pdf
如果您最后想要一个空白页面,只需添加另一个B1-1。此外,您需要一个空白的PDF来使用,当然这适用于非空白页面,您可以乱用数字并使用2个以上的pdf。
答案 2 :(得分:1)
在Windows中,您可以使用 java 可执行文件,例如
多元(最新免费版本包含以下链接中的工具,当前托管在sourceforge上的工具本身没有工具;它们已被删除)
java -cp \ path ... to \ Multivalent.jar tool.pdf.Impose -verbose -dim 1x1 -layout“1,b”file.pdf
多价为原始文件名添加 -up 后缀
这将在pdf的任何页面之后添加一个空白页面但是......也是在最后一页之后!!!
由于这是您不想要的,因此您需要在调用多价
后执行其他一些任务这是您可以用来自动化整体的GENERAL PATTERN 将这些进一步的任务放在批处理文件中
<强> 1。还原pdf页面(最后一页成为第一页)
pdftk *-up.pdf cat end-1 output reverted.pdf
<强> 2。在输出文件中删除了您不想要的最后一个空白页(现在是您的REVERTED pdf的第一页)
pdftk reverted.pdf cat 2-end output reverted2.pdf
第3。将页面顺序再次恢复为pdf以获得原始(1,2,3等等......)页面顺序
pdftk reverted2.pdf cat end-1 output originalfilename-up.pdf
答案 3 :(得分:1)
我只是使用pdftk,但我想你可以使用shuffle选项。如果你有n个页面的nblank.pdf(n有点大),创建一个空白页面的文件blank.pdf(可以用PhotoShop或PowerPoint控制大小),然后批处理文件(比如n = 10)
@echo off
setlocal enabledelayedexpansion
set "str="
for /l %%n in (1,1,10) do (set "str=!str! A" )
pdftk A=blank.pdf cat %str% output blank10.pdf
pdftk A=notblank.pdf B=blank10.pdf shuffle A B output blanknot.pdf
基本上完成了这项工作。它首先使用1页blank.pdf创建一个10页的blank10.pdf,然后用原始的notblank.pdf进行随机播放
P.S。 我发现使用multistamp命令可以提供更简单的解决方案。说我们现在有原始的n页notblank.pdf和1页的blank.pdf(确保背景确实是白色而不是透明),那么以下命令就足够了
pdftk notblank.pdf multistamp blank.pdf output stamped.pdf
pdftk A=notblank.pdf B=stamped.pdf shuffle A B output zebra.pdf
在输出文件zebra.pdf的末尾还有一个空白页面,很容易被
删除pdftk A=zebra.pdf cat A1-r2 output zebra1.pdf
然后删除最后一个空白页。但是,输出文件的大小大约是其两倍。
我是pdftk的新手,这是我的第一篇文章。如果我做任何愚蠢的事情,请纠正我。
答案 4 :(得分:1)
如果您的系统上有乳胶,则以下脚本可能有用:
#!/bin/sh
mkdir /tmp/$$
cp $1 /tmp/$$
d=`pwd`
cd /tmp/$$
pdftk $1 burst
echo "\\documentclass[12pt]{article}" > blank.tex
echo "\\\\begin{document}" >> blank.tex
echo "\\mbox{}" >> blank.tex
echo "\\end{document}" >> blank.tex
pdflatex blank
for i in pg*.pdf; do echo -n " blank.pdf $i " >> list; done
pdftk `cat list` cat output withblanks.$1
cd $d
cp /tmp/$$/withblanks.$1 .
答案 5 :(得分:1)
Pdfjam和exiftool的使用方式类似于pdftk。您需要创建自己的blank.pdf
,以下各项才能起作用:
NUM=$(exiftool -T -PageCount input.pdf)
PDFJAM_ARG=""
for i in $(seq 1 ${NUM}); do
PDFJAM_ARG="${PDFJAM_ARG} input.pdf $i blank.pdf 1 ";
done
pdfjam -o output.pdf --fitpaper true ${PDFJAM_ARG}
答案 6 :(得分:0)
好的,我自己使用PHP和FPDI / FPDF做到了:
<?php
error_reporting(E_ALL);
require_once('fpdi/fpdf.php');
require_once('fpdi/fpdi.php');
// Format für die einzelnen Folien:
$format = 'L'; // Entweder '' (horizontal) oder 'L' (Landscape!)
// Verzeichnis lesen
foreach(glob('infiles/*.pdf') as $file)
{
$filename = basename($file);
$fileout = 'outfiles/' . $filename;
// Ausgabe-PDF
$out = new FPDI();
// Vorhandenes PDF einlesen
$pagecount = $out->setSourceFile($file);
// Alle Seiten nacheinander importieren
for($i = 1; $i <= $pagecount; $i++)
{
// Importiere Seite
$tpl = $out->importPage($i); // , '/MediaBox'
// Vorhandene Seite
$out->addPage($format);
$out->useTemplate($tpl);
if($i < $pagecount)
{
// Leere Seite anfügen (nur nicht am Ende)
$out->addPage($format);
}
}
$out->Output($fileout);
}
子目录'infiles'中的所有文件都会显示空白页面插入并保存到具有相同文件名的'outfiles'!
答案 7 :(得分:0)
这是一个带有批处理脚本的解决方案,用于获取pdf的页数,通过命令和ImageMagick创建一个blank.pdf并自动绑定它们。
用于windows下的批处理文件。
@echo off
SetLocal EnableDelayedExpansion
:: get the number of pages
:: extract info with pdftk
pdftk output.pdf dump_data | grep NumberOfPages > temp
set /p pages=<temp
:: get only the real number
set pages2=!pages:NumberOfPages: =!
del temp
:: Prepare the string sequence to merge
FOR /L %%p IN (1, 1, !pages2!) DO (
if %%p==1 (
set list=A1 B1
) else (
set list=!list! A%%p B1
)
)
:: create a blank pdf
magick convert xc:none -page A4 blank.pdf
pdftk A=output.pdf B=blank.pdf cat %list% output combined.pdf
del blank.pdf