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

namespace GcPdfWeb.Samples.Basics
{
    // このサンプルは、ワードラップモード(WordWrap と CharWrap)における
    // テキスト折り返しの違いを示します。
    public class WordCharWrap
    {
        public int CreatePDF(Stream stream)
        {
            var str =
                "DioDocs(ディオドック)は、Excel や PDF などの文書を、コードから API を利用することで操作できます。" + Environment.NewLine +
                "DioDocs for PDF includes text and paragraph formatting, special characters and vertical text on all supported platforms.";

            var doc = new GcPdfDocument();
            var page = doc.NewPage();
            var g = page.Graphics;

            var tl = g.CreateTextLayout();
            tl.Append(str);
            tl.DefaultFormat.Font = StandardFonts.Times;
            tl.DefaultFormat.FontSize = 12;
            tl.MaxWidth = 72 * 3;

            tl.WrapMode = WrapMode.WordWrap;
            tl.PerformLayout(true);

            var dy = tl.Lines[0].Height + 72 / 16;
            var rc = new RectangleF(72, 72 + dy, tl.MaxWidth.Value, 72 * 2.0F);

            g.DrawString("WrapMode.WordWrap:", tl.DefaultFormat, new PointF(rc.Left, rc.Top - dy));
            g.DrawTextLayout(tl, rc.Location);
            g.DrawRectangle(rc, Color.CornflowerBlue);

            rc.Offset(0, 72 * 2.5F);
            tl.WrapMode = WrapMode.CharWrap;
            tl.PerformLayout(false);
            g.DrawString("WrapMode.CharWrap:", tl.DefaultFormat, new PointF(rc.Left, rc.Top - dy));
            g.DrawTextLayout(tl, rc.Location);
            g.DrawRectangle(rc, Color.CornflowerBlue);

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