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