function ProcessImage($image) { $image_mask = $image->IsImageMask(); $interpolate = $image->IsImageInterpolate(); $width = $image->GetImageWidth(); $height = $image->GetImageHeight(); $out_data_sz = $width * $height * 3; echo "Image: " . " width=\"" . $width . "\"" . " height=\"" . $height . "\n"; // $mtx = $image->GetCTM(); // image matrix (page positioning info) // You can use GetImageData to read the raw (decoded) image data //$image->GetBitsPerComponent(); //$image->GetImageData(); // get raw image data // .... or use Image2RGB filter that converts every image to RGB format, // This should save you time since you don't need to deal with color conversions, // image up-sampling, decoding etc. $img_conv = new Image2RGB($image); // Extract and convert image to RGB 8-bpc format $reader = new FilterReader($img_conv); // A buffer used to keep image data. $image_data_out = $reader->Read($out_data_sz); // $image_data_out contains RGB image data. // Note that you don't need to read a whole image at a time. Alternatively // you can read a chuck at a time by repeatedly calling reader.Read(buf_sz) // until the function returns 0. }
} debugLog("Converting and streaming file: \"" . $FILE_DIR . $fileName . "\"..."); // set the correct content-type header("Content-Type: application/vnd.ms-xpsdocument"); PDFNet::Initialize(); // set the conversion option to not create thumbnails on XOD files because // they will not be streamed back to the client. $xodOptions = new XODOutputOptions(); $xodOptions->SetOutputThumbnails(false); $filter = Convert::ToXod(realpath($FILE_DIR . $fileName), $xodOptions); $fReader = new FilterReader($filter); $bufferSize = 64 * 1024; $totalBytes = 0; debugLog("Start streaming..."); do { $buffer = $fReader->Read($bufferSize); echo $buffer; flush(); // prevents buffering the response so the client can receive them as they are written to the stream. $totalBytes += strlen($buffer); debugLog("Sent total: " . $totalBytes . " bytes"); } while (strlen($buffer) > 0); debugLog("Done."); } catch (Exception $e) { debugLog($e->getMessage()); debugLog($e->getTraceAsString()); header("HTTP/1.1 500 Internal Server Error"); echo "<h1>500 Internal Server Error</h1><br/>"; echo "The server encountered an unexpected condition which prevented it from fulfilling the request.<br/><br/>"; echo $e->getMessage() . "<br/>"; echo $e->getTraceAsString();
// Copyright (c) 2001-2014 by PDFTron Systems Inc. All Rights Reserved. // Consult LICENSE.txt regarding license information. //--------------------------------------------------------------------------------------- include "../../../PDFNetC/Lib/PDFNetPHP.php"; // Relative path to the folder containing the test files. $input_path = getcwd() . "/../../TestFiles/"; $output_path = $input_path . "Output/"; // 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;