pdf文件

时间:2016-09-18 04:49:24

标签: pdf ghostscript postscript

想使用ghostscript在pdf文件上写标题。我试过这个论坛的几个主题

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文件和标题,但标题不可见。

我的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-list列出了几种字体。我使用其中一个然后也得到类似的错误。似乎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 个答案:

答案 0 :(得分:1)

您需要添加代码以在页面上作为EndPage过程创建标记,否则您首先在“页面”上创建标记,然后编写PDF文件的内容。我假设你想以相反的方式做到这一点,先写下PDF文件的内容,然后再写下附加内容。

您还应该设置您希望文本所在的颜色,否则它将使用当前颜色,该颜色可能是白色。 0 setgray 0 0 0 setrgbcolor0 0 0 1 setcmykcolor会将当前颜色设置为黑色。

类似于:

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

应该可以运作得很好。

关于Arial-ItalicMT的警告,这意味着您的PDF文件使用该字体,但不包含该字体。你必须:

  1. 接受Ghostscript(Helvetica-Oblique)提供的替换
  2. 提供不同的替代品
  3. 提供真实字体
  4. 为了执行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