NoPassGetPageInfo.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 GrapeCity.Documents.Pdf; using GrapeCity.Documents.Text; namespace DsPdfWeb.Demos { // This example shows how to load a password protected PDF and get its page count and page sizes. // For reference, the loaded PDF is protected with the owner password 'owner' and user password 'user'. public class NoPassGetPageInfo { public int CreatePDF(Stream stream) { using var fs = File.OpenRead(Path.Combine("Resources", "PDFs", "Wetlands-password-user.pdf")); // Set up DecryptionOptions to allow loading password protected PDFs without password: var dopt = new DecryptionOptions() { ThrowExceptionIfInvalidPassword = false }; var docSrc = new GcPdfDocument(); docSrc.Load(fs, dopt); // The PDF to hold the results: var doc = new GcPdfDocument(); var page = doc.NewPage(); // Set up a TextLayout to format the results: var tl = page.Graphics.CreateTextLayout(); tl.DefaultFormat.Font = StandardFonts.Courier; tl.DefaultFormat.FontSize = 14; tl.MaxWidth = doc.PageSize.Width; tl.MaxHeight = doc.PageSize.Height; tl.MarginAll = tl.Resolution; var captionFmt = new TextFormat(tl.DefaultFormat) { Font = StandardFonts.CourierBold }; // Get and print some of the source PDF stats: tl.AppendLine($"The source PDF contains {docSrc.Pages.Count} page(s).", captionFmt); foreach (var pg in docSrc.Pages) { tl.AppendLine($" Page at index {pg.Index}:", captionFmt); var sz = pg.GetRenderSize(); tl.AppendLine($" Page size is {sz.Width}x{sz.Height}."); tl.AppendLine($" Page has {(pg.Landscape ? "landscape" : "portrait")} orientation."); tl.AppendLine($" Page paper kind is '{pg.PaperKind}'."); } // Render the results: tl.PerformLayout(true); while (true) { var splitResult = tl.Split(null, out TextLayout rest); page.Graphics.DrawTextLayout(tl, PointF.Empty); if (splitResult != SplitResult.Split) break; tl = rest; tl.MarginTop = tl.Resolution; page = doc.Pages.Add(); } // Done: doc.Save(stream); return doc.Pages.Count; } } }