使用PDFsharp将PDF转换为Jpeg(资源为空)

问题描述 投票:3回答:1

我正在尝试使用PDFsharp将pdf转换为jpeg。

这是我的代码:

PdfSharp.Pdf.PdfDocument document = PdfSharp.Pdf.IO.PdfReader.Open(doc);
PdfSharp.Pdf.PdfPage page = document.Pages[0];

// get resources dictionary
PdfSharp.Pdf.PdfDictionary resources = page.Elements.GetDictionary("/resources");
if (resources != null)
{
    // get external objects dictionary
    PdfSharp.Pdf.PdfDictionary xobjects = resources.Elements.GetDictionary("/xobject");
    if (xobjects != null)
    {
        ICollection<PdfSharp.Pdf.PdfItem> items = xobjects.Elements.Values;

        // iterate references to external objects
        foreach (PdfSharp.Pdf.PdfItem item in items)
        {
            PdfSharp.Pdf.Advanced.PdfReference reference = item as PdfSharp.Pdf.Advanced.PdfReference;
            if (reference != null)
            {
                PdfSharp.Pdf.PdfDictionary xobject = reference.Value as PdfSharp.Pdf.PdfDictionary;

                // is external object an image?
                if (xobject != null && xobject.Elements.GetString("/subtype") == "/image")
                {
                    ExportJpegImage(xobject);
                }
            }
        }
    }
}

该行:if (resources != null)返回false。我不确定resources应该包含什么,但对于其余的转换来说似乎很重要。我从PDFsharp示例站点复制了此代码。我的PDF可能有问题吗?我使用Word 2010制作的。

c# .net pdf jpeg pdfsharp
1个回答
3
投票

如果要将PDF转换为JPEG,并希望使用免费软件库,请考虑ImageMagick。它可以在所有主要平台上运行,因此在Windows上可以正常使用。可以在命令行上启动它,并且可以设置首选的有损压缩级别。

编辑:啊,我在另一个问题上看到您正在使用ImageMagick的.net接口。如果可以使其正常运行,那很好,但是您可能会发现仅使用convert命令会更容易!

© www.soinside.com 2019 - 2024. All rights reserved.