Вставка пустой страницы между каждой существующей страницей в 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.

Спасибо до сих пор!

6 ответов


была также эта идея для рецензирования бумаги. Вот полный сценарий.

#!/bin/bash

if [ $# -ne 1 ]
then
  echo "Usage example: ./bashscript src.pdf"
  exit $E_BADARGS
else
  NUM=$(pdftk  dump_data | grep 'NumberOfPages' | awk '{split(,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= B=pageblanche.pdf cat $COMMSTR output 'mod_')
  (pdfnup 'mod_' --nup 2x1 --landscape --outfile 'print_')
  $(rm pageblanche.pdf && rm 'mod_')

fi

#for f in *.pdf; do ./bashscript.sh $f; done 2> /dev/null

единственная трудная часть о том, чтобы сделать это с 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-файлов.


в Windows вы можете использовать java исполняемый как

поливалентных (последняя бесплатная версия с инструментами, включенными из следующих ссылок, текущий размещенный на sourceforge не имеет инструментов в себе; они были удалены)

java-cp \path...to\Multivalent.jar инструмент.документ pdf.Наложить-многословный-dim 1x1 - файл макета "1, b".формат PDF

Multivalent добавляет до суффикс к исходному имени файла

это добавит пустую страницу после любой страницы pdf но... также после последней страницы!!!

так как это то, что вы не хотите, вам нужно выполнить некоторые другие задачи после вызова поливалентных

это общий шаблон, который вы можете использовать для автоматизации всего процесс размещения этих дальнейших задач в пакетном файле

1. возврат страниц pdf (последняя страница становится первой)

pdftk *-up.pdf cat end-1 output reverted.pdf

2. вырезать последняя пустая страница что вы не хотите в файле ouput (это теперь первая страница вашего возвращенного формат 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

хорошо, я сделал это сам, используя 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" с тем же именем файла!


Я просто использую pdftk, но я думаю, что вы можете использовать опцию shuffle. если у вас есть notblank.pdf с n страницами (n немного большой), создайте пустой файл.pdf с 1 пустой страницей (размер можно контролировать с помощью 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-страничный пробел.pdf для создания 10-страничного бланк10.pdf, затем перетасовать с оригинальной notblank.формат PDF

п.С. я обнаружил, что использование команды multistamp дает поднимитесь к более простому решению. скажем, теперь у нас есть оригинальная N-страница notblank.pdf и 1-страничный пробел.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 и это мой первый пост. пожалуйста, поправьте меня, если я делаю что-то глупое.


Если у вас есть latex в вашей системе, то следующий скрипт может быть полезен:

#!/bin/sh

mkdir /tmp/$$
cp  /tmp/$$
d=`pwd`
cd /tmp/$$
pdftk  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.
cd $d
cp /tmp/$$/withblanks. .