2016-09-18 2 views
0

хотите написать заголовок через pdf-файлы, используя ghostscript. я попробовал несколько нити этого форумаghostscript header over pdf file

can I use Ghostscript to overlay a text (fax) header onto a PDF and/or TIFF?

How can I make a program overlay text on a postscript file?

я попробовал этот код и он работает. я не могу видеть заголовок, но когда я ищу заголовок, используя функцию find, я могу видеть заголовок где-то, но его не видно.

gs \ 
-o /5/7007.pdf \ 
-sDEVICE=pdfwrite \ 
-g5030x5320 \ 
-c "/Helvetica-Italic findfont 15 scalefont setfont 453 482 moveto (544) show" \ 
-f /5/77.pdf 

и другой код

gs -dBATCH -dNOPAUSE -sDEVICE=pdfwrite \ 
-sOutputFile=/5/7007.pdf \ 
-c "/Times findfont 12 scalefont setfont 50 765 moveto (header text) show" \ 
-f /5/77.pdf 

оба кода генерируют заголовок PDF fileand также, но заголовок не виден.

моего выхода Ghostscript является

Page 2 
Page 3 
Page 4 
Page 5 
Can't find (or can't open) font file %rom%Resource/Font/Arial-ItalicMT. 
Can't find (or can't open) font file Arial-ItalicMT. 
Can't find (or can't open) font file %rom%Resource/Font/Arial-ItalicMT. 
Can't find (or can't open) font file Arial-ItalicMT. 
Didn't find this font on the system! 
Substituting font Helvetica-Oblique for Arial-ItalicMT. 
Page 6 
Page 7 
Page 8 
Page 9 
Page 10 
Page 11 

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

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

частичный список шрифтов здесь

fc-list 
Liberation Mono:style=Regular 
Utopia:style=Bold Italic 
Nimbus Sans L:style=Regular Italic 
DejaVu Serif,DejaVu Serif Condensed:style=Condensed,Book 
Hershey\-Gothic\-English:style=Regular 
URW Palladio L:style=Roman 
DejaVu Serif,DejaVu Serif Condensed:style=Condensed Bold Italic,Bold Italic 
Century Schoolbook L:style=Bold Italic 
DejaVu Serif,DejaVu Serif Condensed:style=Condensed Bold,Bold 
Liberation Sans:style=Regular 
DejaVu Sans,DejaVu Sans Condensed:style=Condensed Oblique,Oblique 
DejaVu Sans Mono:style=Bold Oblique 
Carlito:style=Italic 
Liberation Serif:style=Bold Italic 
Caladea:style=Bold 
DejaVu Serif:style=Bold Italic 
Nimbus Sans L:style=Bold 
OpenSymbol:style=Regular 
Utopia:style=Bold 
Caladea:style=Bold Italic,Italic 
Hershey\-Plain\-Duplex\-Italic:style=Regular 

ответ

1

Вам нужно добавить код, чтобы сделать пометки на странице в качестве процедуры EndPage, в противном случае вы сначала сделать отметки на «странице», а затем написать содержание файла PDF. Я предполагаю, что вы хотите сделать это наоборот, сначала напишите содержимое файла PDF, а затем напишите дополнительный контент впоследствии.

Вы также должны установить цвет, в котором должен находиться текст, иначе он будет использовать текущий цвет, который может быть белым. 0 setgray0 0 0 setrgbcolor или 0 0 0 1 setcmykcolor установит текущий цвет в черный.

Так что-то вроде:

-c "<</EndPage {0 setgray /Times 20 selectfont 453 482 moveto (544) show}>> setpagedevice" -f 

, вероятно, следует работать достаточно хорошо.

Что касается предупреждения об Arial-ItalicMT, это означает, что ваш файл PDF использует этот шрифт, но не включает его. Вы должны:

  1. Примите замену предложенную Ghostscript (Helvetica-наклонного)
  2. Поставка другой заменитель
  3. Поставка реального шрифта

Для того, чтобы сделать одну из 2 или 3 вам нужно будет изменить fontmap.GS или cidfmap, в зависимости от того, отсутствует ли его шрифт или CIDFont.

Добавить исправленный код:

-sDEVICE=pdfwrite -sOutputFile=\temp\out.pdf -c "<</EndPage {2 ne {0.5 setgray /Times 20 selectfont 453 48 moveto (Test) show pop true}{pop false} ifelse} >> setpagedevice" -f 
+0

либо он дает страницу только с заголовком или полной страницы без заголовка – Steeve

+0

Тогда вы сделали что-то не так. Вы ** должны ** получить ошибку. Я изменил код в приведенном выше редактировании, это работает для меня. – KenS

+0

входной файл будет после -f справа ????/ – Steeve