DocProperties.cs
 // // This code is part of Document Solutions for PDF demos. // Copyright (c) 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; using GrapeCity.Documents.Drawing; using GCDRAW = GrapeCity.Documents.Drawing; namespace DsPdfWeb.Demos { // Shows how to set various document properties such as PDF version, document info and metadata. public class DocProperties { public int CreatePDF(Stream stream) { // Create a new PDF document: var doc = new GcPdfDocument(); // While normally the PDF Version written into the document is determined automatically // (as the minimal version needed for the features actually used in this document), // it can be explicitly set: doc.PdfVersion = "1.7"; // By default, GcPdfDocument uses CompressionLevel.Fastest to reduce the file size. // Setting the level to CompressionLevel.NoCompression will result in uncompressed PDF: doc.CompressionLevel = CompressionLevel.NoCompression; // By default, font subsets containing just the glyphs used in the document, // are embedded. This can be changed to embed whole fonts (which may result in // huge file size) or to not embed fonts as we do here (embedding can also // be controlled for individual fonts using the GcPdfDocument.Fonts collection): doc.FontEmbedMode = FontEmbedMode.NotEmbed; // Document properties such as title, author etc. can be set on GcPdfDocument.DocumentInfo, // but it should be noted that similar properties can be set in the GcPdfDocument.Metadata // and in most PDF readers properties set in metadata (see below) take precedence. // Here we set some of the properties available in DocumentInfo: doc.DocumentInfo.Title = "DsPdf Document Info Sample"; doc.DocumentInfo.Author = "Jaime Smith"; doc.DocumentInfo.Subject = "GcPdfDocument.DocumentInfo"; doc.DocumentInfo.Producer = "DsPdfWeb Producer"; doc.DocumentInfo.Creator = "DsPdfWeb Creator"; // For sample sake, set CreationDate to a date 10 years in the future: doc.DocumentInfo.CreationDate = Common.Util.TimeNow().AddYears(10); // Document metadata is available via the GcPdfDocument.Metadata property. // It provides a number of predefined accessors, such as: doc.Metadata.Contributors.Add("contributor 1"); doc.Metadata.Contributors.Add("contributor 2"); doc.Metadata.Contributors.Add("contributor 3"); doc.Metadata.Copyright = "MESCIUS inc."; doc.Metadata.Creators.Add("Creator 1"); doc.Metadata.Creators.Add("Creator 2"); doc.Metadata.Creators.Add("Creator 3"); doc.Metadata.Description = "Sample document description"; doc.Metadata.Keywords.Add("Keyword1"); doc.Metadata.Keywords.Add("MESCIUS"); doc.Metadata.Keywords.Add("Keyword3"); doc.Metadata.Source = "Sourced by DsPdfWeb"; // Arbitrary metadata can also be added using the AddProperty method: doc.Metadata.AddProperty("http://purl.org/dc/elements/1.1/", "language", "English"); // Finally, add a page and some text to the document and save it: var rc = Common.Util.AddNote("DsPdf Document Properties sample.", doc.NewPage()); // var pg = doc.Pages.Last; var g = pg.Graphics; var tl = g.CreateTextLayout(); tl.AppendLine("See the source code of this demo (C# or VB.NET) for details on how to access the document properties and metadata."); tl.AppendLine(); tl.AppendLine("When viewing the PDF, click the 'Document properties' button located in the top right part of the DsPdfViewer toolbar " + "to see the properties associated with this PDF document."); tl.MaxWidth = pg.Bounds.Width - rc.X * 2; tl.MarginLeft = rc.X; tl.MarginTop = rc.Bottom + 36; g.DrawTextLayout(tl, PointF.Empty); // Done: doc.Save(stream); return doc.Pages.Count; } } }