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

前端之家收集整理的这篇文章主要介绍了asp.net – 使用GhostScript将PDF转换为服务器上的图像集合前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这些是我想要实现的步骤:

>在服务器上上载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应该可以解决这个问题.

原文链接:https://www.f2er.com/aspnet/251398.html

猜你在找的asp.Net相关文章