Tag: ghostscript

当命令行调用时,Ghostscript会抑制输出窗口

这是我的情景: 我正在将PDF文件转换为通过C#调用Ghostscript的PNG图像。 这是我使用的参数字符串: -dNOPAUSE -dBATCH -dFirstPage=1 -q -r300 -sDEVICE=png256 -sOutputFile=… 但是,通过这种方式,当我调用Ghostscript时,它会显示一个窗口(在我添加-q之前)有输出消息。 我尝试在-dNODISPLAY之后添加-r300 。 但是这样Ghostscript不起作用,也不会创建图像。 问题:我可以通过哪种方式抑制输出窗口?

在Web应用程序中使用Ghostscript(PDF缩略图)

我使用ghostscriptsharp包装为c#和ghostscript。 我想用pdf文件生成缩略图。 有关示例代码的更多信息,请参见此处 。 从ghostscript-c-dll“gsdll32.dll”导入了不同的方法。 [DllImport(“gsdll32.dll”, EntryPoint = “gsapi_new_instance”)] private static extern int CreateAPIInstance(out IntPtr pinstance, IntPtr caller_handle); [DllImport(“gsdll32.dll”, EntryPoint = “gsapi_init_with_args”)] private static extern int InitAPI(IntPtr instance, int argc, IntPtr argv); //…and so on 我正在使用GhostscriptWrapper在webapplication(.net 2.0)中生成缩略图。 该类使用上面导入的方法。 protected void Page_Load(object sender, EventArgs e){ GhostscriptWrapper.GeneratePageThumb(“c:\\sample.pdf”, “c:\\sample.jpg”, 1, 100, 100); } 当我通过按“F5”键调试Visual Studio 2008中的Web应用程序时,它工作正常(生成一个新的Web服务器实例)。 当我创建一个WindowsForm应用程序时,它也可以工作。 生成缩略图。 […]

从Metro Style App c#加载C库(gsdll32.dll)

我想使用Metro Style App c#中的gsdll32.dll。 我加载DLL如下: [DllImport(“gsdll32.dll”, EntryPoint = “gsapi_delete_instance”)] private static extern void gsapi_delete_instance(IntPtr instance); [DllImport(“gsdll32.dll”, EntryPoint = “gsapi_revision”)] private static extern int gsapi_revision(ref GS_Revision pGSRevisionInfo, int intLen); [DllImport(“gsdll32.dll”, EntryPoint = “gsapi_set_stdio”)] private static extern int gsapi_set_stdio(IntPtr lngGSInstance, StdioCallBack gsdll_stdin, StdioCallBack gsdll_stdout, StdioCallBack gsdll_stderr); 但是当我尝试加载dll时没有发现exception发生。 我已经把它放在Debug文件中了。 但它确实有效。 我从这个链接中引用。

C#Ghostscript Wrapper

有没有人在C#中遇到过GhostScript的好包装器。 我的具体用途是将postscript变成pdf

如何使用Ghostscript DLL将PDF转换为PDF / A.

如何使用GhostScript DLL将PDF转换为PDF / A. 我知道我必须调用gsdll32.dll的导出函数,其名称为gsapi_init_with_args,但我如何传递正确的参数? 顺便说一下,我正在使用C#。

是什么导致Ghostscript返回-100的错误?

所以,我使用的是Matthew Ephraim的GhostscriptSharp ,它是我的ASP.Net MVC项目中非托管Win32 Ghostscript DLL的简单C#包装器。 一些背景: 我试图做的是让用户上传PDF,然后将该文档转换为图像,然后我可以保存到我选择的任何目录中(以及做一些其他OOP以将新图像绑定到我的网站) 。 我决定使用Ephraim先生的包装类(GhostscriptSharp)因为它很简单易用,它让我可以相对干净地访问DLL的API。 为了测试它,我创建了一个虚拟的C#控制台应用程序,以确保我可以加载DLL,访问它,在本地磁盘上传送PDF文件,然后让它将JPG写入同一本地磁盘。 经过一些学习经历,我获得了成功。 我会把它交给C:\ INPUT.pdf,它会递给我C:\ OUTPUT.jpg。 但是,在将我在控制台应用程序中使用的GhostScriptSharp代码集成到我的ASP.NET MVC项目中到我使用P / invoke调用DLL的位置之后,Ghostscript将返回int /错误代码-100 ,这是致命错误(在GhostScript源代码中称为E_Fatal )。 我通过HTML表单上传的文件得到了相同的结果,如果我把它与我在工作控制台应用程序中使用的完全相同的硬编码路径。 作为参考,抛出exception的行在GhostScriptSharp.cs中是93-97(在CallApi函数中): int result = InitAPI(gsInstancePtr, args.Length, args); if (result < 0) { throw new ExternalException("Ghostscript conversion error", result); } 显然抛出了exception,因为result是-100 。 当调用InitAPI时,实例ptr是一个有效的int (虽然我不知道GS的实例是否正确),args的长度为20(是一个string[] )的有效GhostScript选项(包括正确转义到我的输入和输出文件的路径)。 长话短说,我做错了什么? 错误代码-100似乎是一个全能,因为没有文档说明这里可能出错的地方。 非常感谢任何帮助,谢谢你提前。

Ghostscript转换PDF并输出文本文件

1.我需要将PDF文件转换为txt.file。 我的命令似乎工作,因为我在屏幕上获得转换后的文本,但不知何故,我无法将输出定向到文本文件。 public static string[] GetArgs(string inputPath, string outputPath) { return new[] { “-q”, “-dNODISPLAY”, “-dSAFER”, “-dDELAYBIND”, “-dWRITESYSTEMDICT”, “-dSIMPLE”, “-c”, “save”, “-f”, “ps2ascii.ps”, inputPath, “-sDEVICE=txtwrite”, String.Format(“-sOutputFile={0}”, outputPath), “-c”, “quit” }; } 2.有一个unicode speficic .ps吗? 更新:发布我的完整代码,可能错误是在其他地方。 public static string[] GetArgs(string inputPath, string outputPath) { return new[] { “-oc:/test.txt”, “-dSIMPLE”, “-sFONTPATH=c:/windows/fonts”, “-dNODISPLAY”, “-dDELAYBIND”, “-dWRITESYSTEMDICT”, “-f”, “C:/Program Files/gs/gs9.05/lib/ps2ascii.ps”, […]

使用GhostScript打印PDF

因为它拉了我一段时间,所以我需要你对以下问题的支持。 我们有一个小的c#实用程序,它使用GhostScript打印给定PDF 。 此打印按预期方式但未能保留页面格式。 但是,当我切换Adobe Acrobat代替GhostScript时,页面会按预期打印。 所以我认为,我在GhostScript的命令行参数上犯了一些明显的错误。 背景 以下是核心c#逻辑,它在每个页面上打印具有不同样式的给定PDF文件。 给定的PDF文件有页面; 字体样式和颜色不一致 某些页面具有正常的字体大小,而其他页面的打印格式非常小 一些页面有推荐的保证金,但其他页面的保证金很小 有些页面是彩色的,其余的是灰色的。 有些页面是风景风格,其他是肖像 简而言之,我试图打印的PDF只是一个整合(将单个pdf加入一个大型pdf)的大量小尺寸pdf文档,具有不同的字体样式,大小,边距。 问题 以下逻辑使用GhostScript(v9.02)打印PDF文件。 虽然以下逻辑打印任何给定的PDF,但它无法保留页面格式,包括页眉,页脚,字体大小,边距,方向 (我的pdf文件包含横向和纵向的页面)。 有趣的是,如果我使用acrobat reader打印相同的PDF,那么它将按预期打印以及所有页面级格式。 PDF标本: 第一节 , 第二节 void PrintDocument() { var psInfo = new ProcessStartInfo(); psInfo.Arguments = String.Format( ” -dPrinted -dBATCH -dNOPAUSE -dNOSAFER -q -dNumCopies=1 -sDEVICE=ljet4 -sOutputFile=\”\\\\spool\\{0}\” \”{1}\””, GetDefaultPrinter(), @”C:\PDFOutput\test.pdf”); psInfo.FileName = @”C:\Program Files\gs\gs9.10\bin\gswin64c.exe”; psInfo.UseShellExecute = […]

使用GhostscriptProcessor创建PDF / A.

我想使用GhostscriptProcessor将PDF文件转换为PDF / A,但结果是PDF而不是PDF / A. GhostscriptProcessor gsproc = new GhostscriptProcessor(Properties.Resources.gsdll32); gsproc.StartProcessing(CreatePDFA(@”C:\test\PDF.pdf”, @”C:\test\PDFA.pdf”), new GsStdio()); 方法: CreateTestArgs(string inputPath, string outputPath) { List gsArgs = new List(); gsArgs.Add(“-dPDFA”); gsArgs.Add(“-dBATCH”); gsArgs.Add(“-dNOPAUSEgsArgs”); gsArgs.Add(“-sDEVICE=pdfwrite”); gsArgs.Add(@”-sOutputFile=” + outputPath); gsArgs.Add(@”-f” + inputPath); return gsArgs.ToArray(); } 如果我从命令行使用gswin32.exe,结果是PDF / A文件。

使用GhostScript.NET DPI打印问题打印PDF

我正在使用GhostScript.NET来打印PDF。 当我以96DPI打印时,PDF打印很好,但有点模糊。 如果我尝试以600DPI打印文档,则打印的页面会非常放大。 using GhostScript.NET.Rasterizer; using System.Drawing.Printing; PrintDocument doc = new PrintDocument(); doc.PrinterSettings.PrinterName=””; doc.PrinterSettings.Copies=(short)1; GhostScriptRasterizer rasterizer = new GhostScriptRasterizer(); rasterizer.Open(“abc.pdf”); //Image page = rasterizer.GetPage(96,96); <– this one prints ok Image page = rasterizer.GetPage(600,600); doc.Graphics.DrawImage(page, new Point()); 我在注意页面对象时注意到的一件事是,尽管我传递了GetPage()600,600,但返回的图像的Horizo​​ntalResolution为96,VerticalResolution为96。 所以我尝试了以下内容: Bitmap b = new Bitmap(page.Width,page.Height); b.SetResolution(600,600); Graphics g = Graphics.FromImage(b); g.DrawImage(page,0,0); page = b; 它的Horizo​​ntalResolution为600,VerticalResolution为600,但这样打印的图像更大! 谁能在这里给出建议?