Home arrow Samples arrow Concatenate Documents Make Text BiggerMake Text SmallerReset Text Size
Two Pages on One

This samples shows how to place two pages of an existing document on one landscape orientated page of a new document.

// Get a fresh copy of the sample PDF file
string filename = "Portable Document Format.pdf";
File.Copy(Path.Combine("../../../../PDFs/", filename), 
  Path.Combine(Directory.GetCurrentDirectory(), filename), true);
 
// Create the output document
PdfDocument outputDocument = new PdfDocument();
 
// Show single pages
// (Note: one page contains two pages from the source document)
outputDocument.PageLayout = PdfPageLayout.SinglePage;
 
XFont font = new XFont("Verdana", 8, XFontStyle.Bold);
XStringFormat format = new XStringFormat();
format.Alignment = XStringAlignment.Center;
format.LineAlignment = XLineAlignment.Far;
XGraphics gfx;
XRect box;
 
// Open the external document as XPdfForm object
XPdfForm form = XPdfForm.FromFile(filename);
 
for (int idx = 0; idx < form.PageCount; idx += 2)
{
  // Add a new page to the output document
  PdfPage page = outputDocument.AddPage();
  page.Orientation = PageOrientation.Landscape;
  double width  = page.Width;
  double height = page.Height;
 
  gfx = XGraphics.FromPdfPage(page);
 
  // Set page number (which is one-based)
  form.PageNumber = idx + 1;
 
  box = new XRect(0, 0, width / 2, height);
  // Draw the page identified by the page number like an image
  gfx.DrawImage(form, box);
 
  // Write document file name and page number on each page
  box.Inflate(0, -10);
  gfx.DrawString(String.Format("- {1} -", filename, idx + 1),
    font, XBrushes.Red, box, format);
 
  if (idx + 1 < form.PageCount)
  {
    // Set page number (which is one-based)
    form.PageNumber = idx + 2;
 
    box = new XRect(width / 2, 0, width / 2, height);
    // Draw the page identified by the page number like an image
    gfx.DrawImage(form, box);
 
    // Write document file name and page number on each page
    box.Inflate(0, -10);
    gfx.DrawString(String.Format("- {1} -", filename, idx + 2),
      font, XBrushes.Red, box, format);
  }
}
 
// Save output document
outputDocument.Save("TwoOnOne.pdf");
 
// Start the viewer
Process.Start("TwoOnOne.pdf");
 
< Prev   Next >
New! We no longer maintain this site. Visit the new PDFsharp and MigraDoc Foundation Homepage. © 2009 empira Software GmbH | Impressum | Created with Joomla!