LinearizedPdf.cs
//
// このコードは、DioDocs for PDF のサンプルの一部として提供されています。
// © MESCIUS inc. All rights reserved.
//
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.FontName = "Yu Gothic";
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.getString_ja(1, 0, 20));
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;
}
}
}