Draw a page from one PDF document onto the current page of this document.

 

   

Syntax
 

[C#]
virtual int AddImageDoc(Doc doc, int page, XRect rect)

[Visual Basic]
Overridable Function AddImageDoc(doc As Doc, page As Integer, rect As XRect) As Integer

 

 

   

Params
 
Name Description
doc

The document to be used as the source.

page

The page you want drawn. Use one to indicate the first page.

rect

The portion of the page you want drawn. Pass null to specify the entire page.

The format of this string should be the same as that obtained via the XRect.String property.

return The ID of the newly added Image Object.

 

   

Notes
 

Draw a page from one PDF document onto the current page of this document returning the ID of the newly added object.

The page is scaled to fill the current Rect. It is transformed using the current Transform.

If the width or height of the current rectangle is zero the image is auto-sized. If you are working in TopDown mode the image is positioned with its top left pinned at the location indicated by the rectangle. If you are not in TopDown mode the bottom left of the image is pinned at the location indicated by the rectangle. In both cases the natural dimensions of the supplied image are used to determine the displayed width and height resulting in a 72 dpi output.

The Refactor setting determines whether new/modified redundant objects are eliminated when this function is invoked. Unless the document and the pages are big in terms of memory use and have many common objects, it is faster to disable refactor for adding the pages and enable it for saving the document. You can use SetInfo to change the setting.

 

   

Example
 

This example shows how to draw one PDF into another. It takes a PDF document and creates a 'four-up' summary document by drawing four pages on each page of the new document.

First we create an ABCpdf Doc object and read in our source document.

[C#]
Doc theSrc = new Doc();
theSrc.Read(Server.MapPath("../Rez/spaceshuttle.pdf"));
int theCount = theSrc.PageCount;

[Visual Basic]
Dim theSrc As Doc = New Doc()
theSrc.Read(Server.MapPath("../Rez/spaceshuttle.pdf"))
Dim theCount As Integer = theSrc.PageCount

Next we create a destination Doc object and set the MediaBox so that the page size will match that of the source document. We change the rect so that it occupies a quarter of the page with room to accomodate a small margin.

[C#]
Doc theDst = new Doc();
theDst.MediaBox.String = theSrc.MediaBox.String;
theDst.Rect.String = theDst.MediaBox.String;
theDst.Rect.Magnify(0.5, 0.5);
theDst.Rect.Inset(10, 10);
double theX, theY;
theX = theDst.MediaBox.Width / 2;
theY = theDst.MediaBox.Height / 2;

[Visual Basic]
Dim theDst As Doc = New Doc()
theDst.MediaBox.String = theSrc.MediaBox.String
theDst.Rect.String = theDst.MediaBox.String
theDst.Rect.Magnify(0.5, 0.5)
theDst.Rect.Inset(10, 10)
Dim theX As Double,theY As Double
theX = theDst.MediaBox.Width / 2
theY = theDst.MediaBox.Height / 2

We go through every page in the source document drawing a framed copy of each page at a different position on our four-up document. Every fourth page we add a new page into our destination document.

[C#]
for (int i = 1; i <= theCount; i++) {
  switch (i % 4) {
    case 1:
      theDst.Page = theDst.AddPage();
      theDst.Rect.Position(10, theY + 10);
      break;
    case 2:
      theDst.Rect.Position(theX + 10, theY + 10);
      break;
    case 3:
      theDst.Rect.Position(10, 10);
      break;
    case 0:
      theDst.Rect.Position(theX + 10, 10);
      break;
  }
  theDst.AddImageDoc(theSrc, i, null);
  theDst.FrameRect();
}

[Visual Basic]
Dim i As Integer
For i = 1 To theCount
  Select Case i Mod 4
    Case 1
      theDst.Page = theDst.AddPage()
      theDst.Rect.Position(10, theY + 10)
    Case 2
      theDst.Rect.Position(theX + 10, theY + 10)
    Case 3
      theDst.Rect.Position(10, 10)
    Case 0
      theDst.Rect.Position(theX + 10, 10)
  End Select
  theDst.AddImageDoc(theSrc, i, Nothing)
  theDst.FrameRect()
Next

Finally we save.

[C#]
theDst.Save(Server.MapPath("fourup.pdf"));
// finished

[Visual Basic]
theDst.Save(Server.MapPath("fourup.pdf"))
' finished

We get the following output.


fourup.pdf - [Page 1]

fourup.pdf - [Page 2]