Bugün, C# dilinde belgelerden filigranların nasıl bulunup kaldırılacağına bir göz atacağız. Bir belgede metin ve görüntü tabanlı filigranlar olabilir. PDF, Word, Excel, PowerPoint ve Visio destekli birçok belgeden bu tür filigranları kolayca arayabilir ve programlı olarak kaldırabiliriz.

Bu yazıda aşağıdaki konular ele alınacaktır:

GroupDocs API kullanarak Belgelerdeki Filigranları Bulun ve Kaldırın

Filigran Kaldırma için .NET API

.NET için Filigran API'si - GroupDocs

GroupDocs.Watermark for .NET, ek yazılım gerektirmeyen hızlı ve verimli bir filigran API’sidir. Belgelere ve resimlere, üçüncü taraf araçların kaldırması zor olacak şekilde filigran eklenmesine izin verir. Ayrıca, C# geliştiricilerinin .NET uygulamalarındaki birçok Microsoft ve OpenOffice dosya biçimindeki sözcük işleme belgeleri, elektronik tablolar, sunular, Visio çizimleri ve PDF belgelerinden filigranları kolayca kaldırmasına olanak tanır. Tüm desteklenen dosya biçimleri belgelerde belirtilmiştir.

Şimdi filigran bulma ve kaldırma ile ilgili örnekler göstereceğim. Bu nedenle, uygun seçeneklerden herhangi birini izleyerek ortamı önceden hazırlamanız daha iyi olacaktır:

PM> Install-Package GroupDocs.Watermark

C# Kullanarak Belgelerde Filigran Bulma

Filigran, PossibleWatermarkCollection(PossibleWatermark koleksiyonu, çeşitli arama ölçütlerine sahip belgelerde çeşitli filigran türlerini bulmak ve bunları hızlı bir şekilde kaldırmak için kullanılan API sınıflarıdır. Aşağıdaki adımlar C# kullanarak sağlanan herhangi bir belgedeki tüm filigranların temel araması için Filigran aramanızı daha da hassaslaştırabilirsiniz ve bu, bu makalenin ilerleyen kısımlarında gösterilmektedir.

  • Kaynak belge dosyasıyla Watermarker sınıfı nesnesini oluşturun.
  • Arama yöntemini çağırın. Belgeden tüm olası filigranları döndürür.
  • Verileri görüntülemek veya her bir filigran üzerinde herhangi bir işlem gerçekleştirmek için filigran koleksiyonunda gezinin.
// C# kullanarak Word, Excel, PowerPoint, Visio ve PDF Belgelerindeki tüm filigranları bulun
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#‘daki Belgelerden Filigranları Kaldırma

Aranan tüm filigranlardan herhangi bir filigranı veya tüm filigranları bir kerede kaldırabiliriz. Burada önemli olan silmek istediğiniz filigran(lar)ı başarılı bir şekilde bulup bulmadığınızdır. Bir belgede birçok farklı türde filigran varsa ne olur? API, filigran aramanızı hassaslaştırmak için çeşitli seçenekler sunar. Aşağıdaki kod, C# kullanarak toplama dizinini belirterek filigranı bir PDF belgesinden kaldırır.

// C# kullanarak PDF ve diğer Belgelerdeki filigranları kaldırın
using (Watermarker watermarker = new Watermarker("filepath/documentWithWatermarks.pdf"))
{
    PossibleWatermarkCollection possibleWatermarks = watermarker.Search();

    // Belirtilen dizindeki filigranı belgeden kaldırın.
    possibleWatermarks.RemoveAt(0);

    // Belirtilen filigranı belgeden kaldırın.
    possibleWatermarks.Remove(possibleWatermarks[0]);

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

Filigranlar için Daha Fazla Arama Kriteri

Belirli kriterlere sahip filigran bulmanın başka birçok yolu vardır. Seçici aramanın ardından ona göre Remove, RemoveAt veya Clear yöntemini kullanarak filigran(lar)ı koleksiyondan kaldırabiliriz. Sağlanan belgelerden filigran bulmanın yollarından bazıları şunlardır:

  • Belirli bir metne sahip filigranları bulun ve kaldırın
  • RegEx (Normal İfade) ile filigranları arayın ve kaldırın
  • Belirtilen metin biçimlendirmesine sahip arama filigranı
  • Köprü filigranlarını bulun ve kaldırın

Belirli Metin İçeren Filigranları Bul ve Kaldır

Aşağıdaki C# kodunu kullanarak tam dizeyi belirterek metin filigranlarını arayabilirsiniz:

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

RegEx ve Kaldır ile Filigranları Arayın

Filigranın metninde bir kalıp varsa, bu filigranları aramak için normal ifade (RegEx) sağlayabilir ve aşağıdaki C# kodunu kullanarak buna göre daha sonra kaldırabilirsiniz. Bu kod, ©YYYY ile tüm filigranları getirecektir.

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

Belirli Metin Biçimlendirmesiyle Filigranları Bulun ve Kaldırın

Yazı tipi adı, minimum/maks yazı tipi boyutu, kalın/italik/altı çizili vb. gibi bazı özel metin formatlarına sahip filigranları da bulabilirsiniz.

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

Köprü Filigranlarını Bul ve Kaldır

İçeriğinde köprüler bulunan metin filigranlarını bulmak için RegEx’i kullanabilirsiniz. Daha sonra, arama sonucunda köprü filigranları olup olmadığını koleksiyonda kontrol edebilirsiniz. Bunlar, herhangi bir kaldırma yöntemiyle kaldırılabilir. Aşağıdaki C# kodu, köprü içeren tüm filigranları kaldırır.

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

Filigran aramanızı hassaslaştırmanın başka birçok yolu vardır. Daha fazla ayrıntı için dokümantasyon adresini ziyaret edebilirsiniz. Sorgular için forumu ziyaret edin.

Çözüm

.NET uygulamalarınızda C# kullanarak Word belgeleri, Excel elektronik tabloları, Powerpoint sunumları, PDF belgeleri ve Visio çizimlerinden metin filigranlarının yanı sıra görüntü filigranlarını bulma ve kaldırma konusunda artık kendinize daha fazla güveneceğinize inanıyorum.

Ayrıca bakınız