OutputIntents.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.Drawing;
- using System.Text;
- using GrapeCity.Documents.Pdf;
- using GrapeCity.Documents.Text;
- using GrapeCity.Documents.Drawing;
- using GCTEXT = GrapeCity.Documents.Text;
- using GCDRAW = GrapeCity.Documents.Drawing;
-
- namespace DsPdfWeb.Demos
- {
- // This sample shows how to add output intents to a PDF.
- // It adds several versions of the ICC Probe Profile
- // which deliberately distorts the rendered colors, so that it is easy
- // to make sure that a profile is actually being used. To see the effect
- // in this PDF, you may open it in Adobe Acrobat Reader DC, and set the
- // Edit | Preferences | Page Display | Show Overprint Preview option to 'Always'.
- // Then the deliberate color distortion added by the Probe Profile will be obvious.
- // For details please see the "Output Intents" section of the PDF Specification.
- public class OutputIntents
- {
- public int CreatePDF(Stream stream)
- {
- // The different versions of the ICC Probe profile:
- var profiles = new (string, string)[] {
- ("Probev2_ICCv4.icc", @"https://www.color.org/probeprofile.xalter"),
- ("Probev1_ICCv4.icc", @"https://www.color.org/probeprofile.xalter"),
- ("Probev1_ICCv2.icc", @"https://www.color.org/probeprofile.xalter"),
- };
- //
- var doc = new GcPdfDocument();
- var page = doc.NewPage();
- var g = page.Graphics;
- var sb = new StringBuilder();
- const string bullet = "\x2022\x2003";
- sb.AppendLine("This document contains the following output intents (first one is the default):");
- int i = 0;
- foreach (var profile in profiles)
- {
- sb.AppendLine($"{bullet}{profile.Item1}, source: {profile.Item2}");
- using (FileStream fs = File.OpenRead(Path.Combine("Resources", "Misc", profile.Item1)))
- {
- var oi = OutputIntent.Create($"Output intent testing {i++}", "", "http://www.color.org", profile.Item1, fs);
- doc.OutputIntents.Add(oi);
- }
- }
- sb.AppendLine(
- "Colors processed via the ICC Probe Profile are deliberately distorted, " +
- "so that it is easy to visually confirm that a profile is being used. " +
- "To see the effect in this PDF, you may open it in Adobe Acrobat Reader DC and make sure that " +
- "Edit | Preferences | Page Display | Show Overprint Preview is set to 'Always', " +
- "then the deliberate color distortion will be obvious.");
- var rc = Common.Util.AddNote(sb.ToString(), page);
- g.DrawImage(GCDRAW.Image.FromFile(Path.Combine("Resources", "Images", "roofs.jpg")),
- new RectangleF(rc.Left, rc.Bottom + 24, rc.Width, rc.Width), null, ImageAlign.StretchImage);
- //
- doc.Save(stream);
- return doc.Pages.Count;
- }
- }
- }
-