Подтвердить что ты не робот

Как я могу объединить две страницы PDF на одной странице?

Я ищу бесплатный инструмент, который позволяет повторно размещать страницы PDF-документа и объединять несколько страниц на листе. Первая часть (переустановка) легко решается многими инструментами (я использую PyPDF).

Проблема связана со вторым требованием: объединить две (или более) страницы в одну страницу. Например, возьмите две страницы (A и B), поверните их, масштабируйте и объедините на одну страницу, например,

------       ------            ------
|     |      |      |          |     |
|  A  |      |  B   |          | a   |
|     |      |      |          |     |
|     |      |      |  --->    ------
|     |      |      |          |     |        
|     |      |      |          | b   |        
|     |      |      |          |     |        
------       ------            ------

Решение должно работать на Linux, а также на Windows. Я ищу либо консольное приложение, либо библиотеку с привязками Python или Perl.

Изменить есть библиотека pdfnup, которая должна выполнять именно этот вид преобразования, и является перекрестной -платформу, однако я не могу использовать ее из-за ошибки, похожей на this.

4b9b3361

Ответ 2

Это резюме инструментов, которые я нашел для PDF (я хотел найти эквивалент psup и psbook)

  • Создание буклетов: pdfbook, pdf-tools (команда: pdfbklt)
  • Объединить файлы PDF: pdfmerge, pdfjam (команда: pdfjoin)
  • Поворот страниц: pdfjam (команда: pdf90)
  • Несколько страниц на листе: pdfjam (команда: pdfnup)
  • Создать плакаты (несколько листов на странице): pdfposter

От моего менеджера пакетов:

Создайте буклет A6:

pdfbook -2 -p a5 infile.pdf outfile.pdf

pdf-tools содержит:

  • pdfbklt: создавать буклеты
  • pdfrevert: удаляет один слой изменений в файл PDF, пытаясь максимизировать размер выходного файла (для учета линеаризованного PDF).
  • pdfstamp: добавляет заданную строку в файл .pdf для infile в данном месте, шрифте и размере.

Существует также многозначность: http://multivalent.sourceforge.net/Tools/index.html

Ответ 3

В Linux вы можете конвертировать файлы PDF в Postscript и использовать psnup. Точный способ его вызова зависит от того, как вы хотите, чтобы страницы были собраны вместе, хотите ли вы их поворачивать, какие размер (и) бумаги вы хотите использовать и т.д., Но это будет примерно так:

pdf2ps infile.pdf infile.ps
psnup -2 infile.ps outfile.ps
ps2pdf outfile.ps outfile.pdf

В зависимости от того, какие инструменты у вас есть, у вас может быть более эффективный способ сделать это. psnup, конечно, не единственный способ, но это относительно известная программа (на Linux в любом случае).

Ответ 4

Если вы используете Linux, вы можете использовать BookletImposer для размещения нескольких страниц PDF на одной странице.

Для пользователей Ubuntu этот инструмент доступен в программном центре Ubuntu.

Ответ 5

В ответ на ваш вопрос вам понадобится инструмент PDF 'Imposition', который представляет собой причудливый способ сказать инструмент, который размещает изображения PDF-страниц на определенном массиве для создания новой отдельной страницы PDF. Представьте себе что-то вроде набора газет. Вы определяете массив слотов на определенное количество столбцов в ширину на определенное количество строк в глубину на странице с определенными фиксированными размерами (в см). Затем вы заполняете эти пустые слоты сверху вниз, слева направо со страницами из pdf файла pdf. В случае OP они хотят создать одну страницу, состоящую из двух страниц 8.5x11, расположенных в массиве 1x2 (1 столбец, 2 строки). Их страницы будут опущены в массив в следующем порядке: 1,2. Таким образом, вы отбрасываете первую страницу (стр. 1 из pdf) в первый слот вашего массива (столбец 1, строка 1), и вы отбрасываете вторую страницу (стр. 2) во второй слот (столбец 1, строка 2).

Как использовать инструмент, чтобы это произошло: Загрузите старую версию Multivalent. Обратите внимание, что автор удалил хорошие классы инструментов из последней версии без объяснения причин, поэтому вам нужно использовать более старую версию. Здесь рабочая ссылка на 02/12: http://code.google.com/p/pdfsizeopt/downloads/detail?name=Multivalent20060102.jar Для простоты я переименовал файл jar в m.jar. Это само собой разумеется, что вам нужно установить JRE для этого, чтобы работать, но я его выложу. Добавьте m.jar в переменные среды пути Java Class (для сценариев) или запустите синтаксис командной строки с параметром -cp и относительным путем (показано ниже). Обратите внимание: я запускал его из командной строки в каталоге установки в моем примере ниже. Укажите абсолютный путь от root в противном случае (например, c:\1\bin\m.jar).

Вот пример, который будет точно выполнять OP: C:\1\bin > java -cp m.jar tool.pdf.Impose -dim 1x2 -verbose -papersize "21.59x55.88cm" -layout "1,2" yourfilename.pdf

Примечание. Параметр -dim создает массив в столбцах x Rows. Здесь в сантиметрах указан параметр -papersize, но если вам нужны дюймы, просто умножьте дюймы на 2,54, чтобы получить cm. Параметр -layout дает вам заказ, который вы хотите заполнить пустыми слотами в вашем массиве, заполняя сверху вниз и слева направо. В этом случае мы хотим, чтобы страница одна из pdf сверху и вторая страница внизу, поэтому наш аргумент "1,2". Последним аргументом является ваш фактический исходный файл. Когда вы закончите, инструмент выведет файл с именем yourfilename-up.pdf.

Надеюсь, что это поможет.

-Matt Zweil

Ответ 6

Проверьте исходный код PyPDF, особенно метод rotateClockwise(). Должно быть место, где написано содержание страницы. Вставьте оператор "q" (сохранить состояние) и "cm" (с правильными параметрами для матрицы масштабирования) перед содержимым и оператором "Q" (состояние восстановления).

См. PDF-документацию для объяснения операторов и структуры страницы (прокрутите вниз для некоторых полезных ссылок).

Не забудьте отправить патч в PyPDF:)

[EDIT] Вы также можете проверить pdfjam sources, которые включают в себя команду pdfnup.

Ответ 7

Это функция perl, которую я использую, чтобы захватить каталог, полный prn файлов из стороннего приложения, и создать единый объединенный pdf.

sub runMerged($)
{
    my($path) = @_;

    print "Generating merged PDFs for $path\n";

    my @files = sort(getFiles($path, ".prn\$"));
    if (scalar(@files))
    {
        open(MERGE, ">$path/merged.prn");
        for (my $i = 0; $i < scalar(@files); $i++)
        {
            print MERGE "^L\n" if ($i > 0);

            open(FN, "$path/" . $files[$i]);
            while (my $line = <FN>)
            {
                print MERGE $line;
            }
            close(FN);
        }

        chdir("$BASE_PATH/txt2pdf");
        print `./txt2pdf.pl $path/merged.prn`;
    }
}

Ответ 8

У меня была такая же потребность на этой неделе. Но мне нужно было повторить каждую страницу А4 (пейзаж) "дважды" на листе A3 (портрет), чтобы позже разрезать пополам.

Я нашел плагин Acrobat с множеством функций наложения, которые отлично подойдут для моих нужд и с полностью функциональной пробной версией 30 дней.

Надеюсь, это может быть полезно для кого-то еще.
http://www.pdfsnake.com/

Ответ 9

У меня была такая же проблема, как и вы, и вот что я сделал:

  • Извлечение всех страниц в файле pdf в виде отдельного файла
  • В irfanView (с плагинами) я создал вертикальное "панорамное" изображение
  • Перетащил файлы PDF в раздел изображений
  • Щелкнут созданный
  • "Изображение" создается со всеми страницами, которые следуют друг за другом, как одно очень длинное вертикальное изображение.
  • Вы можете экспортировать в PDF без потери качества.
  • Наслаждайтесь

Ответ 10

Здесь a script для повторения страниц (например, A5, пейзаж) дважды на листе в два раза большего размера (A4, портрет):

#!/bin/bash
INPUTFILE=$*
PAGENUM=`pdftk ${INPUTFILE} dump_data | grep NumberOfPages | cut -d : -f 2  | cut -d " " -f 2`
PAGES=`seq 1 ${PAGENUM}`
DUPAGES=`for i in ${PAGES} ; do echo $i $i | tr "\n" " " ; done`
OUTPUT1=`basename ${INPUTFILE} .pdf`.dup.pdf
OUTPUT2=`basename ${INPUTFILE} .pdf`.double.pdf
pdftk ${INPUTFILE} cat ${DUPAGES} output ${OUTPUT1}
pdfjam --nup 1x2 ${OUTPUT1} --outfile ${OUTPUT2}

Это не очень элегантно; это можно сделать без второго вызова pdftk, и он не работает с файлами, содержащими пробелы. Но он работает с многостраничными pdf файлами.

Ответ 11

Используя Adobe Acrobat XI Pro, откройте 1-й документ. Измените, выберите "сделать снимок", затем нажмите в верхнем углу того, что вы хотите скопировать, и перетащите в противоположный угол. У вас есть открытый чистый лист в Paint. Перейдите на чистый лист краски и управления V, чтобы вставить 1-й документ в чистый лист. Повторите для второго пункта, который вы хотите объединить на той же странице, за исключением того, что временно помещайте второй элемент под 1-й элемент на листе Paint. Затем перетащите второй элемент, чтобы поместить его туда, где он вам нужен, в листе краски. Сохраните файл с красками, и все готово!