LinearizedPdf.cs
// 完毕:
using System;
using System.IO;
using System.Drawing;
using GrapeCity.Documents.Pdf;
using GrapeCity.Documents.Text;

namespace DsPdfWeb.Demos.Basics
{
    // 演示如何创建线性化 PDF 文件。
    // 请注意,虽然下面的代码用于生成示例浏览器中显示的 PDF,
    // 浏览器发送该文件的静态副本,以便 Web 服务器可以发送它
    // 更小的块(所有其他示例 PDF 都是即时生成的)。
    public class LinearizedPdf
    {
        public int CreatePDF(Stream stream)
        {
            // 生成的页数:
            const int N = 5000;
            var doc = new GcPdfDocument();
            // 准备一个 TextLayout 来保存/格式化文本:
            var page = doc.NewPage();
            var tl = page.Graphics.CreateTextLayout();
            tl.DefaultFormat.Font = StandardFonts.Times;
            tl.DefaultFormat.FontSize = 12;
            // 使用 TextLayout 布局整个页面,包括边距:
            tl.MaxHeight = page.Size.Height;
            tl.MaxWidth = page.Size.Width;
            tl.MarginAll = 72;
            tl.FirstLineIndent = 72 / 2;
            // 生成文档:
            for (int pageIdx = 0; pageIdx < N; ++pageIdx)
            {
                // 注意:对于此示例,我们不关心示例文本是否不适合页面。
                tl.Append(Common.Util.LoremIpsum(2));
                tl.PerformLayout(true);
                doc.Pages.Last.Graphics.DrawTextLayout(tl, PointF.Empty);
                if (pageIdx < N - 1)
                {
                    doc.Pages.Add();
                    tl.Clear();
                }
            }
            // 要创建线性化 PDF,我们需要在保存 PDF 时指定 SaveMode.Linearized:
            doc.Save(stream, SaveMode.Linearized);
            return doc.Pages.Count;
        }
    }
}