Как аннотировать PS или PDF из командной строки (Linux) без потери качества?

Есть ли какой-либо инструмент командной строки для Linux, который позволит мне аннотировать файл PS или PDF текстом или определенным шрифтом, цветом и размером без потери качества? Я попробовал конвертировать ImageMagick, и полученный PDF-файл имеет довольно низкое качество.

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

Если у кого-то есть идеи, буду рад их услышать. Спасибо, Карл


person Carl    schedule 03.12.2011    source источник


Ответы (2)


Я думаю, что лучше создать PDF-форму и заполнить ее pdftk fill_form в пакетном режиме:

$ pdftk form.pdf fill_form data.fdf output out.pdf flatten

Данные формы должны быть в формате данных форм (это просто файл XML с полем указаны имена и значения).
Обратите внимание на команду flatten. Требуется преобразовать заполненную форму в простой документ.

Другой способ — создать набор PDF-документов «с именами в определенных местах» и прозрачным фоном, а штамп pdftk над каждым из них над шаблоном:

$ pdftk template.pdf stamp words.pdf output out.pdf
person max taldykin    schedule 03.12.2011
comment
Это звучит интересно - я попытаюсь посмотреть, смогу ли я заставить это работать. - person Carl; 04.12.2011
comment
Это было как раз то, что мне было нужно! Спасибо! - person Carl; 07.12.2011

Другой способ добиться этого — взломать сам файл postscript. Раньше файлы AI были файлами postscript, и вы могли изменять их напрямую; Я уже не знаю, правда ли это. Так что, возможно, вам придется экспортировать его.

Для простоты я предполагаю, что это одна страница. Поэтому в самом конце будет единственный вызов showpage (возможно, через другое имя). Любые команды рисования, выполненные до отображения страницы, будут отображаться на странице.

Возможно, вам придется повторно инициализировать состояние графики (initgraphics), так как остальная часть документа могла оставить все это забавным, ожидая, что страница очистится до того, как кто-либо заметит.

Чтобы разместить текст, вам нужно будет установить новый шрифт (старый был признан initgraphics недействительным), измерить местоположение в точках (72 точки/дюйм, 28,3465 точки/см).

/Palatino-Roman 17 selectfont %so much prettier than Times
x y moveto
(new text) show

Чтобы сделать слияние, вы можете использовать perl: выдать начало документа как HERE-документ, построить несколько строк для написания текста программой, выпустить конец документа. Вот пример создания постскриптума с помощью PERL.

Или вы можете получить данные из командной строки (с помощью ghostscript), используя опцию -- ($gs -q -- program.ps arg1 arg2 ... argn). Эти аргументы доступны программе через массив с именем /АРГУМЕНТЫ.

Итак, скажем, у вас есть красивое изображение страшного клоуна, держащего пустой знак шириной около 1 дюйма и высотой 3 дюйма, верхний левый угол на расстоянии 4 дюйма слева и 4 дюйма снизу. Вы можете вставить этот код в программу ps непосредственно перед showpage.

initgraphics
/Palatino-Roman 12 selectfont
4 72 mul 4 72 mul moveto
ARGUMENTS {
    gsave show grestore 0 -14 rmoveto
} forall

Теперь вы можете заставить его говорить забавные вещи ($gs -- clown.ps "On a dark," "and stormy night...").

person luser droog    schedule 06.12.2011