首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MemoryStream (pdf)到Ghostscript到MemoryStream (jpg)

MemoryStream (pdf)到Ghostscript到MemoryStream (jpg)
EN

Stack Overflow用户
提问于 2014-01-03 22:05:34
回答 2查看 8.2K关注 0票数 7

我确实看到了"PDF to Image using GhostScript. No image file has to be created",但只有(某种程度上)回答了我一半的问题。是否可以使用GhostScriptSharp (或常规的GhostScript dll)将MemoryStream中的pdf转换为MemoryStream中的jpg?我提到了一个使用iTextSharp动态填充的pdf表单,我已经将它定向到MemoryStream以保存到数据库或流到http响应中,如果可以的话,我非常希望避免保存到文件(以及随后的清理)。

在我提到的答案中唯一的答案是,一个人必须去GhostScript dll去做后一部分,但很明显,我需要做一个很好的腿工作,以了解这意味着什么。有谁有好的资源可以帮助我这次旅行吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-04 15:34:27

问题是,与PostScript语言不同的是,PDF语言本质上需要对文件的随机访问。如果直接将PDF提供给标准输入或管道,Ghostscript将在解释PDF之前将其复制到临时文件中。因此,将PDF作为MemoryStream (或字节数组)传递是没有意义的,因为在解释它之前,它将在磁盘上结束。

看看Ghostscript.NET,它是“内存中”输出的GhostscriptRasterizer示例。

票数 4
EN

Stack Overflow用户

发布于 2015-05-07 10:38:13

Ghostscript.Net是Ghostscript dll的包装器。它现在可以接收流对象,并返回可以保存到流中的图像。下面是我作为ASP页面从内存流中生成PDF的一个例子。我还没有完全找到处理鬼脚本dll的最佳方法,以及在服务器上定位它的位置。

代码语言:javascript
复制
 void PDFToImage(MemoryStream inputMS, int dpi)
    {
        GhostscriptRasterizer rasterizer = null;
        GhostscriptVersionInfo version = new GhostscriptVersionInfo(
                                                                new Version(0, 0, 0), @"C:\PathToDll\gsdll32.dll", 
                                                                string.Empty, GhostscriptLicense.GPL);

        using (rasterizer = new GhostscriptRasterizer())
        {
            rasterizer.Open(inputMS, version, false);

            for (int i = 1; i <= rasterizer.PageCount; i++)
            {

                using (MemoryStream ms = new MemoryStream())
                {
                    Image img = rasterizer.GetPage(dpi, dpi, i);
                    img.Save(ms, ImageFormat.Jpeg);
                    ms.Close();

                    AspImage newPage = new AspImage();
                    newPage.ImageUrl = "data:image/png;base64," + Convert.ToBase64String((byte[])ms.ToArray());

                    Document1Image.Controls.Add(newPage);
                }

            }

            rasterizer.Close();
        }
    }
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20913530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档