1

我有一个 Sharepoint 应用程序,它使用 Ghostscript.net 包装器将 pdf 文档光栅化为 png。现在我正在使用他们网站上的示例。但是我遇到的问题是当我尝试同时转换为 pdf 时。使用此代码一次只能工作一个。但是当我尝试同时转换 2 个 pdf 时,出现错误“调用 'gsapi_new_instance' 时发生错误:-100”。

               using (MemoryStream pdfStream = new MemoryStream(pdfbyte))
            using (GhostscriptRasterizer rasterizer = new GhostscriptRasterizer())
            {

                rasterizer.Open(pdfStream, version, false);
                for (int i = 1; i <= rasterizer.PageCount; i++)
                {

                    using (MemoryStream ms = new MemoryStream())
                    {
                        DrawImage img = rasterizer.GetPage(dpi, dpi, i);
                        img.Save(ms, ImageFormat.Png);
                        ms.Close();
                        output = "data:image/png;base64," + Convert.ToBase64String((byte[])ms.ToArray());

                    }

                }

                rasterizer.Close();

否则,如果我使用rasterizer.Open(pdfStream, version, true);I 错误“算术运算导致溢出”

我应该改用 GhostscriptProcessor 还是 Viewer 实例?有没有人有这个代码的好例子?

4

1 回答 1

1

所以我弄清楚了问题所在。我必须为 3.5 编译 Ghostscript.net,因为我在 Sharepoint 2010 站点中使用它。当我这样做时,我搞砸了 DynamicNativeLibrary.cs 文件中的这行代码。

string procName = Marshal.PtrToStringAnsi((IntPtr)(byte*)(thunkData) + 2);

当我将其更改为以下内容时,它现在似乎可以正常工作了。

IntPtr a = (IntPtr)(byte*)(thunkData);
string procName = Marshal.PtrToStringAnsi(new IntPtr(a.ToInt64() + 2));
于 2015-06-16T10:01:08.807 回答