Как я могу сделать программный оверлейный текст на файл postscript? - PullRequest
2 голосов
/ 11 сентября 2010

У меня есть некоторые графики в формате postscript, сгенерированные gnuplot. Мне нужно разместить определенную информацию на графике. Как я могу написать некоторые инструкции для этого? Я хочу написать число в верхнем правом углу графика (файл .ps).

Ответы [ 3 ]

5 голосов
/ 13 сентября 2010

Хорошо, файл примера, на который вы ссылаетесь, ведет себя хорошо (и не переопределил оператор showpage).

Итак, я предполагаю следующее:

  1. Все ваши файлы .ps аналогичны вашему файлу примера.
  2. Все ваши файлы .ps имеют размер только одну страницу (например, файлы .eps).
  3. Все ваши имена файлов похожи на gnp-NNN.ps (например, gnp-544.ps is).
  4. Номер, который вы хотите отобразить в верхнем правом углу, - NNN от имени файла.

Я также предполагаю, что у вас установлен Ghostscript, и это самая последняя версия , 8.71. Я в настоящее время на Windows - если вы на Linux / Unix, просто замените gswin32c.exe на gs и все окончания строк ^ на \.

Тестовый вывод PDF

Теперь попробуйте сначала эту команду:

gswin32c.exe ^
 -o gnp-with-number-544.pdf ^
 -sDEVICE=pdfwrite ^
 -g5030x5320 ^
 -c "/Helvetica-Italic findfont 15 scalefont setfont 453 482 moveto (544) show" ^
 -f gnp-544.ps

и посмотрите, выглядит ли полученный gnp-with-number-544.pdf так, как вы этого хотите.

-c "..." используется для передачи фрагментов PostScript в Ghostscript и его обработки вместе с основным файлом .ps, который затем должен следовать в качестве следующего параметра, с -f ....

Вы можете изменить параметры:

  • Замените /Helvetica-Italic имя шрифта на /Helvetica, /Courier, /Times, Helvetica-Bold или на все, что у вас есть и вы предпочитаете.
  • Или измените размер шрифта: 15 здесь означает 15 точек (в PDF 72 точки == 1 дюйм ).
  • Или измените положение: 453 482 перемещает текущую точку PostScript на "453 точки влево, 482 точки на вершину" (с oringin 0,0 , установленным на нижний левый угол).
  • Или настроить размер носителя: -g5030x5320 дает вам 503x532 точек (из-за разрешения по умолчанию 720 точек на дюйм, используемого -sDEVICE=pdfwrite.
  • Или установите печатаемую строку на (File No. 544) show или что хотите.

Вы также можете добавить немало параметров, чтобы настроить качество выходного файла (разрешение, внедрение шрифтов и т. Д.), Но эти подойдут пока.

Изменить на вывод PostScript

Если вам нужен вывод PostScript по какой-то причине вместо PDF, измените команду следующим образом:

gswin32c.exe ^
 -o gnp-with-number-544.ps ^
 -sDEVICE=ps2write ^
 -g5030x5320 ^
 -c "/Helvetica-Italic findfont 15 scalefont setfont 453 482 moveto (544) show" ^
 -f gnp-544.ps

Пакетное конвертирование множества файлов

Теперь, как это конвертировать? Для этого последнего шага я предполагаю:

  1. ваша схема нумерации NNN не использует ведущие 0 с.
  2. Ваш диапазон файлов для преобразования: gnp-1.ps..gnp-1000.ps.
  3. вы хотите вывод PDF с добавленными числами, а не PS.

В Windows создайте файл addnumbers-make-pdf.bat с таким содержанием:

gswin32c.exe ^
-o gnp-with-number-%1.pdf ^
-sDEVICE=pdfwrite ^
-g5030x5320 ^
-c "/Helvetica-Italic findfont 15 scalefont setfont 453 482 moveto (%1) show" ^
-f gnp-%1.ps

Теперь запустите эту команду в консоли cmd.exe:

for /l %i in (1,1,100) do (addnumbers-make-pdfvim.bat %i)

В Linux создайте сценарий addnumbers-make-pdf.sh Bash shell со следующим содержимым:

#!/bin/bash
gs \
-o gnp-with-number-${1}.pdf \
-sDEVICE=pdfwrite \
-g5030x5320 \
-c "/Helvetica-Italic findfont 15 scalefont setfont 453 482 moveto (${1}) show" \
-f gnp-${1}.ps

Теперь запустите эту команду в оболочке:

for i in $(seq 1 1000); do addnumbers-make-pdf.sh ${i} ; done

Обновление:
Ха !, это даже работает ;-) Я только что проверил это на Windows. Вот скриншот с оригиналом и наложенным файлом (в формате PDF):
alt text

3 голосов
/ 12 сентября 2010

Если у вас нет доступа к исходному файлу Gnuplot, вот стандартный метод, который работает (который вы можете написать в сценарии).Он использует Ghostscript и PDFTK .

  1. Создайте новый файл PDF, содержащий содержимое, которое вы хотите наложить на графики .ps.
  2. Конвертируйте исходящие от Gnuplot графики .ps в PDF с помощью Ghostscript.
  3. Используйте pdftk (в Unix) или pdftk.exe (в Windows) для наложения двух файлов PDF.
  4. ИспользованиеGhostscript, чтобы конвертировать PDF обратно в PS (если вам это нужно), или просто продолжать использовать PDF.

Этот ответ SuperUser содержит много деталей, которые помогут вам на этом путикак описано выше.


С помощью текстового редактора вы можете вручную вставить код PostScript, который отображает дополнительную информацию в ваших файлах .ps.

Однако я не могу дать вам рабочий фрагмент кода PS без предварительного просмотра кода PS графика.


Ghostscript вы можете создавать новые файлы PS из ваших графиков, используяединая командная строка

Попробуйте с s.th.похоже на gs -sDEVICE=ps2write -o output-with-comments-gnuplot.ps -c "570 800 moveto /Helvetica findfont 32 scalefont setfont (Number: 42) show" -f /path/to/gnuplot.ps ".

Однако я не могу точно сказать, будет ли этот фрагмент кода PS действительно работать без предварительного просмотра кода PS графика.

1 голос
/ 11 сентября 2010

Если вы можете повлиять на код gnuplot, вы можете добавить текст с помощью gnuplot. См., Например, this . Используемая команда: установить метку .

...