Dnes se podíváme na to, jak najít a odstranit vodoznaky z dokumentů v C#. V dokumentu mohou být textové a obrazové vodoznaky. Můžeme snadno vyhledávat a programově odstranit takové vodoznaky z mnoha dokumentů podporovaných PDF, Word, Excel, PowerPoint a Visio.

V tomto článku se budeme zabývat následujícími tématy:

Najděte a odstraňte vodoznaky z dokumentů pomocí GroupDocs API

.NET API pro odstranění vodoznaku

Watermark API pro .NET - GroupDocs

GroupDocs.Watermark for .NET je rychlé a efektivní rozhraní API pro vodoznaky, které nevyžaduje žádný další software. Umožňuje přidávání vodoznaků do dokumentů a obrázků takovým způsobem, který by bylo pro nástroje třetích stran obtížné odstranit. Umožňuje také vývojářům C# snadno odstraňovat vodoznaky z mnoha formátů souborů Microsoft a OpenOffice textových dokumentů, tabulek, prezentací, výkresů Visio a dokumentů PDF v aplikacích .NET. Všechny podporované formáty souborů jsou uvedeny v dokumentaci.

Nyní uvedu příklady, které budou vyhledávat a odstraňovat vodoznaky. Bude tedy lepší, když si předem připravíte prostředí podle některé z vhodných možností:

PM> Install-Package GroupDocs.Watermark

Najít vodoznaky v dokumentech pomocí C#

Watermarker, PossibleWatermarkCollection(kolekce PossibleWatermark jsou třídy rozhraní API k nalezení různých druhů vodoznaků v dokumentech s různými kritérii vyhledávání a jejich rychlému odstranění. Následují kroky pro základní vyhledávání všech vodoznaků v libovolném poskytnutém dokumentu pomocí C#. Vyhledávání vodoznaků můžete dále upřesnit a to je uvedeno dále v tomto článku.

  • Vytvořte objekt třídy Watermarker se souborem zdrojového dokumentu.
  • Zavolejte metodu Search. Vrátí všechny možné vodoznaky z dokumentu.
  • Procházejte kolekci vodoznaků a zobrazte data nebo proveďte jakoukoli akci s každým vodoznakem.
// Najděte všechny vodoznaky v dokumentech Word, Excel, PowerPoint, Visio a PDF pomocí C#
using (Watermarker watermarker = new Watermarker("filepath/documentWithWatermarks.pdf"))
{
    PossibleWatermarkCollection possibleWatermarks = watermarker.Search();
    foreach (PossibleWatermark possibleWatermark in possibleWatermarks)
    {
        if (possibleWatermark.ImageData != null)
        {
            Console.WriteLine(possibleWatermark.ImageData.Length);
        }
        Console.WriteLine(possibleWatermark.Text);
        Console.WriteLine(possibleWatermark.X);
        Console.WriteLine(possibleWatermark.Y);
        Console.WriteLine(possibleWatermark.RotateAngle);
        Console.WriteLine(possibleWatermark.Width);
        Console.WriteLine(possibleWatermark.Height);
    }
}

Odstraňte vodoznaky z dokumentů v C#

Ze všech vyhledaných vodoznaků můžeme odstranit libovolný vodoznak nebo všechny vodoznaky najednou. Hlavní věc, zda jste úspěšně našli vodoznak(y), který chcete odstranit, nebo ne. Co když je v dokumentu mnoho různých typů vodoznaků? Rozhraní API poskytuje různé možnosti pro upřesnění vyhledávání vodoznaků. Následující kód odstraní vodoznak z dokumentu PDF zadáním indexu kolekce pomocí C#.

// Odstraňte vodoznaky z PDF a dalších dokumentů pomocí C#
using (Watermarker watermarker = new Watermarker("filepath/documentWithWatermarks.pdf"))
{
    PossibleWatermarkCollection possibleWatermarks = watermarker.Search();

    // Odstraňte z dokumentu vodoznak na zadaném indexu.
    possibleWatermarks.RemoveAt(0);

    // Odstraňte z dokumentu určený vodoznak.
    possibleWatermarks.Remove(possibleWatermarks[0]);

    watermarker.Save("filepath/noWatermarks.pdf");
}

Více vyhledávacích kritérií pro vodoznaky

Existuje mnoho dalších způsobů, jak najít vodoznaky podle určitých kritérií. Po selektivním hledání můžeme vodoznak(y) odstranit z kolekce pomocí metody Remove, RemoveAt nebo Clear. Zde je několik způsobů, jak najít vodoznaky z poskytnutých dokumentů:

  • Najděte a odstraňte vodoznaky s konkrétním textem
  • Vyhledejte vodoznaky pomocí RegEx (regulární výraz) a odstraňte je
  • Vyhledejte vodoznak se zadaným formátováním textu
  • Najděte a odstraňte vodoznaky hypertextového odkazu

Najděte a odstraňte vodoznaky se specifickým textem

Textové vodoznaky můžete vyhledat zadáním přesného řetězce pomocí následujícího kódu C#:

 // Find possible watermarks containing the specified text
TextSearchCriteria textSearchCriterion = new TextSearchCriteria("© 2020");
PossibleWatermarkCollection possibleWatermarks = watermarker.Search(textSearchCriterion);

Vyhledejte vodoznaky pomocí RegEx a Odeberte

Pokud je v textu vodoznaku nějaký vzor, můžete zadat regulární výraz (RegEx) pro vyhledání těchto vodoznaků a později je podle toho odstranit pomocí následujícího kódu C#. Tento kód načte všechny vodoznaky s ©YYYY.

// Search Watermarks by Regular Expression
Regex regex = new Regex(@"^© \\d{4}$");
TextSearchCriteria textSearchCriterion = new TextSearchCriteria(regex);
PossibleWatermarkCollection possibleWatermarks = watermarker.Search(textSearchCriterion);

Najděte a odstraňte vodoznaky pomocí specifického formátování textu

Můžete také najít vodoznaky s určitým specifickým formátováním textu, jako je název písma, minimální/maximální velikost písma, tučné/kurzíva/podtržené atd.

TextFormattingSearchCriteria criterion = new TextFormattingSearchCriteria()
{
    FontName = "Arial",
    MinFontSize = 19,
    MaxFontSize = 42,
    FontBold = true
};
PossibleWatermarkCollection watermarks = watermarker.Search(criterion);
watermarks.Clear();

Najít a odebrat vodoznaky hypertextového odkazu

RegEx můžete použít k nalezení textových vodoznaků s hypertextovými odkazy v obsahu. Později můžete ve sbírce zkontrolovat, zda jsou ve výsledku vyhledávání vodoznaky hypertextového odkazu. Ty lze odstranit kteroukoli z metod odstranění. Následující kód C# odstraní všechny vodoznaky s hypertextovými odkazy.

PossibleWatermarkCollection watermarks = watermarker.Search(new TextSearchCriteria(new Regex(@"anyurl\\.com")));
for (int i = watermarks.Count - 1; i >= 0; i--)
{
    // Is watermark the hyperlink?
    if (watermarks\[i\] is HyperlinkPossibleWatermark)
    {
        watermarks.RemoveAt(i);
    }
}

Existuje mnoho dalších způsobů, jak upřesnit hledání vodoznaků. Pro více podrobností můžete navštívit dokumentace. V případě dotazů navštivte fórum.

Závěr

Věřím, že nyní budete mít větší jistotu při hledání a odstraňování textových vodoznaků i obrazových vodoznaků z dokumentů aplikace Word, tabulek Excel, prezentací Powerpoint, dokumentů PDF a výkresů Visio pomocí jazyka C# v rámci vašich aplikací .NET.

Viz také