LinearizedPdf.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.Basics
- {
- // Shows how to create a linearized PDF file.
- // Note that while the code below was used to generate the PDF shown in the sample browser,
- // the browser sends a static copy of this file, so that the web server can send it
- // in smaller chunks (all other sample PDFs are generated on the fly).
- public class LinearizedPdf
- {
- public int CreatePDF(Stream stream)
- {
- // Number of pages to generate:
- const int N = 5000;
- var doc = new GcPdfDocument();
- // Prep a TextLayout to hold/format the text:
- var page = doc.NewPage();
- var tl = page.Graphics.CreateTextLayout();
- tl.DefaultFormat.Font = StandardFonts.Times;
- tl.DefaultFormat.FontSize = 12;
- // Use TextLayout to layout the whole page including margins:
- tl.MaxHeight = page.Size.Height;
- tl.MaxWidth = page.Size.Width;
- tl.MarginAll = 72;
- tl.FirstLineIndent = 72 / 2;
- // Generate the document:
- for (int pageIdx = 0; pageIdx < N; ++pageIdx)
- {
- // Note: for the sake of this sample, we do not care if a sample text does not fit on a page.
- tl.Append(Common.Util.LoremIpsum(2));
- tl.PerformLayout(true);
- doc.Pages.Last.Graphics.DrawTextLayout(tl, PointF.Empty);
- if (pageIdx < N - 1)
- {
- doc.Pages.Add();
- tl.Clear();
- }
- }
- // To create a linearized PDF we need to specify SaveMode.Linearized when saving the PDF:
- doc.Save(stream, SaveMode.Linearized);
- return doc.Pages.Count;
- }
- }
- }
-