13

私は PDF を持っており、2 ページごとに (最後を除いて) 空白ページをすばやく挿入する方法が必要です。たとえば、私の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 を実行しています。

これまでありがとう!

4

8 に答える 8

10

pdftk でそれを行う唯一の難しい部分は、すべてを入力することです。後世のために (誰かが少数のページを持っていて、このようにしたい場合など) pdftk でそれを行う方法を次に示します (例として 3 ページを使用)。

  1. pdftk をインストールhttp://www.pdflabs.com/docs/install-pdftk/

これを行う:

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 を使用することもできます。

于 2012-11-16T08:14:51.803 に答える
1

Windowsでは、次のようなJava実行可能ファイルを使用できます

多価(以下のリンクから含まれるツールを含む最新の無料バージョン。現在 sourceforge でホストされているものにはツール自体がなく、削除されました)

java -cp \path...to\Multivalent.jar tool.pdf.Impose -verbose -dim 1x1 -layout "1,b" file.pdf

Multivalent は元のファイル名に-upサフィックスを追加します

これにより、pdfの任意のページの後に空白のページが追加されますが ...最後のページの後にも!!!

これは望ましくないため、Multivalentを呼び出した後、他のタスクを実行する必要があります。

これは、プロセス全体を自動化し、これらの追加タスクをバッチ ファイルに入れるために使用できる一般的なパターンです。

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
于 2012-10-18T00:11:05.217 に答える
1

OK、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」に挿入および保存されます!

于 2012-10-18T09:40:30.650 に答える
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 .
于 2017-11-21T21:51:57.297 に答える
1

私はpdftkを使用していますが、シャッフルオプションを使用できると思います。n ページ (n は少し大きい) の notblank.pdf がある場合は、1 つの空白ページ (PhotoShop または PowerPoint でサイズを制御できます) を含むファイル blank.pdf を作成し、次にバッチ ファイル (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 とシャッフルします。

ps 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

次に、最後の空白ページが削除されます。ただし、出力ファイルのサイズは約 2 倍になります。

私はpdftkが初めてで、これが私の最初の投稿です。私が愚かなことをしている場合は、plsが私を修正してください。

于 2013-09-11T13:11:07.253 に答える
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}
于 2020-09-23T17:39:04.623 に答える
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
于 2021-01-27T18:01:17.553 に答える