Removendo a marca d'água do PDF iTextSharp
Passei pela solução sugeridaaqui mas meu problema é um pouco diferente. Na solução fornecida no link acima, só é possível remover a marca d'água se o iTextSharp também for usado para adicionar a marca d'água. No meu caso, estou adicionando uma marca d'água em alguns casos usando o Microsoft Word. Quando uso o código a seguir, a marca d'água desaparece do PDF, mas quando converto o PDF em Word, ela aparece novamente como uma imagem. Pelo meu entendimento, o que o código abaixo faz é que ele altera o valor de opacidade da marca d'água para 0 e, portanto, desaparece.
private static void removeWatermark(string watermarkedFile, string unwatermarkedFile)
{
PdfReader.unethicalreading = true;
PdfReader reader = new PdfReader(watermarkedFile);
reader.RemoveUnusedObjects();
int pageCount = reader.NumberOfPages;
for (int i = 1; i <= pageCount; i++)
{
var page = reader.GetPageN(i);
PdfDictionary resources = page.GetAsDict(PdfName.RESOURCES);
PdfDictionary extGStates = resources.GetAsDict(PdfName.EXTGSTATE);
if (extGStates == null)
continue;
foreach (PdfName name in extGStates.Keys)
{
var obj = extGStates.Get(name);
PdfDictionary extGStateObject = (PdfDictionary)PdfReader.GetPdfObject(obj);
var stateNumber = extGStateObject.Get(PdfName.ca);
if (stateNumber == null)
continue;
var caNumber = (PdfNumber)PdfReader.GetPdfObject(stateNumber);
if (caNumber.FloatValue != 1f)
{
extGStateObject.Remove(PdfName.ca);
extGStateObject.Put(PdfName.ca, new PdfNumber(0f));
}
}
}
using (FileStream fs = new FileStream(unwatermarkedFile, FileMode.Create, FileAccess.Write, FileShare.None))
{
using (PdfStamper stamper = new PdfStamper(reader, fs))
{
stamper.SetFullCompression();
stamper.Close();
}
}
}
Existe uma maneira de excluir essa marca d'água modificando o código?