Next()) != null) // Read page contents { switch ($element->GetType()) { case Element::e_image: case Element::e_inline_image: // remove all images by skipping them break; case Element::e_text:// Process text strings... { // Set all text to blue color. $gs = $element->GetGState(); $gs->SetFillColorSpace(ColorSpace::CreateDeviceRGB()); $cp = new ColorPt(0.0, 0.0, 1.0); $gs->SetFillColor($cp); $writer->WriteElement($element); break; } case Element::e_form:// Recursively process form XObjects { $reader->FormBegin(); ProcessElements($reader, $writer); $reader->End(); break; } default: $writer->WriteElement($element); } } } PDFNet::Initialize(); echo nl2br("-------------------------------------------------\n"); // Open the test file echo nl2br("Opening the input file...\n"); $doc = new PDFDoc($input_path.$input_filename); $doc->InitSecurityHandler(); $writer = new ElementWriter(); $reader = new ElementReader(); $itr = $doc->GetPageIterator(); while ($itr->HasNext()) { $page = $itr->Current(); $reader->Begin($page); $writer->Begin($page, ElementWriter::e_replacement, false); ProcessElements($reader, $writer); $writer->End(); $reader->End(); $itr->Next(); } $doc->Save($output_path.$output_filename, SDFDoc::e_remove_unused); echo nl2br("Done. Result saved in ".$output_filename."...\n"); ?>