PdfBox图像提取:库从文档中提取每一页的所有图像

时间:2019-07-10 10:15:19

标签: c# pdfbox libreoffice image-extraction

我有一个测试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

0 个答案:

没有答案