Преобразование PDF в Jpeg с помощью PDFsharp (ресурс нулевой)

Я пытаюсь преобразовать pdf в jpeg с помощью PDFsharp.

Вот мой код:

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.


person PFranchise    schedule 06.07.2012    source источник
comment
Ключ ресурсов должен начинаться с заглавной буквы «R». Пробовали ли вы использовать /Resources вместо /resources? Другие клавиши также имеют неправильную заглавную букву. Или PDFSharp выполняет поиск без учета регистра?   -  person mkl    schedule 07.09.2013


Ответы (1)


Если вы хотите преобразовать PDF в JPEG и хотите сделать это с помощью бесплатной библиотеки программного обеспечения, обратите внимание на ImageMagick. Это работает на всех основных платформах, поэтому с Windows все будет в порядке. Его можно запустить в командной строке, и вы можете установить предпочтительный уровень сжатия с потерями.

Редактировать: ах, я видел по другому вопросу, что вы используете интерфейс .net для ImageMagick. Это здорово, если вы можете заставить его работать, но вам может быть проще использовать команду convert!

person halfer    schedule 06.07.2012
comment
Спасибо за ответ. Да, я работал с ImageMagickNet, но это оказалось сложнее, чем я ожидал. Я новичок в мире .NET, но знаете ли вы, смогу ли я использовать команду convert как часть своего сайта? - person PFranchise; 07.07.2012
comment
Я уверен, что вы могли бы. Просто найдите способ выполнить системную команду с веб-страницы (я не программист .net) и вызовите convert.exe -quality 85 infile.pdf /temp/path/tempfile.jpg - person halfer; 07.07.2012