2016-10-12 4 views
0

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

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

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

+0

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

+0

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

ответ

1

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

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

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

#!/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-файлов и генерировать латексный файл с изображениями выставить четыре вверх, затем:

pdflatex x.tex 
evice x.pdf 

Чтобы создать PDF-файл и просмотреть его.

+0

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

+0

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

0

я нашел несколько приемлемого путь с монтажом

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

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

Смежные вопросы