DocProperties.vb
- ''
- '' This code is part of Document Solutions for PDF demos.
- '' Copyright (c) MESCIUS inc. All rights reserved.
- ''
- Imports System.IO
- Imports System.Drawing
- Imports GrapeCity.Documents.Pdf
- Imports GrapeCity.Documents.Text
-
- '' Shows how to set various document properties such as PDF version, document info And metadata.
- Public Class DocProperties
- Sub CreatePDF(ByVal stream As Stream)
- '' Create a new PDF document:
- Dim 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 compression level 6 to reduce the file size.
- '' Setting the level to 0 will result in uncompressed PDF:
- doc.CompressionLevel = 0
- '' 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 = 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:
- Dim rc = Util.AddNote("DsPdf Document Properties sample.", doc.NewPage())
- ''
- Dim pg = doc.Pages.Last
- Dim g = pg.Graphics
- Dim 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)
- End Sub
- End Class
-