Як перетворити PDF з 1 сторінки на 2 сторінки на аркуші PDF?


44

Я хотів би роздрукувати PDF так, щоб на передній частині першої сторінки були перші дві сторінки, на звороті - 3-я та 4-я і так далі.

-----------------          -----------------
|       |       |          |       |       |
|       |       |          |       |       |
|   1   |   2   |          |   3   |   4   |    . . .
|       |       |          |       |       |
|_______|_______|          |_______|_______|

 page 1 - front             page 1 - back

Оскільки мій принтер, що використовує Linux, не підтримує дуплексну друк вручну, я б міг подумати, що я можу редагувати PDF у відповідний спосіб.

Але як?


Я не думаю, що це можливо, у вас є лише pdf?
Майкл К

Це можливо в Linux за допомогою pstops з пакету psutils та / або pdftk. Яку операційну систему ви працюєте?
rems

@ Ivo Flipse: har, я думав точно так само :) так, ваш коментар також отримує +1.
акіра

@Ivo Flipse, @rems: Ви можете подати більше ASCII мистецтва тут: superuser.com/questions/54054/… та superuser.com/questions/235074/… ... @mokasin: ці посилання можуть дати вам уявлення, як вирішити завдання, яке ви попросили.
Курт Пфайфл

Відповіді:


23

Окрім згаданого, PDFjam включає інструмент командного рядка, pdfnupякий робить це. (Він використовує пакет pdfpages для PDFLaTeX під ним, який ви також можете використовувати.)

Якщо ви віддаєте перевагу графічний інтерфейс, jPDFtweak - це інший варіант.


Ідеально. Тільки те, що я шукав.
мокасин

1
Приклад використання: pdfnup --nup 2x1 mypdf.pdf. Це друкує 2 сторінки поруч на аркуші на ландшафтному поданні, який слід надрукувати перевернутим по короткому краю. Дивіться man pdfnupще кілька деталей.
Габріель Степлес

Я також вирішив додати відповідь: як перетворити 1-pg pdf у пейзажний вигляд з двома копіями його, що дублюються на одній сторінці (чудово для друку флаєрів): superuser.com/a/1452008/425838
Габріель Скоби

24

Використовуйте pdfnup:

$ pdfnup file.pdf

Це створить новий pdf-файл точно так, як ви просили.


pdfnup показує параметри командного рядка, що використовуються з pdfjam, і тому ви можете налаштувати звідти. (напр .: якщо ви не хочете мати пейзаж. ви можете вилучити опцію --landscape при дзвінку у pdfjam)
Тревор Бойд Сміт

6
Точніше pdfnup --nup 2x1 --suffix test file.pdfстворимо file-test.pdfз 2 сторінок у 1.
лолеск

1
sudo apt install texlive-extra-utilsвстановити ці утиліти на Ubuntu.
Сарк

У мене є одна сторінка a4, яку я хочу надрукувати у двох примірниках a5 на аркуші. Як я це досягну? Приклади використання 'pdfnup' вище не дублює першу сторінку, а натомість робить другу частину a5 першого аркуша a4 порожнім.
Nordlöw

2

Це питання досить старе, щоб думати, що варіанти, які ми мали, на той час були відсутні, але, можливо, воно заслуговує на сучасне рішення.

Переглядачі PDF-файлів Linux зазвичай використовують параметри / властивості друку для встановлення макета сторінки, і там ви можете друкувати кілька сторінок на аркуші / стороні. Ідея полягає в тому, щоб використовувати їх для друку для подання у форматі PDF .

Evince може це зробити, також qpdfview . Більше тут.


qpdfview

введіть тут опис зображення

введіть тут опис зображення


Виправдати

введіть тут опис зображення


Переглядач PDF Studio

введіть тут опис зображення

Інші глядачі PDF-файлів повинні мати подібні параметри.


1

Існують безкоштовні та відкриті засоби з командним рядком з відкритим кодом для перетворення файлів у формати читачів, розповсюдження буклетів тощо.

Я втратив додаток, яким я користувався, тому ніякої допомоги там немає, але від швидкого пошуку я бачу програму під назвою pdfshuffler ( http://sourceforge.net/projects/pdfshuffler/ ), яка може бути те, що вам потрібно. Має gui, тому, швидше за все, не буде автоматичним, але це передній план для іншого інструменту ...


0

Якщо у вас є інструмент для друку у файл. друк у файл із двома сторінками на налаштуваннях сторінки та з непарними сторінками. повторити процес з рівними сторінками. Тепер надрукуйте непарні, переверніть надруковані папери та роздрукуйте файл парних сторінок.


0

@mokasin: Ви не сказали, який читач PDF використовуєте. Якщо ви використовуєте версію Linux Acrobat / Adobe Reader: є можливість надрукувати "2-up" прямо в діалоговому вікні друку. Ви також можете роздрукувати лише непарні або парні сторінки, тому поєднання цього допоможе вам досягти бажаного результату.


0

Це програмне забезпечення, яке я перевірив на операційній системі Solaris 11.2, може створити таку схему, яку називають 2-ою, звичайно використовується для роздачі в аудиторії чи на засіданнях. Можливе виготовлення інших схем; наприклад, роздача з 3 або 4 або більше сторінок на одному аркуші або з обох боків аркуша. Його можна запустити з терміналу, оскільки це файл JAR, або просто запустити графічний інтерфейс для зручності доступу. Окрім Solaris, інші дистрибутиви Linux також сумісні, і це програмне забезпечення працює як "виконуваний файл" з привілеями суперкористувача. Зауважте, що не використовуєте "Відкрити архів". Він також працює на будь-яких Windows та Mac, де вже встановлено середовище виконання Java (JRE), як це відбувається у більшості випадків. Програмне забезпечення є програмою Dysprosium Imposition і є безкоштовною для завантаження та використання.


0

Для всіх, хто хоче взяти 1 або 2 pg pdf та перетворити його у pdf із 2-ма копіями цього поруч у ландшафтному вигляді ( відмінно підходить для друку флаєрів ), зробіть:

  1. Перетворіть вхід 1 або 2 pg pdf у вихід, який містить копію цих сторінок (1-pg pdf -> 2-pg pdf, 2-pg pdf -> 4-pg pdf тощо):

    pdfunite in.pdf in.pdf out.pdf
    
  2. Поєднайте цей копіюваний pdf-файл у форматі PDF у форматі 2-сторінка на сторону-у-пейзаж, для друку флаєрів, наприклад:

    pdfnup out.pdf
    

Або все в одному рядку:

pdfunite in.pdf in.pdf out.pdf && pdfnup out.pdf

Зверніть увагу, що out.pdfце вхід до pdfnup. Отриманий вихідний файл від pdfnupбуде називатися " out-nup.pdf ".

Також перегляньте результат pdfnupкоманди і ви побачите багатослівну форму команди, яка вона насправді виконується, що дає деяке уявлення про варіанти, які ви можете перейти до неї. Мабуть pdfnupвикористовує pdfjamпід кришкою:

pdfjam: Ефективний виклик для цього запуску pdfjam:

/usr/bin/pdfjam --suffix nup --nup '2x1' --landscape -- out.pdf -

Приклад:

Оригінальний PDF (1 звичайна сторінка у перегляді портрета), " in.pdf ": введіть тут опис зображення

Підсумковий PDF (2 стор. П. Поруч у ландшафтному вікні), " out-nup.pdf ":
- тепер можна розрізати навпіл в середині, щоб вийти як листівки введіть тут опис зображення

Проста функція Bash: make_flyer

Скопіюйте та вставте цю функцію bash в нижню частину файлу "~ / .bashrc", щоб отримати доступ до простої та простої у використанні команди make flyer:

# Description: outputs a landscape-oriented flyer pdf ("my/pdf/input--flyer.pdf") for each 1 or more pg input pdf ("my/pdf/input.pdf")
#   - 1-pg input PDFs are converted to a 1-sided landscape, printable flyer that you cut down the center to make 
#     2 flyers
#   - 2-pg input PDFs are converted to a 2-sided landscape, printable flyer (flip on short edge when printing 
#     double-sided), and also cut down the middle to make 2 flyers
#   - **3+ pg input PDFs**: using `pdfnup` directly in this case would make more sense, since this function will
#     otherwise unneccessarily create 2 copies
#   - 3 and 4-pg input PDFs are converted to a single piece of paper, double-sided, flipped on short edge, x 2 copies. 
#     No cutting is necessary
#   - 5+ pg input PDFs simply require half as much paper to print is all since you get 2 pages per side of paper;
#     they do NOT print like booklets, but rather just as a landscape-printed, flipped-on-short-edge bundle of pages
#     (like a deck of slides). You get *2 copies* per print though, so just print half the pages. 
make_flyer() {
    num_args=$# # see: https://stackoverflow.com/questions/4423306/how-do-i-find-the-number-of-arguments-passed-to-a-bash-script/4423321#4423321
    suffix="flyer"

    loop_cnt=0
    for inputpdf in "$@"
    do
        ((loop_cnt++))
        echo "==== CONVERTING PDF $loop_cnt OF $num_args ===="
        echo "     INPUT:  \"$inputpdf\""

        # Strip off the .pdf extension from the input path, while retaining the rest of the path
        # - See: https://stackoverflow.com/questions/12152626/how-can-i-remove-the-extension-of-a-filename-in-a-shell-script/32584935#32584935
        input_path_base="$(echo "$inputpdf" | rev | cut -f 2- -d '.' | rev)"
        input_file_base="$(basename "$inputpdf" .pdf)"
        temp_pdf="${input_path_base}-.pdf" # is "input_path_base-.pdf"

        echo "     OUTPUT: \"$(pwd)/${input_file_base}--${suffix}.pdf\""

        # Convert a single 1-pg pdf into a temporary 2-pg pdf
        pdfunite "$inputpdf" "$inputpdf" "$temp_pdf"

        # Lay out the temporary 2-pg pdf into a side-by-side 1-sided flyer to print; creates "input_path_base--flyer.pdf"
        # Note that `pdfnup` places the output from this operation in the location from where you call this script
        # (ie: in your `pwd` [Present Working Directory])!--NOT the location where temp_pdf is located!
        pdfnup "$temp_pdf" --suffix $suffix

        # Delete the temporary 2-pg pdf, called "input_path_base-.pdf", thereby leaving only the original 
        # "input_path_base.pdf" and the new "input_path_base--flyer.pdf"
        rm "$temp_pdf"
    done
}
alias make_flyer_help='echo -e "Ex usage: make_flyer \"path/to/inputpdf.pdf\" - Creates a landscape-side-by-side flyer version called \"inputpdf--flyer.pdf\"\n          *in your pwd* from a 1 or 2 pg input pdf called \"path/to/inputpdf.pdf\". Accepts multiple arguments. Ex:\n          make_flyer \"path/to/inputpdf1.pdf\" \"path/to/inputpdf2.pdf\""'

Приклад використання:

make_flyer "path/to/inputpdf1.pdf" "path/to/inputpdf2.pdf"

Див. Довідкову інформацію:

make_flyer_help

Вихід:

$ make_flyer_help   
Ex usage: make_flyer "path/to/inputpdf.pdf" - Creates a landscape-side-by-side flyer version called "inputpdf--flyer.pdf"  
          *in your pwd* from a 1 or 2 pg input pdf called "path/to/inputpdf.pdf". Accepts multiple arguments. Ex:  
          make_flyer "path/to/inputpdf1.pdf" "path/to/inputpdf2.pdf"

Список літератури:

  1. https://superuser.com/a/948095/425838
  2. https://stackoverflow.com/a/11280219/4561887

Пов'язані:

  1. https://askubuntu.com/questions/214538/printing-in-booklet-format/1095789#1095789

Посилання на Баш:

  1. Bash Як передавати аргументи у функцію bash: https://bash.cyberciti.biz/guide/Pass_arguments_into_a_function
  2. Bash Concatenate string: https://linuxize.com/post/bash-concatenate-strings/
  3. Bash виконує cmd, що зберігається як рядок! https://stackoverflow.com/questions/2005192/how-to-execute-a-bash-command-stored-as-a-string-with-quotes-and-asterisk
  4. Повторне повторення всіх входів до cmd: https://stackoverflow.com/questions/255898/how-to-iterate-over-arguments-in-a-bash-script/255913#255913
  5. Параметри передачі діапазону для функціонування: https://stackoverflow.com/questions/6212219/passing-parameters-to-a-bash-function/6212408#6212408
  6. Як конвертувати PDF-файл у 1 pg у флаєр [мій власний анс!]: Як конвертувати PDF з 1 сторінки в 2 сторінки на аркуші PDF?
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.