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:
- .NET API pro odstranění vodoznaků
- Najděte vodoznaky v dokumentech pomocí C#
- Odstraňte vodoznaky z dokumentů v C#
.NET API pro odstranění vodoznaku
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í:
- NuGet
- Direct Download: MSI installer and DLLs
- Konzole správce balíčků:
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.