PdfBox извлечение изображений: библиотека извлекает все изображения из документа для каждой страницы - PullRequest
0 голосов
/ 10 июля 2019

У меня есть тестовый PDF-файл с изображением на каждой странице: 4 страницы, 4 изображения. Файл PDF был создан путем преобразования соответствующего файла Docx в PDF с использованием Libre Office.

А вот С # функция для извлечения всех изображений из PDF документа:

public static void ExtractImages(string filePath)
{
    PDDocument pdfDocument = null;
    try
    {
        pdfDocument = PDDocument.load(filePath);

        List documentPages = pdfDocument.getDocumentCatalog().getAllPages();
        Iterator pagesIterator = documentPages.iterator();
        int i = 1;
        string name = null;
        int pageNumber = 0;

        while (pagesIterator.hasNext())
        {
            PDPage page = (PDPage)pagesIterator.next();
            PDResources resources = page.getResources();
            Map pageImages = resources.getXObjects();

            if (pageImages != null)
            {
                Iterator imageIterator = pageImages.keySet().iterator();
                while (imageIterator.hasNext())
                {
                    string key = (string)imageIterator.next();
                    PDXObjectImage image = (PDXObjectImage)pageImages.get(key);

                    var fileName = "C:\\" + i;
                    image.write2file(fileName);
                    i++;

                }
            }
        }
    }
    finally
    {
        pdfDocument?.close();
    }
}

Проблема в том, что

resources.getXObjects()

метод возвращает мне 4 изображения для каждой страницы в документе.

Эта проблема воспроизводима только для файлов PDF, преобразованных офисом libre. Все остальные работают нормально.

В чем здесь может быть проблема?

П.С .: Присоединение теста Pdf file

...