Рейтинг:2

Как разместить несколько PDF-файлов на одной странице (например, четыре на одной / 4 на 1) с сохранением аннотаций?

флаг us

У меня есть PDF-документ (слайды) с аннотациями, выполненными ручкой. Для раздаточного материала я хочу распечатать их в формате 4-в-1, и поэтому, конечно, в том числе аннотации.

В StackOverflow есть несколько решений, объясняющих, как можно получить распечатку 4 на 1, но по умолчанию эти решения не сохраняют аннотации. Проблема здесь, по-видимому, в том, что аннотации находятся на другом слое PDF, который игнорируется в этих стандартных преобразованиях, объединяющих несколько страниц в одну.

Таким образом, вопрос заключается в том, как можно выполнить печать «несколько страниц на одну», не игнорируя/отбрасывая аннотации.

флаг us
Это совершенно правильный вопрос для Ubuntu, потому что это не похоже на «Как это сделать с помощью javascript?», Скорее, это «как сделать это с помощью инструментов, доступных в Ubuntu».
Рейтинг:5
флаг us

Описание работает для:

Убунту 21.04
pdfjam 3.03
GPL Ghostscript 9.53.3 (01.10.2020)

Я создал этот вопрос после того, как нашел решение - чтобы упростить его для других (поскольку некоторые найденные мной команды устарели и т. д.)

Ключом к поиску решения является знание того, что «сохранение» аннотаций называется «сведением», что по существу переводит слой аннотаций в «стандартный» слой (слои).

Таким образом, у нас есть три шага:

  1. сглаживание: pdf2ps -q -sOutputFile=- input.pdf | ps2pdf - вне-плоский.pdf
  2. слияние 4на1: pdfjam --nup 2x2 out-flat.pdf --outfile out-4on1.pdf --landscape

Для меня на шаге 1 был создан PDF-файл, который был значительно больше оригинала, поэтому альтернативным третьим шагом может быть сжатие:

  1. сжатие: gs -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook -q -o out-4on1-compressed.pdf out-4on1.pdf

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

Так как мне придется делать это регулярно, я создал для этого удобный скрипт. Надеюсь, это будет полезно и другим!

#!/бин/ш

# аргумент 1: входное имя файла
# аргумент 2: степень сжатия (необязательно)

# удалить окончание файла, чтобы можно было изменить имя файла
имя_файла=$(базовое имя -- "$1")
расширение = "${имя файла##*.}"
префикс = "${имя файла".*}"

# компилируем аннотации в основной слой(и)
pdf2ps -q -sOutputFile=- $1 | ps2pdf — $prefix-flattened.pdf

# поместите 4 слайда по одному на страницу, альбомный режим
pdfjam --nup 2x2 $prefix-flattened.pdf --outfile $prefix-4on1-largeFile.pdf --landscape

# сжать
gs -sDEVICE=pdfwrite -dPDFSETTINGS=/${2:-ebook} -q -o $prefix-4on1.pdf $prefix-4on1-largeFile.pdf

# удалить промежуточные файлы
rm ./$prefix-flattened.pdf
rm ./$prefix-4on1-largeFile.pdf

Не забудьте сделать исполняемый файл скрипта (например, через chmod +x 4on1-script.sh). Скрипт удаляет все промежуточные файлы.Также он создает полезное имя файла, для которого требовалось «идентифицировать» префикс файла. Его первым аргументом является имя входного файла. Его второй аргумент является необязательным и определяет качество сжатия. Значение по умолчанию — электронная книга, другие значения:

  • screen: выбирает вывод с низким разрешением, аналогичный настройке Acrobat Distiller «Screen Optimized».
  • Электронная книга: выбор среднего разрешения для вывода, аналогичного настройке «Электронная книга» в Acrobat Distiller. (выбрано здесь)
  • принтер выбирает вывод, аналогичный настройке Acrobat Distiller «Оптимизированная печать».
  • prepress выбирает вывод, аналогичный настройке Acrobat Distiller «Prepress Optimized».
  • default выбирает выходные данные, предназначенные для широкого спектра применений, возможно, за счет большего выходного файла.

Если вам нравится это решение, подумайте о том, чтобы также понравиться те, на которых я основывал это:

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.