FindText.cs
// 
// このコードは、DioDocs for PDF のサンプルの一部として提供されています。
// © MESCIUS inc. All rights reserved.
// 
using System;
using System.IO;
using System.Drawing;
using GrapeCity.Documents.Common;
using GrapeCity.Documents.Pdf;
using GrapeCity.Documents.Text;

namespace DsPdfWeb.Demos
{
    // このサンプルでは、BalancedColumns サンプルで作成された PDF ファイルが
    // 読み込まれ、読み込まれたドキュメントの単語「雨」と「野菜」がすべて検出され、
    // これら2つの単語が異なる色で強調表示されます。
    public class FindText
    {
        public int CreatePDF(Stream stream)
        {
            // 読み込んだ PDF を操作している間は、元のファイルストリームを開いたままにしておく必要があります。詳しくは、LoadPDF を参照してください。
            using var fs = File.OpenRead(Path.Combine("Resources", "PDFs", "BalancedColumns.pdf"));
            	var doc = new GcPdfDocument();
                doc.Load(fs);
                // すべての「雨」を検索します。
                var findsLorem = doc.FindText(
                    new FindTextParams("雨", false, true),
                    OutputRange.All);
                // すべての「野菜」を検索します。
                var findsIpsum = doc.FindText(
                    new FindTextParams("野菜", false, true),
                    OutputRange.All);

                // すべての「雨」を半透明のオレンジ色の赤を使用してハイライトします。
                foreach (var find in findsLorem)
                    foreach (var ql in find.Bounds)
                        doc.Pages[find.PageIndex].Graphics.FillPolygon(ql, Color.FromArgb(100, Color.OrangeRed));
                // すべての「野菜」を赤紫色の枠線で囲みます。
                foreach (var find in findsIpsum)
                    foreach (var ql in find.Bounds)
                        doc.Pages[find.PageIndex].Graphics.DrawPolygon(ql, Color.MediumVioletRed);

                // PDF ドキュメントを保存します。
                doc.Save(stream);
            return doc.Pages.Count;
        }
    }
}