splitting a pdf into images and saving files to amazon

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

Post Reply
cjkeane
Forum Contributor
Posts: 214
Joined: Fri Jun 11, 2010 1:17 pm

splitting a pdf into images and saving files to amazon

Post by cjkeane »

Hi everyone
I need to split every page of a pdf into images. The max pages in a pdf will be 5 pages, so in the end, I need to have the original pdf + individual pages, one jpg per pdf page. I need the pdf and the images saved in an aws bucket folder. So far, the pdf is saved, but the pdf is not being extracted as images. Any assistance would be appreciate. This is my code so far.

Code: Select all

// save pdf
	if(isset($_POST['pdf_upload']))  {						
		$pdf_msg="";
		$bucket="pdf_bucket"; // enter here your created bucket name
		if (!class_exists('S3'))require_once('S3.php');
		if (!defined('awsAccessKey')) define('awsAccessKey', 'myaccesskey'); 
		if (!defined('awsSecretKey')) define('awsSecretKey', 'mysecretkey'); //add your original secret key
		$s3 = new S3(awsAccessKey, awsSecretKey);
		$pdf_name = $_FILES['presentation_file_name']['name'];
		$pdf_tmp = $_FILES['presentation_file_name']['tmp_name'];
		$pdf_actual_name = time() ."-". basename( $_FILES['presentation_file_name']['name']);
		$allowtypes2=array("pdf");
		$max_file_size2="20480";	
		$errors2 = array(); 
		if (empty($_POST['presentation_name']) ) {$errors2[]='A presentation name is required.';	} 
		if (empty($_FILES['presentation_file_name']['name'])) {$errors2[]='A pdf file is required.';	}
		if((!empty($_FILES["presentation_file_name"])) && ($_FILES['presentation_file_name']['error'] == 0)) {
			$presentation_file_name = basename($_FILES['presentation_file_name']['name']);
			$presentation_name = $_POST['presentation_name'];
			$ext2 = substr($presentation_file_name, strrpos($presentation_file_name, '.') + 1);
			$filesize2=$_FILES['presentation_file_name']['size'];
			$max_bytes2=$max_file_size2*1024;
			if (!in_array($ext2, $allowtypes2)) {
				$errors2[]="Invalid extension for your file: <strong>".$presentation_file_name."</strong> Only PDF files are permitted.";
			} elseif($filesize2 > $max_bytes2) {
				$errors2[]= "Your file: <strong>".$presentation_file_name."</strong> is to big. Max file size is ".$max_file_size2."kb.";
			}
		}				
		if (empty($errors2)) { 
			$pdf_path = "uploads/pdfs/" . $company_id . "/" . $pdf_id . '/' .   $pdf_actual_name;
			$s3->putObjectFile($pdf_tmp, $bucket , $pdf_path, S3::ACL_PUBLIC_READ);
			// split pdf into images for slideshow
			$jpg_name = $pdf_actual_name; 
			$jpg_basename = substr($jpg_file_name,0,strpos($jpg_file_name,'.'));
			$jpg_file_name = basename($jpg_file_name, '.pdf');
			$jpg_img = new imagick('http://companyportfolios.s3.amazonaws.com/uploads/pdfs/'.$jpg_file_name.'.pdf');
			$jpg_img->setImageBackgroundColor('white');
			$jpg_img->setResolution(300,300);
			$jpg_num_pages = $jpg_img->getNumberImages();
			$jpg_img->setImageCompressionQuality(100);
			$jpg_images = NULL;
			for($jpg_i = 0;$jpg_i < $jpg_num_pages; $jpg_i++) {         
				$jpg_images[]=$jpg_basename.'-'.$i.'.jpg';
				$jpg_img->setIteratorIndex($i);
				$jpg_img->setImageFormat('jpeg');
				$jpg_tmp = $jpg_file_name.'-'.$i.'.jpg';
				$jpg_folder_path = 'http://companyportfolios.s3.amazonaws.com/uploads/pdfs/' . $company_id . '/' . $pdf_id . "/" . $jpg_tmp;
				$s3->putObjectFile($jpg_tmp, $bucket , $jpg_folder_path, S3::ACL_PUBLIC_READ);
			}
			$pdf_msg="<div style='color:red;'>PDF uploaded Successfully<div style='color:red;'>";
			echo $pdf_msg;
			$pdf_file_name = $pdf_actual_name;
			$presentation_file_name=mysqli_real_escape_string($dbc,ltrim($pdf_file_name));
			$presentation_name = mysqli_real_escape_string($dbc,$presentation_name); 
			$company_id = mysqli_real_escape_string($dbc,$id);
			$folder_date = mysqli_real_escape_string($dbc,$folder_date);
			$pdf_update_query ="INSERT INTO company_presentations (company_id,presentation_file_name,presentation_name) VALUES ($company_id',' $presentation_file_name','$presentation_name')";
			mysqli_query($dbc,$pdf_update_query) ; 
			echo '<div style="color:red;">The pdf has been uploaded and saved as: ' . $presentation_file_name . '</h4></div><br />';
			$presentation_file_name=$pdf_actual_name;							
		} else { 
			$presentation_file_name = "";
			//echo '<b>Validation Error(s):</b><br /><br />';
			foreach ($errors2 as $msg2) { 
				echo '<div style="color:red;"> -' . $msg2 . '</div><br />';
			}        
		}
	}

Post Reply