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

namespace DsPdfWeb.Demos
{
    // このサンプルでは、FindTextParams クラスを使用してテキストをすべて検索し、
    // GcPdfDocument.ReplaceText メソッドを使用して置換する方法を紹介しています。
    // 
    // ここでは、請求書の右上にある以下のテキストを置換しています。
    // 担当:"葡萄城 太郎" -> "葡萄 次郎"
    // 電話:"022-777-8210" -> "050-5490-4661"
    // 発行日:"2022年8月30日" -> 現在の日付
    // メール:"dio@example.com" -> "docs@example.com"
    public class ReplaceText
    {
        public int CreatePDF(Stream stream)
        {
            var doc = new GcPdfDocument();
            using var fs = File.OpenRead(Path.Combine("Resources", "PDFs", "invoicejp.pdf"));
            doc.Load(fs);

            // 以下のとおり置換します。
            // "葡萄城 太郎" -> "葡萄 次郎"
            // "022-777-8210" -> "050-5490-4661"
            doc.ReplaceText(new FindTextParams("葡萄城 太郎", false, true), "葡萄 次郎");
            doc.ReplaceText(new FindTextParams("022-777-8210", false, true), "050-5490-4661");

            // "2022年8月30日" -> 現在の日付
            var dt = DateTime.Now;
            doc.ReplaceText(new FindTextParams("2022年8月30日", false, true), dt.ToLongDateString());

            // "dio@example.com" -> "docs@example.com"
            var font = GrapeCity.Documents.Text.Font.FromFile(Path.Combine("Resources", "Fonts", "ipam.ttc"));
            doc.ReplaceText(new FindTextParams("dio@example.com", false, true), "docs@example.com", null, font);

            // 参考として、オリジナルのPDFを追加します。
            Common.Util.AddNote("参考として、修正前のオリジナルのPDFのコピーを次のページに追加しています。", doc.NewPage());
            var docOrig = new GcPdfDocument();
            docOrig.Load(fs);
            doc.MergeWithDocument(docOrig);

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