加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 使用GhostScript将PDF转换为服务器上的图像集合

发布时间:2020-12-16 00:05:03 所属栏目:asp.Net 来源:网络整理
导读:这些是我想要实现的步骤: 在服务器上上载PDF文档. 使用GhostScript将PDF文档转换为一组图像(每个页面都转换为图像). 将图像集合发送回客户端. 到目前为止,我对#2感兴趣. 首先,我下载了gswin32c.exe和gsdll32.dll,并设法手动将PDF转换为图像集合(我打开cmd并
这些是我想要实现的步骤:

>在服务器上上载PDF文档.
>使用GhostScript将PDF文档转换为一组图像(每个页面都转换为图像).
>将图像集合发送回客户端.

到目前为止,我对#2感兴趣.

首先,我下载了gswin32c.exe和gsdll32.dll,并设法手动将PDF转换为图像集合(我打开cmd并运行命令下面):

gswin32c.exe -dSAFER -dBATCH -dNOPAUSE -sDEVICE=jpeg -r150 -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -dMaxStripSize=8192 -sOutputFile=image_%d.jpg somepdf.pdf

然后我想,我会把gswin32c.exe和gsdll32.dll放到我的web项目的ClientBin中,并通过一个进程运行.exe.

System.Diagnostics.Process process1 = new System.Diagnostics.Process();
process1.StartInfo.WorkingDirectory = Request.MapPath("~/");
process1.StartInfo.FileName = Request.MapPath("ClientBin/gswin32c.exe"); 
process1.StartInfo.Arguments = "-dSAFER -dBATCH -dNOPAUSE -sDEVICE=jpeg -r150 -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -dMaxStripSize=8192 -sOutputFile=image_%d.jpg somepdf.pdf"
process1.Start();

不幸的是,ClientBin中没有输出任何内容.有人知道为什么吗?任何建议都将受到高度赞赏.

解决方法

我已经尝试过你的代码,它似乎工作正常.我建议检查以下内容:

>验证somepdf.pdf是否位于gs进程的工作文件夹中,或者在命令行中指定文件的完整路径.通过执行以下操作来查看ghostscript的输出也很有用:

….
process1.StartInfo.RedirectStandardOutput = true;
process1.StartInfo.UseShellExecute = false;
process1.Start();
//读取输出
string output = process1.StandardOutput.ReadToEnd();

process1.WaitForExit();

如果gs找不到你的文件,你会在输出流中得到一个“Error:/ undefinedfilename in(somepdf.pdf)”.>另一个建议是您继续使用脚本而不等待gs进程完成并生成生成的image_N.jpg文件.我想添加process1.WaitForExit应该可以解决这个问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读