今日は、** C#でドキュメントから透かしを見つけて削除する方法**を見ていきます。ドキュメントには、テキストおよび画像ベースの透かしが含まれている場合があります。このような透かしは、PDF、Word、Excel、PowerPoint、Visioでサポートされている多くのドキュメントから簡単に検索してプログラムで削除できます。

この記事では、次のトピックについて説明します。

*透かしを削除するための.NETAPI

GroupDocsAPIを使用してドキュメントから透かしを検索して削除する

透かし除去用の.NETAPI

.NET用透かしAPI-GroupDocs

GroupDocs.Watermark for .NETは、追加のソフトウェアを必要としない高速で効率的な透かしAPIです。サードパーティのツールでは削除しにくい方法で、ドキュメントや画像に透かしを追加できます。また、C#開発者は、ワードプロセッシングドキュメントスプレッドシートプレゼンテーションVisio図面*の多くのMicrosoftおよびOpenOfficeファイル形式から透かしを簡単に削除できます。 *、および.NETアプリケーションのPDF**ドキュメント。 サポートされているファイル形式はすべてドキュメントに記載されています。

次に、透かしを見つけて削除する例を示します。したがって、適切なオプションのいずれかに従って、事前に環境を準備しておくとよいでしょう。

PM> Install-Package GroupDocs.Watermark

C#を使用してドキュメント内の透かしを検索する

WatermarkerPossibleWatermarkCollection([PossibleWatermark][11]のコレクションは、さまざまな検索条件でドキュメント内のさまざまな種類の透かしを検索し、それらをすばやく削除するAPIのクラスです。次の手順を実行します。 C#を使用して、提供されたドキュメント内のすべての透かしの基本的な検索を行います。透かしの検索をさらに絞り込むことができます。これについては、この記事の後半で説明します。

*ソースドキュメントファイルを使用してWatermarkerクラスオブジェクトを作成します。

  • Searchメソッドを呼び出します。ドキュメントから可能なすべての透かしを返します。 *透かしコレクションをトラバースして、データを表示したり、各透かしに対して任意のアクションを実行したりします。
// C#を使用して、Word、Excel、PowerPoint、Visio、PDFドキュメントのすべての透かしを検索します
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);
    }
}

C#のドキュメントから透かしを削除する

検索されたすべての透かしから、任意の透かしまたはすべての透かしを一度に削除できます。ここで重要なのは、削除する透かしが正常に見つかったかどうかです。ドキュメントにさまざまな種類の透かしがたくさんある場合はどうなりますか? APIには、透かしの検索を絞り込むためのさまざまなオプションがあります。次のコードは、C#を使用してコレクションのインデックスを指定することにより、PDFドキュメントから透かしを削除します。

// C#を使用してPDFやその他のドキュメントから透かしを削除します
using (Watermarker watermarker = new Watermarker("filepath/documentWithWatermarks.pdf"))
{
    PossibleWatermarkCollection possibleWatermarks = watermarker.Search();

    // ドキュメントから指定されたインデックスの透かしを削除します。
    possibleWatermarks.RemoveAt(0);

    // 指定した透かしをドキュメントから削除します。
    possibleWatermarks.Remove(possibleWatermarks[0]);

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

透かしのその他の検索基準

特定の基準で透かしを見つける方法は他にもたくさんあります。選択的検索の後、** Remove RemoveAt 、または Clear **メソッドを適宜使用して、コレクションから透かしを削除できます。提供されたドキュメントから透かしを見つける方法のいくつかを次に示します。

*特定のテキストを含む透かしを検索して削除する

  • RegEx(正規表現) を使用して透かしを検索し、削除します *指定されたテキスト形式で透かしを検索 *ハイパーリンク透かしを見つけて削除する

###特定のテキストを含む透かしを検索して削除する

次のC#コードを使用して正確な文字列を指定することにより、テキスト透かしを検索できます。

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

###正規表現で透かしを検索して削除

透かしのテキストにパターンがある場合は、正規表現(RegEx) を指定してこれらの透かしを検索し、次のC#コードを使用して後で削除できます。このコードは、©YYYYですべての透かしをフェッチします。

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

###特定のテキスト形式の透かしを見つけて削除する

また、フォント名、最小/最大フォントサイズ、太字/斜体/下線など、特定のテキスト形式の透かしを見つけることもできます。

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

###ハイパーリンク透かしを見つけて削除する

RegExを使用して、コンテンツにハイパーリンクを持つテキスト透かしを見つけることができます。後で、検索結果にハイパーリンクの透かしがあるかどうかをコレクションで確認できます。これらは、任意の削除方法で削除できます。次のC#コードは、ハイパーリンクを含むすべての透かしを削除します。

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);
    }
}

[透かしの検索][12]を絞り込む方法は他にもたくさんあります。詳細については、[ドキュメント][13]にアクセスしてください。質問については、[フォーラム][14]にアクセスしてください。

結論

.NETアプリケーション内でC#を使用して、Word文書、Excelスプレッドシート、Powerpointプレゼンテーション、PDF文書、Visio図面からテキストの透かしと画像の透かしを見つけて削除することに自信が持てるようになりました。

関連項目

  • [C#を使用して画像またはドキュメント内の画像に透かしを追加][15] *[Javaの画像に透かしを追加][16] *[Javaのドキュメントから透かしを見つけて削除する][17]

[11]: https://apireference.groupdocs.com/watermark/net/groupdocs.watermark.search/possiblewatermark) [12]: https://docs.groupdocs.com/watermark/net/searching-watermarks/ [13]: https://docs.groupdocs.com/watermark/net/ [14]: https://forum.groupdocs.com/c/watermark [15]: https://blog.groupdocs.com/2019/10/21/add-watermark-to-images-using-csharp-dotnet-api/ [16]: https://blog.groupdocs.com/ja/2020/09/15/add-watermark-to-images-in-java/ [17]: https://blog.groupdocs.com/ja/2020/11/30/find-and-remove-watermarks-from-documents-in-java/