如何在 C# .net 中使用 pdfbox 从 pdf 中获取图像

how to get image from pdf using pdfbox in c# .net

如何在 c# .net 中使用 pdfbox 从 pdf 中获取图像。 关于这个问题的所有答案都是 post 以 java 语言编写的。 在我所见的 c# 语言中,没有人 post 正确答案。

我在 c# 中尝试了 java 代码,但某些方法在 c# 中不起作用。

我想在 c# .net 中使用 pdfbox 从 pdf 文件中提取图像

终于找到答案了

扩展 class PDFStreamEngine

中的 class

示例:

public class ImageExtraction : PDFStreamEngine
{
    int i=1;
    public void GetImageFromPDF(string fileName)
    {
        PDDocument pDDocument = PDDocument.load(new java.io.File(fileName));
        PDPage page = new PDPage();
        page = pDDocument.getPages().get(0);
        ImageExtraction obj = new ImageExtraction();
        processPage(page);
    }

    protected override void processOperator(Operator @operator, java.util.List operands)
    {
        string operation = @operator.getName();
        if (operation == "Do")
        {
            PDDocument pDDocument = new PDDocument();
            org.apache.pdfbox.cos.COSName objectName = (org.apache.pdfbox.cos.COSName)operands.get(0);
            org.apache.pdfbox.pdmodel.graphics.PDXObject xobject = getResources().getXObject(objectName);
            org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject pDImageXObject = new org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject(pDDocument);
            org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject pDFormXObject = new org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject(pDDocument);
            if (xobject.GetType().IsAssignableFrom(pDImageXObject.GetType()))
            {
                org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject image = (org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject)xobject;
                int imageWidth = image.getWidth();
                int imageHeight = image.getHeight();
                // same image to local
                java.awt.image.BufferedImage bImage = new java.awt.image.BufferedImage(imageWidth, 
                        imageHeight, java.awt.image.BufferedImage.TYPE_INT_ARGB);
                bImage = image.getImage();
                javax.imageio.ImageIO.write(bImage, "PNG", new java.io.File(imageFolderPath + "image_" + i + ".png"));
                i++;
                Console.WriteLine("Image saved.");
            }
            else if (xobject.GetType().IsAssignableFrom(pDFormXObject.GetType()))
            {
                org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject form = (org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject)xobject;
                showForm(form);
            }
        }
    }
}

看起来有人启动了 pdfbox 的 dotnet 端口。

https://github.com/UglyToad/PdfPig