使用 API 的 Ghostscript 字体
我对 Ghostscript 有一点疑问。我正在 .NET 中编写一个使用 Ghostscript API gs32dll.dll 的应用程序。它适用于许多 pdf 文件,但有一些有这个小电影的可以 dingbat,而 Ghostscript 会抛出一个关于没有该字体的错误。我知道我必须在 cidfmap 文件中列出该字体,但由于我没有使用 Ghostscript 的实际安装,所以我没有指向该文件的本地路径。我希望这个程序安装在多台计算机上,但我不想在这些计算机上安装完整的 Ghostscript。所以,我想知道是否可以将 cidfmap 的副本与 dll 一起放入。我想它可能会先看看它的路径。我什至对 Ghostscript 跳过该字符的转换感到很酷。我对任何想法持开放态度。
关于该计划:
我教数学。我们有这些笔记指南的 pdf 版。每章的每个部分都有两个 pdf 文件,一份有答案,一份没有答案。我正在使用 Ghostscript 将 pdf 转换为图像 (jpegs)。完成后,用户将能够使用智能板笔突出显示答案所在的区域,答案将从答案文档图像中剪切出来并粘贴到空白文档的同一位置。我计划完成后将其分发给其他数学老师。我想让程序保持独立,这样我就不必向他们解释如何安装 Ghostscript 之类的东西。我只想递给他们一个文件夹。
修订 = 900
修订日期 = 20100914
产品 = GPL Ghostscript
版权 = 版权所有 (C) 2010 Artifex Software, Inc. 保留所有权利。
GPL Ghostscript 9.00 (2010-09-14)
版权所有 (C) 2010 Artifex Software, Inc. 保留所有权利。
该软件不附带任何保证:有关详细信息,请参阅文件 PUBLIC。
处理第 1 至第 5 页。
第 1 页
第 2 页
找不到 CID 字体“ZapfDingbats”。
用 CID 字体 /Adobe-Identity 替换 /ZapfDingbats,请参阅 doc/Use.htm#CIDFont
替换。
也不提供替代 CID 字体“Adobe-Identity”。将退出 错误。
错误:/findresource 中未定义
操作数栈:
--dict:11/20(L)-- G27 1 --dict:5/5(L)-- --dict:5/5(L)-- ZapfDingbat s-Identity-H --dict:10/12(ro)(G)-- --nostringval-- CIDFontObject --dict: 7/7(L)-- --dict:7/7(L)-- Adobe-Identity 执行堆栈: %interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval- - 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- fa LSE 1 %stopped_push 1910 1 3 %oparray_pop 1909 1 3 %oparray_ 弹出 1893 1 3 %oparray_pop --nostringval-- --nostringval-- 3 1 5 --nostringval-- %for_pos_int_continue --nostringval-- --nostringval-- --nostringval-- --nostringval-- %array_continue --nostringval-- false 1 %stopped_push --nostringval-- %loop_continue --nostringval-- --nos tringval-- --nostringval-- --nostringval-- --nostringval-- --nostringval -- %array_continue --nostringval-- --nostringval-- --nostringval-- --n ostringval-- --nostringval-- %loop_continue 字典堆栈: --字典:1158/1684(ro)(G)-- --字典:1/20(G)-- --字典:82/200(L)-- --字典:82 /200(L)-- --字典:108/127(ro)(G)-- --字典:293/300(ro)(G)-- --字典:23/30(L)- - --dict:6/8(L)-- --dict:22/40(L)-- --dict:14/15(L)--
当前分配模式为本地
上次操作系统错误:没有此类文件或目录
GPL Ghostscript 9.00:不可恢复的错误,退出代码 1
I've got a bit of an issue with Ghostscript. I'm writing an application in .NET that uses the Ghostscript API, gs32dll.dll. It works just fine for a number of pdfs, but there a couple that have this little movie can dingbat, and ghostscript throws an error about not having that font. I know I have to make a listing for that font in the cidfmap file, but since I'm not using an actual install of ghostscript, I don't have local paths pointing to that file. I want this program to be installed on a number of computers, but I'd rather not install the full blown ghostscript on these computers. So, I was wondering if it would be possible to put a copy of cidfmap in with the dll. I figured it might look in its path first. I'd even be cool with ghostscript skipping the conversion of that character. I'm open to any ideas.
About the program:
I teach math. We have these note taking guides on pdf. Every section in each chapter has two pdfs, one with and one without answers. I'm using ghostscript to convert the pdfs to images (jpegs). Once finished, the user will be able to use the smartboard pen to highlight the area where an answer would be, and the answer will be cut from the answer document image and pasted on the same location of the blank document. I plan on giving this out to the other math teachers once I've finished. I'd like to keep the program self contained, so I don't have to explain to them how to install ghostscript and whatnot. I'd just like to hand them a folder.
Revision = 900
RevisionDate = 20100914
Product = GPL Ghostscript
Copyright = Copyright (C) 2010 Artifex Software, Inc. All rights reserved.
GPL Ghostscript 9.00 (2010-09-14)
Copyright (C) 2010 Artifex Software, Inc. All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Processing pages 1 through 5.
Page 1
Page 2
Can't find CID font "ZapfDingbats".
Substituting CID font /Adobe-Identity for /ZapfDingbats, see doc/Use.htm#CIDFont
Substitution.
The substitute CID font "Adobe-Identity" is not provided either. Will exit with
error.Error: /undefined in findresource
Operand stack:
--dict:11/20(L)-- G27 1 --dict:5/5(L)-- --dict:5/5(L)-- ZapfDingbat
s-Identity-H --dict:10/12(ro)(G)-- --nostringval-- CIDFontObject --dict:
7/7(L)-- --dict:7/7(L)-- Adobe-Identity
Execution stack:
%interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-
- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- fa
lse 1 %stopped_push 1910 1 3 %oparray_pop 1909 1 3 %oparray_
pop 1893 1 3 %oparray_pop --nostringval-- --nostringval-- 3 1
5 --nostringval-- %for_pos_int_continue --nostringval-- --nostringval--
--nostringval-- --nostringval-- %array_continue --nostringval-- false
1 %stopped_push --nostringval-- %loop_continue --nostringval-- --nos
tringval-- --nostringval-- --nostringval-- --nostringval-- --nostringval
-- %array_continue --nostringval-- --nostringval-- --nostringval-- --n
ostringval-- --nostringval-- %loop_continue
Dictionary stack:
--dict:1158/1684(ro)(G)-- --dict:1/20(G)-- --dict:82/200(L)-- --dict:82
/200(L)-- --dict:108/127(ro)(G)-- --dict:293/300(ro)(G)-- --dict:23/30(L)-
- --dict:6/8(L)-- --dict:22/40(L)-- --dict:14/15(L)--Current allocation mode is local
Last OS error: No such file or directory
GPL Ghostscript 9.00: Unrecoverable error, exit code 1
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在 Linux 命令行上,
在 Windows 上调用,调用
这应该会显示 Ghostscript 实例使用的搜索路径。这可以帮助您确定必须在文件夹结构中放置字体资源的位置。
您还可以使用附加 CLI 参数来覆盖任何内置搜索路径:
请注意,在 Windows Ghostscript 上可以使用正斜杠作为路径的目录分隔符。
我确信您可以以某种方式将这种调用(
-I...
)添加到您的软件中。On a Linux commanline, invoke
on Windows, invoke
This should show you the search path(s) used by your instance of Ghostscript. This may help you to determine where in your folder structure you'd have to place your font resource.
You can also use an additional CLI parameter to override any builtin search paths:
Note that on Windows Ghostscript is able to use forward slashes as directory delimiters for paths.
I'm sure you can somehow add that sort of invocation (
-I...
) to your software.将您的程序分为客户端和服务器部分怎么样?
那么一台服务器就可以安装所有的 Ghostscript 和各种字体,而访问该服务器的客户端根本不需要 Ghostscript。
也可能有助于解决许可问题,具体取决于您的情况。
回答已编辑的问题:
也许您可以将Ghostscript本地安装到程序目录中的便携式文件夹中:
看看这个论坛评论寻求灵感。我知道其他人也成功了。
How about separating your program in a client and a server part?
Then a server could have all of Ghostscript and all kinds of fonts installed on it, and the clienst accessing this server would not need Ghostscript at all.
Might help with licensing issues too, depending on your situation.
In response to edited question:
Probably you can install Ghostscript locally to a portable folder within your program drectory:
Look at this forum comment for inspiration. I know others have succeeded too.