Example #1
0
$doc->PageInsert($p7, $cover);
$doc->PageInsert($p7, $cover);
$doc->PageInsert($p7, $cover);
// Replicate the cover page two more times by placing it before and after
// existing pages.
$doc->PagePushFront($cover);
$doc->PagePushBack($cover);
$doc->Save($output_path . "newsletter_page_clone.pdf", 0);
echo nl2br("Done. Result saved in newsletter_page_clone.pdf...\n");
$doc->Close();
// Sample 6 - Use ImportPages() in order to copy multiple pages at once
// in order to preserve shared resources between pages (e.g. images, fonts,
// colorspaces, etc.)
echo nl2br("_______________________________________________\n");
echo nl2br("Sample 6 - Preserving shared resources using ImportPages...\n");
echo nl2br("Opening the input pdf...\n");
$in_doc = new PDFDoc($input_path . "newsletter.pdf");
$in_doc->InitSecurityHandler();
$new_doc = new PDFDoc();
$copy_pages = new VectorPage();
for ($itr = $in_doc->GetPageIterator(); $itr->HasNext(); $itr->Next()) {
    $copy_pages->push($itr->Current());
}
$imported_pages = $new_doc->ImportPages($copy_pages);
for ($i = 0; $i < $imported_pages->size(); ++$i) {
    $new_doc->PagePushFront($imported_pages->get($i));
    // Order pages in reverse order.
    // Use PagePushBack() if you would like to preserve the same order.
}
$new_doc->Save($output_path . "newsletter_import_pages.pdf", 0);
echo nl2br("Done. Result saved in newsletter_import_pages.pdf...\n\n" . "Note that the output file size is less than half the size\n" . "of the file produced using individual page copy operations\n" . "between two documents\n");
// pages. Using PDFNet API it is possible to write applications that can
// re-order the pages such that they will display in the correct order
// when the hard copy pages are compiled and folded correctly.
//-----------------------------------------------------------------------------------
PDFNet::Initialize();
echo nl2br("-------------------------------------------------\n");
echo nl2br("Opening the input pdf...\n");
$in_doc = new PDFDoc($input_path . "newsletter.pdf");
$in_doc->InitSecurityHandler();
// Create a list of pages to import from one PDF document to another.
$import_pages = new VectorPage();
for ($itr = $in_doc->GetPageIterator(); $itr->HasNext(); $itr->Next()) {
    $import_pages->push($itr->Current());
}
$new_doc = new PDFDoc();
$imported_pages = $new_doc->ImportPages($import_pages);
// Paper dimension for A3 format in points. Because one inch has
// 72 points, 11.69 inch 72 = 841.69 points
$media_box = new Rect(0.0, 0.0, 1190.88, 841.6900000000001);
$mid_point = $media_box->Width() / 2;
$builder = new ElementBuilder();
$writer = new ElementWriter();
for ($i = 0; $i < $imported_pages->size(); ++$i) {
    // Create a blank new A3 page and place on it two pages from the input document.
    $new_page = $new_doc->PageCreate($media_box);
    $writer->Begin($new_page);
    // Place the first page
    $src_page = $imported_pages->get($i);
    $element = $builder->CreateForm($src_page);
    $sc_x = $mid_point / $src_page->GetPageWidth();
    $sc_y = $media_box->Height() / $src_page->GetPageHeight();