Linux, объедините изображения в точный масштабированный плиточный pdf. Imagemagick? Альтернатива?

#linux #pdf #imagemagick #image-manipulation #image-gallery

#linux #PDF #imagemagick #манипулирование изображениями #изображение-галерея

Вопрос:

У меня есть большая коллекция изображений в формате jpeg с одинаковым соотношением сторон, но не обязательно с одинаковым разрешением. Мне нужно объединить их в один (или несколько) PDF-документов с несколькими изображениями, отображаемыми на странице.
Мне нужно указать целевой размер страницы (a4 / letter), и мне нужен точный контроль над конечным размером объединенных изображений.

Сценарий выглядит примерно так: «объединение списка паспортных фотографий для печати».

Я попробовал монтаж из Imagemagick, но я не могу выполнить масштабирование. Если бы все изображения имели одинаковое разрешение, я мог бы попытаться найти несколько чисел вуду и заставить его как-то работать.
Может быть, imagemagick — неправильный подход? Есть ли способ создать шаблон pdf с «слотами» x: y, которые уже имеют правильный размер для печати, а затем «вставить» изображения в эти слоты?

Комментарии:

1. Возможно, если бы вы предоставили 2-3 изображения с разными разрешениями и шаблон с ячейками, кто-нибудь мог бы помочь…

2. Я спрашивал, будет ли это лучшим подходом и как создать такой шаблон. В качестве альтернативы возиться с монтажом и преобразованием. Так что, очевидно, я не знаю, как это сделать. (По крайней мере, не в linux cmd. Я бы хотел избежать написания приложения для такой простой функции.)

Ответ №1:

Я делал что-то вроде этого pdflatex . Вы пишете крошечный скрипт на Python / Ruby / bash / что угодно, чтобы обойти ваш каталог, найдя все файлы изображений, затем для каждого набора из N выводите исходный код LaTeX, размещающий N изображений на странице. Наконец, вставьте это в pdflatex , и у вас будет хороший PDF-документ со всеми вашими встроенными изображениями. Это должно быть менее 10 строк кода плюс небольшой шаблон.

Это позволило бы вставлять изображения в их исходное разрешение и полагаться на средство рендеринга PDF для придания им размера на бумаге. Если некоторые из исходных изображений очень большие, это может быть немного расточительно. Я полагаю, вы могли бы использовать IM или эквивалент, чтобы сначала немного уменьшить размер больших файлов.

Редактировать: я сделал крошечный пример. Мой latex ужасен, я уверен, что вы могли бы написать что-то намного лучше:

 #!/usr/bin/ruby

puts <<HEADER
\documentclass[a4paper]{article}
\usepackage{relsize}
\usepackage[pdftex]{graphicx,color}
\begin{document}
HEADER

ARGV.each_slice(4).to_a.each do |images|
    puts "\begin{center}"
    puts "\thispagestyle{empty}"
    images.each {|filename| puts "\includegraphics[width=2in]{#{filename}}"}
    puts "\end{center}"
    puts "\newpage"
end

puts <<FOOTER
\end{document}
FOOTER
  

Запустите что-то вроде:

 ./layout.rb x/* > x.tex
  

Чтобы просканировать каталог x/ на наличие файлов jpg и сгенерировать файл latex с изображениями, расположенными вчетверо выше, затем:

 pdflatex x.tex
evice x.pdf
  

Чтобы сгенерировать PDF и просмотреть его.

Комментарии:

1. Это хорошая идея. Я написал так много статей и тезисов в latex, но я просто не думал об этом. Это дало бы гораздо больше контроля и позволило бы также создавать макеты без сетки. Вместо того, чтобы создавать новый исходный код для каждой страницы, я мог бы создать шаблон с фиксированными именами файлов и просто запустить скрипт для копирования и переименования изображений.

2. Я отмечу это как ответ, потому что сейчас я использую latex в качестве решения. В качестве примечания: я не создаю текстовый код из скрипта. Я создаю шаблон .tex в sth, как Texmaker, а затем использую скрипт для переключения изображений на диске или в шаблоне. Таким образом, более сложные макеты становятся управляемыми, а шаблонами легче управлять / делиться. Возможно даже быстрое и грязное переключение изображений вручную. Для смешанного решения можно запустить файл .tex через sed и заменить, например, подписи для динамических частей.

Ответ №2:

Я нашел несколько приемлемый способ с монтажом

 montage -geometry  0 0 ../*.jpg  compress -resize 198x280 -extent 198x280 -tile 3x3 -gravity center -page a4 test.pdf
  

Начиная с размера точки a4 595×842, целевой размер для плиток можно рассчитать в процентах. В примере это 1/3 страницы и сетка 3×3.
-extent гарантирует, что изображение немного меньшего размера будет масштабировано до нужного размера. Таким образом, сетка остается нетронутой, а отпечатки легче вырезать.
Этого было бы достаточно для вырезания студенческих удостоверений личности и т. Д. Но это не так точно, как хотелось бы для хороших отпечатков. Я рассмотрю подход latex и посмотрю, как это работает.

Комментарии:

1. Очень полезное предложение, сработало как шарм! Спасибо