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

如何在c#net中使用pdfbox从pdf获取图像,c#,.net,pdfbox,C#,.net,Pdfbox,如何在c#net中使用pdfbox从pdf获取图像。 关于这个问题的所有答案都是用java语言发布的。 就我所见,没有人用c语言给出正确答案 我试过用c编写java代码,但有些方法在c中不起作用 我想使用c#net中的pdfbox从pdf文件中提取图像最后我得到了答案 在类PDFStreamEngine中扩展类 例如: public class ImageExtraction : PDFStreamEngine { int i=1; public void GetImageFro

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

我试过用c编写java代码,但有些方法在c中不起作用


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

最后我得到了答案

在类PDFStreamEngine中扩展类

例如:

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端口


C#不受支持,IKVM已停止使用,因此如果您坚持使用C#,您将很难使用。“不工作”方法可能来自PDFBox 2.0.*,而您的PDFBox版本可能来自1.8.hi@TilmanHausherr。请找到以下答案。它的工作很好,我从pdfI得到的图像无法测试,但我认为这可以用于简单的文件。(这里缺少的是模式和内联图像,但这是非常高级的东西)这是Java,不是吗?这段代码不是Java,这是c。我已经添加了PDFBox dll