我有一个Bash脚本,可以将文本水印写入PDF文件。它通过使用Ghostscript生成叠加PDF然后使用PDFtk将叠加层标记到原始上来实现。
所有这一切都很完美,除了Ghostscript没有正确地写出重音字符。如果我的输入文本是例如“Français”,则PDF上的输出将是“Fran§ais”。
我的Ghostscript命令行是:
/usr/local/bin/gs -q -o "${TEMPFILE}" \
-sDEVICE=pdfwrite -sPAPERSIZE=letter \
-c "60 23 moveto 0.32 0.23 0.22 setrgbcolor /Helvetica-Oblique findfont 9 scalefont setfont (${WATERMARK}) show"
$WATERMARK
变量包含要写入的单行文本。运行包含此行的Bash脚本时以及直接运行此命令时都会出现此问题。
我在Mac OS X上使用Ghostscript 9.06(通过Homebrew安装)和Ubuntu 12.04上的9.05(从Ubuntu软件包库安装)看到了这个问题。 Bash脚本和gs命令行都是由其他人编写的;我自己没有使用Ghostscript的经验。
更改字体对问题没有影响,我一直无法谷歌与此相关的任何有用的东西。我们在这里做错了什么?
感谢。
答案 0 :(得分:1)
您还没有正确编码字体(或根本没有)。
您假设代表名为ccedilla的字形的字符代码与您计算机系统上的字体相同。对于拉丁字体和最多127的ASCII字符,这通常是正确的,对于超出通常不是的字符,对于非拉丁语言(例如俄语,阿拉伯语,CJKV语言等),它不是。确实如此。
编码字体并不难,但是进入这里相当冗长,所以让我推荐一下Acumen培训的John Deubert撰写的优秀系列文章,你可以在这里找到它们:
http://www.acumentraining.com/acumenjournal.html
出于您的目的,我建议使用2001年11月和12月的文章。