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