我有一个测试 PDF 文件,每页都有一张图片:4 页,4 张图片。PDF 文件是通过使用 Libre Office 将相应的 Docx 文件转换为 PDF 来创建的。
而且,这里是 С# 一个从 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 张图像。
该问题仅适用于由 libre office 转换的 PDF 文件。所有其他人似乎都可以正常工作。
这里可能有什么问题?
PS:附上测试pdf文件