У меня есть тестовый 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