Home arrow Samples arrow Mix MigraDoc & PDFsharp 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!