【问题标题】:How to convert PDF to images using C# and ImageMagick?如何使用 C# 和 ImageMagick 将 PDF 转换为图像?
【发布时间】:2011-01-11 16:22:21
【问题描述】:

我想使用 C# 和 magicknet.dll 将 PDF 文件转换为 .GIF。我已将 MagickNet Dll 的引用添加到我的项目中。

MagickNet.Magick.Init();
MagickNet.Image img = new MagickNet.Image("d:/aa.pdf");
img.Write("d:/bb.gif");
MagickNet.Magick.Term();
img.Dispose();
System.Runtime.InteropServices.SEHException 未被用户代码处理 Message="外部组件抛出异常。" 来源="ImageMagickNET" 错误代码=-2147467259 堆栈跟踪: 在 Magick.Image.{ctor}(Image* , basic_string\,std::allocator >* ) 在 ImageMagickNET.Image..ctor(字符串 imageSpec) 在 C:\Users\PANKAJ\Documents\Visual Studio 2008\Projects\Test1\Test1\Default.aspx.cs: 31 中的 Test1._Default.Button1_Click(Object sender, EventArgs e) 在 System.Web.UI.WebControls.Button.OnClick(EventArgs e) 在 System.Web.UI.WebControls.Button.RaisePostBackEvent(字符串 eventArgument) 在 System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(字符串 eventArgument) 在 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl,字符串 eventArgument) 在 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) 在 System.Web.UI.Page.ProcessRequestMain(布尔 includeStagesBeforeAsyncPoint,布尔 includeStagesAfterAsyncPoint) 内部异常:

【问题讨论】:

标签: c# .net imagemagick magicknet


【解决方案1】:

ImageMagick 需要 GhostScript 来解释 PDF 文件。如果你愿意,你可以直接调用 GhostScript dll(通过我的个人资料联系我,我会给你发一个 c# 包装器)

您也可以使用 GhostScript 命令行或商业 3rd 方组件,例如 Tall Components 的 PDF 库。

【讨论】:

  • hii Mark.. 谢谢...实际上我有 ghostscript dll...但是当我在程序中添加此 dll 时会出现错误...确保此 dll 可访问并且它是一个有效的 com 组件..
  • GhostScript dll 不是 COM 组件,是非托管 dll,它需要平台调用调用。
  • 那么如何在我的项目中添加 GhostScript dll?我在 Windows Vista 上使用 Visual Studio 2008。我想在我的网络应用程序中添加 GhostScript dll。
  • 正如我在回答中提到的,给我发电子邮件(个人资料页面上的电子邮件),我将向您发送一个 C# 包装器,使您能够将 PDF 转换为图像。除此之外,您还需要查看 GhostScript 文档以了解接口是什么,并使用 pInvoke 调用连接到 Ghostscript dll。
  • hiii mark..我使用了你的代码..但它给出了一个错误...无法加载 dll .....请帮我锁定 (typeof(Pdf_2_image.GhostScript)) { GC.Collect(); Pdf_2_image.GhostScript.OutputDevice outputDevice = Pdf_2_image.GhostScript.OutputDevice.jpeg; Pdf_2_image.GhostScript.DeviceOption[] deviceOptions = Pdf_2_image.GhostScript.DeviceOptions.jpg(100);使用 (Pdf_2_image.GhostScript ghostScript = new Pdf_2_image.GhostScript(@"C:\Program Files\gs\gs8.70\bin")) ; {
【解决方案2】:

Magic.Net 是流行库 ImageMagick 的 C# 端口。使用来自 url https://www.nuget.org/packages/Magick.NET-Q16-AnyCPU/ 的 Nuget 包安装 Magick.net。这样您就可以使用 C#。见下方代码

请注意,它将垂直附加图像。同样,您可以水平附加,即替换 images.AppendHorizo​​ntally

using ImageMagick;

string inputPdf= @"C:\my docs\input.pdf";
string outputPng= @"C:\my docs\output.png";

using (MagickImageCollection images = new MagickImageCollection())
{
    images.Read(inputPdf);
    using (IMagickImage vertical = images.AppendVertically())
        {
            vertical.Format = MagickFormat.Png;
            vertical.Density = new Density(300);  
            vertical.Write(outputPng);
        }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-14
    • 1970-01-01
    • 2011-09-29
    • 1970-01-01
    • 2014-09-16
    相关资源
    最近更新 更多