$doc->InitSecurityHandler(); // Remove the alphabetic labels from example 1. $doc->RemovePageLabel(7); // Replace the Prefix in the decimal labels (from example 1). $label = $doc->GetPageLabel(4); if ($label->IsValid()) { $label->SetPrefix("A"); $label->SetStart(1); } // Add a new label $new_label = PageLabel::Create($doc->GetSDFDoc(), PageLabel::e_decimal, "B", 1); $doc->SetPageLabel(10, $new_label); // starting from page 10. $doc->Save($output_path . "newsletter_with_pagelabels_modified.pdf", SDFDoc::e_linearized); echo nl2br("Done. Result saved in newsletter_with_pagelabels_modified.pdf...\n"); $page_num = $doc->GetPageCount(); for ($i = 1; $i <= $page_num; ++$i) { echo "Page number: " . $i; $label = $doc->GetPageLabel($i); if ($label->IsValid()) { echo nl2br(" Label: " . $label->GetLabelTitle($i) . "\n"); } else { echo nl2br(" No Label.\n"); } } $doc->Close(); //----------------------------------------------------------- // Example 4: Delete all page labels in an existing PDF document. //----------------------------------------------------------- $doc = new PDFDoc($output_path . "newsletter_with_pagelabels.pdf"); $doc->GetRoot()->Erase("PageLabels");
for ($i = 1; $i <= $page_num; ++$i) { echo nl2br("Opening newsletter_split_page_" . $i . ".pdf...\n"); $in_doc = new PDFDoc($output_path . "newsletter_split_page_" . $i . ".pdf"); $new_doc->InsertPages($i, $in_doc, 1, $in_doc->GetPageCount(), PDFDoc::e_none); $in_doc->Close(); } $new_doc->Save($output_path . "newsletter_merge_pages.pdf", SDFDoc::e_remove_unused); echo nl2br("Done. Result saved in newsletter_merge_pages.pdf...\n"); $in_doc->Close(); // Sample 3 - Delete every second page echo nl2br("_______________________________________________\n"); echo nl2br("Sample 3 - Delete every second page...\n"); echo nl2br("Opening the input pdf...\n"); $in_doc = new PDFDoc($input_path . "newsletter.pdf"); $in_doc->InitSecurityHandler(); $page_num = $in_doc->GetPageCount(); while ($page_num >= 1) { $itr = $in_doc->GetPageIterator($page_num); $in_doc->PageRemove($itr); $page_num -= 2; } $in_doc->Save($output_path . "newsletter_page_remove.pdf", 0); echo nl2br("Done. Result saved in newsletter_page_remove.pdf...\n"); //Close the open document to free up document memory sooner than waiting for the //garbage collector $in_doc->Close(); // Sample 4 - Inserts a page from one document at different // locations within another document echo nl2br("_______________________________________________\n"); echo nl2br("Sample 4 - Insert a page at different locations...\n"); echo nl2br("Opening the input pdf...\n");
case Element::e_path: $data = $element->GetPathData(); $points = $data->GetPoints(); break; case Element::e_text: $data = $element->GetTextString(); echo nl2br($data . "\n"); break; case Element::e_form: $reader->FormBegin(); ProcessElements($reader); $reader->End(); break; } } } PDFNet::Initialize(); // Extract text data from all pages in the document echo nl2br("__________________________________________________\n"); echo nl2br("Sample 1 - Extract text data from all pages in the document.\n"); echo nl2br("Opening the input pdf...\n"); $doc = new PDFDoc($input_path . "newsletter.pdf"); $doc->InitSecurityHandler(); $pgnum = $doc->GetPageCount(); $page_reader = new ElementReader(); for ($itr = $doc->GetPageIterator(); $itr->HasNext(); $itr->Next()) { $page_reader->Begin($itr->Current()); ProcessElements($page_reader); $page_reader->End(); } echo nl2br("Done.\n");
$s->StampPage($doc, $page_one, $ps); $doc->Save($output_path . $input_filename . ".ex6.pdf", SDFDoc::e_linearized); $doc->Close(); //-------------------------------------------------------------------------------- // Example 7) Add image stamp at top right corner in every pages $doc = new PDFDoc($input_path . $input_filename); $doc->InitSecurityHandler(); $s = new Stamper(Stamper::e_relative_scale, 0.1, 0.1); $s->SetOpacity(0.8); $s->SetRotation(135); $s->SetAsBackground(false); $s->ShowsOnPrint(false); $s->SetAlignment(Stamper::e_horizontal_left, Stamper::e_vertical_top); $s->SetPosition(10.0, 10.0); $img = Image::Create($doc->GetSDFDoc(), $input_path . "peppers.jpg"); $ps = new PageSet(1, $doc->GetPageCount(), PageSet::e_all); $s->StampImage($doc, $img, $ps); $doc->Save($output_path . $input_filename . ".ex7.pdf", SDFDoc::e_linearized); $doc->Close(); //-------------------------------------------------------------------------------- // Example 8) Add Text stamp to first 2 pages, and image stamp to first page. // Because text stamp is set as background, the image is top of the text // stamp. Text stamp on the first page is not visible. $doc = new PDFDoc($input_path . $input_filename); $doc->InitSecurityHandler(); $s = new Stamper(Stamper::e_relative_scale, 0.07000000000000001, -0.1); $s->SetAlignment(Stamper::e_horizontal_right, Stamper::e_vertical_bottom); $s->SetAlignment(Stamper::e_horizontal_center, Stamper::e_vertical_top); $s->SetFont(Font::Create($doc->GetSDFDoc(), Font::e_courier, true)); $red = new ColorPt(1.0, 0.0, 0.0, 0.0); $s->SetFontColor($red);
// The following sample illustrates how to read/write a PDF document from/to // a memory buffer. This is useful for applications that work with dynamic PDF // documents that don't need to be saved/read from a disk. PDFNet::Initialize(); // Read a PDF document in a memory buffer. $file = new MappedFile($input_path . "tiger.pdf"); $file_sz = $file->FileSize(); $file_reader = new FilterReader($file); $mem = $file_reader->Read($file_sz); $test = array(); for ($i = 0; $i < strlen($mem); $i++) { $test[] = ord($mem[$i]); } $doc = new PDFDoc($mem, $file_sz); $doc->InitSecurityHandler(); $num_pages = $doc->GetPageCount(); $writer = new ElementWriter(); $reader = new ElementReader(); // Create a duplicate of every page but copy only path objects for ($i = 1; $i <= $num_pages; ++$i) { $itr = $doc->GetPageIterator(2 * $i - 1); $reader->Begin($itr->Current()); $new_page = $doc->PageCreate($itr->Current()->GetMediaBox()); $next_page = $itr; $next_page->Next(); $doc->PageInsert($next_page, $new_page); $writer->Begin($new_page); while (($element = $reader->Next()) != null) { //if ($element->GetType() == Element::e_path) $writer->WriteElement($element); }
// Finish the block of text $writer->WriteElement($builder->CreateTextEnd()); // Draw an image that will be clipped by the above text $writer->WriteElement($builder->CreateImage($img, 10.0, 100.0, 1300.0, 720.0)); $writer->End(); // save changes to the current page $doc->PagePushBack($page); // Start a new page ------------------------------------ // // The example illustrates how to embed the external font in a PDF document. // The example also shows how ElementReader can be used to copy and modify // Elements between pages. $reader = new ElementReader(); // Start reading Elements from the last page. We will copy all Elements to // a new page but will modify the font associated with text. $reader->Begin($doc->GetPage($doc->GetPageCount())); $page = $doc->PageCreate(new Rect(0.0, 0.0, 1300.0, 794.0)); $writer->Begin($page); // begin writing to this page $builder->Reset(); // Reset the GState to default // Embed an external font in the document. $font = Font::CreateTrueTypeFont($doc->GetSDFDoc(), $input_path . "font.ttf"); while (($element = $reader->Next()) != null) { if ($element->GetType() == Element::e_text) { $element->GetGState()->SetFont($font, 12); } $writer->WriteElement($element); } $reader->End(); $writer->End();