我有一个测试PDF文件,每页都有一个图像:4页,4张图像。 通过使用Libre Office将相应的Docx文件转换为PDF来创建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张图像。
仅对于由自由办公室转换的PDF文件,此问题才可重现。 其他所有人似乎都可以。
这可能是个问题吗?
P.S .:附加测试Pdf file