C# 从PDF itextsharp中删除遮罩图像“水印”

C# 从PDF itextsharp中删除遮罩图像“水印”,c#,pdf,itextsharp,C#,Pdf,Itextsharp,我需要从pdf文档中删除掩码图像。在所有页面上使用相同的图像作为水印。 iTextSharp是否可以实现这一点,如果可以,我将非常感谢提供任何代码示例 我需要删除水印的原因是,我需要对pdf进行OCR,但水印下的文本已损坏 我在网上搜索过,但我找到了任何有用的东西 谢谢,, 迪米特里斯 有了这段代码,我可以替换图像,但是如果我不替换图像…那么图像就会消失,但是当我在AdobeReades中打开pdf时,会出现一个错误 string pdfTempFilename = "1_tmp

我需要从pdf文档中删除掩码图像。在所有页面上使用相同的图像作为水印。 iTextSharp是否可以实现这一点,如果可以,我将非常感谢提供任何代码示例

我需要删除水印的原因是,我需要对pdf进行OCR,但水印下的文本已损坏

我在网上搜索过,但我找到了任何有用的东西

谢谢,, 迪米特里斯

有了这段代码,我可以替换图像,但是如果我不替换图像…那么图像就会消失,但是当我在AdobeReades中打开pdf时,会出现一个错误

        string pdfTempFilename = "1_tmp.pdf";            
        FileStream os = new FileStream(pdfTempFilename, FileMode.Create);
        PdfReader pdf = new PdfReader(@"D:\import\pdf.pdf");
        PdfStamper stp = new PdfStamper(pdf, os);
        PdfWriter writer = stp.Writer;
        iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance("mask.gif");
        PdfDictionary pg = pdf.GetPageN(1);
        PdfDictionary res = (PdfDictionary)PdfReader.GetPdfObject(pg.Get(PdfName.RESOURCES));

        PdfDictionary xobj = (PdfDictionary)PdfReader.GetPdfObject(res.Get(PdfName.XOBJECT));                                                                       

        if (xobj != null) {

            foreach (PdfName name in xobj.Keys){            
                PdfObject obj = xobj.Get(name);
                if (obj.IsIndirect()) {
                    PdfDictionary tg = (PdfDictionary)PdfReader.GetPdfObject(obj);
                    PdfName type = tg.GetAsName(PdfName.SUBTYPE);


                    PdfObject ind = tg.Get(PdfName.MASK);

                    if (PdfName.IMAGE.Equals(type) && ind !=null)
                    {
                        PdfReader.KillIndirect(obj);                           

                        writer.AddDirectImageSimple(img, (PRIndirectReference)obj);                            
                        break;
                    }
                }
            }
       }
       stp.Close();

`

您能要求版权所有者提供一个干净的版本吗?很遗憾,这是不可能的。在尝试使用代码执行此操作之前,您是否必须使用Adobe Acrobat或类似的非Adobe Reader程序来执行此操作?如果不能用Acrobat来完成,我就不会用代码来尝试了。请参阅本文和VSU的注释。如果您要从不属于您的文档中删除水印,那么您将破坏版权。如果您可以替换图像,是否可以将其替换为透明图像?