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

namespace DsPdfWeb.Demos
{
    // PDF バージョン、ドキュメント情報、メタデータなど、さまざまなドキュメント情報を設定する方法を示します。
    public class DocProperties
    {
        public int CreatePDF(Stream stream)
        {
            // 新規 PDF ドキュメントを作成します。
            var doc = new GcPdfDocument();
            // 通常、文書に書き込まれる PDF バージョンは、自動的に
            // (この文書で実際に使用されている機能に必要な最小限のバージョンとして)
            // 決定されますが、明示的に設定することができます。
            doc.PdfVersion = "1.7";
            // 既定では、GcPdfDocument はファイルサイズを小さくするために CompressionLevel.Fastest を使用します。
            // レベルを CompressionLevel.NoCompression に設定すると、非圧縮の PDF が生成されます。
            doc.CompressionLevel = CompressionLevel.NoCompression;
            // デフォルトでは、ドキュメントで使用されているグリフだけを含むフォントサブセットが埋め込まれています。
            // これはフォント全体を埋め込むように変更することができ(ファイルサイズが大きくなる可能性があります)、
            // フォントを埋め込まないようにすることができます
            // 埋め込みは、GcPdfDocument.Fonts コレクションを使用して個々のフォントに対しても制御できます)します。
            doc.FontEmbedMode = FontEmbedMode.NotEmbed;
            // タイトル、著者などのドキュメントプロパティは GcPdfDocument.DocumentInfo で設定できますが、
            // 同様のプロパティは GcPdfDocument.Metadata で設定でき、メタデータで設定されたほとんどの
            // PDF リーダープロパティ(下記参照)が優先されることに注意してください。
            // ここでは DocumentInfo で利用可能ないくつかのプロパティを設定します。
            doc.DocumentInfo.Title = "サンプルPDF文書";
            doc.DocumentInfo.Author = "MESCIUS";
            doc.DocumentInfo.Subject = "サンプルコードで作成";
            doc.DocumentInfo.Producer = "メシウス株式会社";
            doc.DocumentInfo.Creator = "DioDocs for PDF";
            // サンプルとして、CreationDate には10年後の日付を設定していますします。
            doc.DocumentInfo.CreationDate = Common.Util.TimeNow().AddYears(10);
            // ドキュメントメタデータは、GcPdfDocument.Metadataプロパティを介して利用できます。
            // 以下のようないくつかの事前定義された項目を提供します。
            doc.Metadata.Contributors.Add("寄与貢献者 1");
            doc.Metadata.Contributors.Add("寄与貢献者 2");
            doc.Metadata.Contributors.Add("寄与貢献者 3");
            doc.Metadata.Copyright = "© MESCIUS inc. All rights reserved.";
            doc.Metadata.Creators.Add("作成者 1");
            doc.Metadata.Creators.Add("作成者 2");
            doc.Metadata.Creators.Add("作成者 3");
            doc.Metadata.Description = "サンプル文書の説明";
            doc.Metadata.Keywords.Add("MESCIUS");
            doc.Metadata.Keywords.Add("DioDocs");
            doc.Metadata.Keywords.Add("キーワード");
            doc.Metadata.Source = "メシウス DioDocs";
            // AddPropertyメソッドを使用して、任意のメタデータを追加することもできます。
            doc.Metadata.AddProperty("http://purl.org/dc/elements/1.1/", "language", "Japanese");
            // 最後に、ページとテキストをドキュメントに追加して保存します。
            Common.Util.AddNote("PDF ドキュメントプロパティを設定したサンプル文書", doc.NewPage());
            // PDF ドキュメントを保存します。
            doc.Save(stream);
            return doc.Pages.Count;
        }
    }
}