Создать PDF из командной строки и заполнить страницу как можно большим количеством копий изображения?

367
zool

Я много искал для этого, но не смог найти решение.

Как я могу создать PDF в произвольном бумажном формате (скажем, A4) и заполнить его страницы как можно большим количеством копий изображения?

Я ищу решение для CLI, используя такие программы, как ImageMagick, Poppler, Ghostscript и тому подобное.

Мой пример использования: изменил пароль для гостей Wi-Fi в моем офисе, хотел разослать хороший PDF-файл формата А4, состоящий из плотной сетки, каждая ячейка, содержащая сетевой SSID и ключ WPA, должна быть распечатана, разрезана на части и раздана. для гостей, посещающих.

Не смог найти способ сделать это и прибегнул к вставке крошечных изображений вручную на страницу с помощью MS Word.

РЕДАКТИРОВАТЬ: как выглядели эти крошечные изображения. Просто набрал в текстовом редакторе и сделал скриншот текста.

enter image description here

Я буду менять этот пароль один раз каждые 3 месяца, поэтому мне нужно автоматизированное решение с возможностью создания сценариев. Не нужно быть идеальным, но должно быть быстрым.

1

1 ответ на вопрос

2
Pimp Juice IT

На основании размеров изображения и примера файла JPG, который вы разместили на свой вопрос, когда я щелкну на нем правой кнопкой мыши и выберу Сохранить изображение как ..., сохраненный файл отобразит список атрибутов изображения как., ,

  • Размеры: 2850 x 1237
  • Ширина: 2850 pixels
  • Рост: 1237 pixels

enter image description here

Мне удалось получить 24 из этих изображений, сжатых в один файл изображения, используя приведенные ниже методы / команды с ImageMagick, которые я опишу ниже. Хотя я не буду предоставлять логику для копирования числа «х» исходных изображений для получения ожидаемого результата, такие задачи тривиальны, и я буду считать, что вам не понадобится помощь или примеры для этой части как таковой - если это так, хотя бы просто дай мне знать.


Подробные шаги., ,

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

  1. Вы хотите, чтобы сделать несколько копий SSID и файл изображения WPA-ключ в /folderгде - то так у вас есть в общей сложности 6 изображений для запуска первой ImageMagick команды против.

  2. Когда эти 6 файлов изображений находятся в /folder, вы запустите эту команду для них, чтобы создать новый выходной файл с именем out.jpgв моем примере:

    convert /folder/*.jpg -gravity center -append /output/out.jpg 
  3. Теперь вы удалите 6 оригинальных файлов «SSID и образ ключа WPA», а затем скопируйте новый out.jpgв /folderи затем скопируйте его, пока у вас не будет 4 полных файла /folder, и затем выполните эту команду:

    convert /folder/*.jpg -gravity center +append /output/nout.jpg 
  4. Затем вы можете удалить 4 копии этих файлов, /outputкоторые вы скопировали для каждого # 3, а затем выполнить эту команду для вновь созданного nout.jpg, созданного с помощью вышеуказанной команды, чтобы получить файл в формате страницы a4:

    convert /output/nout.jpg -page a4 /output/print.jpg 
  5. Теперь распечатайте print.jpgфайл изображения и убедитесь, что он выглядит хорошо, вырезайте, вырубайте и т. Д.

    enter image description here

Примечание. Если размеры вашего изображения и тому подобное для начального изображения отличаются и не масштабируются должным образом с конечным результатом, вы захотите поиграть с числом «x» изображений на каждом шаге, на который я ссылался, а затем, как только вы запустите команда для этих изображений, вы захотите открыть соответствующие выходные файлы и проверить, можете ли вы определить число «х», которое должно быть для каждого шага. Тестирование может быть своевременным, но это еще одна тривиальная задача, которую так же легко понять.


Дополнительные ресурсы

@zool Я поиграл с опциями [`montage`] (http://www.imagemagick.org/Usage/montage/), и изображения были размытыми, поэтому я перешел к другим методам. Я также не уменьшил размер исходного файла, чтобы уменьшить его, чтобы увидеть, как разместить более мелкие изображения на одном листе, но я предполагаю, что этого будет достаточно для базовой отправной точки, по крайней мере, для того, чтобы заставить вас заняться автоматизацией в скрипт и такой для вашей задачи. Pimp Juice IT 5 лет назад 0

Похожие вопросы