Xen: Script zum checken von Druckdaten

Beitrag lesen

Hallo SELFHTML-Gemeinde,

ich habe ein Script gefunden, dass schön funktioniert um PDF, JPG, TIFF-Dateien zu prüfen auf Druckqualität. Um dieses voll zu verwenden muss man einen file-upload auf eigenem webspace einrichten (bei Hersteller is max. file-size 2MB).

Nun ist in dem Script folgendes geschrieben (printcheck.php):


<?php

// Dieses Programm geht davon aus, dass sich die zu prüfende Datei
// bereits auf dem Server befindet. Die Variable $link muss so gesetzt
// werden, dass die zu prüfende Datei dadurch von aussen per HTTP-GET
// abgerufen werden kann.
// Beispiel: $link = "http://www.ihrwebserver.de/temp/datei.pdf";


// Aufruf der Funktion falls zur Prüfung und Bearbeitung einer PDF-Datei
$resultArray = soapClassPdf($link);

// Aufruf der Funktion falls zur Prüfung und Bearbeitung einer Bilddatei
$resultArray = soapClassImage($link);





// ==========================================================================

//Soap Klasse wird aufgerufen für PDF spezialisiert
function soapClassPdf($link){

	// Einbindung der NuSOAP-Klasse
	// http://www.nusphere.com
	require_once 'includes/nusoap.php';

	$returnArray = array();

	$nusoapclient = new soapclient('http://soap.printcheck.info/wsdl/pdfFunctions.wsdl', true);
	$soapErr = $nusoapclient->getError();
	if (!$soapErr) {

		// Hier wird eine Session erstellt. Dazu werden die Zugangsdaten von Leadprint benötigt.
		$param = array('username' => 'IHR BENUTZERNAME', 'userpasswd' => 'IHR PASSWORT');
		$sessionData = $nusoapclient->call('initSession', $param, '', '', false, true);

		$jobTicket = $sessionData[ 'jobTicket' ];

		$returnArray['jobTicket'] = $jobTicket;

		//upload File
		$param = array('jobTicket' => $jobTicket, 'link' => $link);
		$result_upload_file = $nusoapclient->call('uploadFile', $param, '', '', false, true);
		$fileTicket = $result_upload_file[ 'fileTicket' ];

		$returnArray['fileTicket'] = $fileTicket;
		$returnArray['errorcode']['uploadFile'] = $result_upload_file['errorcode'];

		// Holen der wichtigsten PDF Daten
		$param = array('jobTicket' => $jobTicket, 'fileTicket' => $fileTicket ,'page' => 1, 'box' => 'crop');
		$result_pdf_data = $nusoapclient->call('getPdfData', $param, '', '', false, true);


		$returnArray['getPdfData']['width'] = $result_pdf_data['width'];
		$returnArray['getPdfData']['height'] = $result_pdf_data['height'];
		$returnArray['getPdfData']['pages'] = $result_pdf_data['pages'];
		$returnArray['getPdfData']['version'] = $result_pdf_data['version'];
		$returnArray['getPdfData']['rotate'] = $result_pdf_data['rotate'];
		$returnArray['getPdfData']['title'] = $result_pdf_data['tilte'];
		$returnArray['getPdfData']['creator'] = $result_pdf_data['creator'];
		$returnArray['getPdfData']['subject'] = $result_pdf_data['subject'];

		$returnArray['errorcode']['getPdfData'] = $result_pdf_data['errorcode'];

		// Konvertieren, Bereinigen und Anfügen eines Beschnittrandes zur hochgeladenen Datei
		$param = array('jobTicket' => $jobTicket, 'fileTicket' => $fileTicket ,'version' => 14, 'chop' => 1);
		$result_convert_pdf = $nusoapclient->call('convertPdf', $param, '', '', false, true);
		$newFileTicket = $result_convert_pdf[ 'fileTicket' ];

		$returnArray['errorcode']['convertPdf'] = $result_convert_pdf['errorcode'];

		$returnArray['convertPdf']['fileticket'] = $result_convert_pdf[ 'fileTicket' ];
		$returnArray['convertPdf']['link'] = $result_convert_pdf[ 'link' ];

		$param = array('jobTicket' => $jobTicket, 'fileTicket' => $newFileTicket ,'page' => 1, 'box' => 'crop');
		$result_pdf_data_convert = $nusoapclient->call('getPdfData', $param, '', '', false, true);



		$returnArray['errorcode']['getPdfDataFromConvert'] = $result_pdf_data_convert['errorcode'];
		$returnArray['getPdfDataFromConvert']['width'] = $result_pdf_data_convert['width'];
		$returnArray['getPdfDataFromConvert']['height'] = $result_pdf_data_convert['height'];
		$returnArray['getPdfDataFromConvert']['pages'] = $result_pdf_data_convert['pages'];
		$returnArray['getPdfDataFromConvert']['version'] = $result_pdf_data_convert['version'];
		$returnArray['getPdfDataFromConvert']['rotate'] = $result_pdf_data_convert['rotate'];
		$returnArray['getPdfDataFromConvert']['title'] = $result_pdf_data_convert['tilte'];
		$returnArray['getPdfDataFromConvert']['subject'] = $result_pdf_data_convert['subject'];
		$returnArray['getPdfDataFromConvert']['width'] = $result_pdf_data_convert['width'];

		// Überprüfen des hochgeladenen PDF
		$param = array('jobTicket' => $jobTicket, 'fileTicket' => $fileTicket ,'dpi' => 300);
		$result_check_pdf = $nusoapclient->call('checkPdf', $param, '', '', false, true);


		$returnArray['errorcode']['checkPdf'] = $result_check_pdf['errorcode'];

		$returnArray['checkPdf']['link'] = $result_check_pdf['link'];

		if(!empty($returnArray['checkPdf']['link'])){
			$handle = fopen ($returnArray['checkPdf']['link'], 'r');
			$contents = fgets ($handle);
			fclose ($handle);

			$logarray = unserialize($contents);


			if(!empty($logarray['SPOT COLORS'])){
				while (list ($key, $val) = each ($logarray['SPOT COLORS'])) {
					$returnArray['Spotcolors'][$key] = $val;
				}

			}
			if(!empty($logarray['WARNINGS'])){
				while (list ($key, $val) = each ($logarray['WARNINGS'])) {
					$returnArray['errorcode']['logdatei'][$key] = $val;
				}

			}
			if(!empty($logarray['FONTS'])){
				while (list ($key, $val) = each ($logarray['FONTS'])) {
					$returnArray['Fonts'][$key] = $val;
				}
			}
		}



		// Erstellen einer Vorschaugrafik für die erste Seite des hochgeladenen PDF mit Größe 150x150
		$param = array(	'jobTicket' => $jobTicket,
		'fileTicket' => $fileTicket,
		'imagetype' => 'jpeg',
		'width' => 150,
		'height' => 150,
		'dpi' => 100,
		'firstpage' => 1,
		'lastpage' => 1);
		$result_image_pdf_small = $nusoapclient->call('createImageFromPdf', $param, '', '', false, true);
		$imageFileTicketUpload = $result_image_pdf_small[ 'fileTicket' ];

		#$returnArray['errorcode']['createImageFromPdfSmall'] = $result_image_pdf_small['errorcode'];

		$returnArray['createImageFromPdfSmall']['page'] = $result_image_pdf_small['page'];
		$returnArray['createImageFromPdfSmall']['fileTicket'] = $result_image_pdf_small['fileTicket'];
		$returnArray['createImageFromPdfSmall']['link'] = $result_image_pdf_small['link'];



		// Erstellen einer Vorschaugrafik für die erste Seite des hochgeladenen PDF mit Größe 300x300
		$param = array(	'jobTicket' => $jobTicket,
		'fileTicket' => $fileTicket,
		'imagetype' => 'jpeg',
		'width' => 300,
		'height' => 300,
		'dpi' => 100,
		'firstpage' => 1,
		'lastpage' => 1);
		$result_image_pdf_big = $nusoapclient->call('createImageFromPdf', $param, '', '', false, true);
		$imageFileTicketUpload = $result_image_pdf_big[ 'fileTicket' ];

		#$returnArray['errorcode']['createImageFromPdfBig'] = $result_image_pdf_big['errorcode'];

		$returnArray['createImageFromPdfBig']['page'] = $result_image_pdf_big['page'];
		$returnArray['createImageFromPdfBig']['fileTicket'] = $result_image_pdf_big['fileTicket'];
		$returnArray['createImageFromPdfBig']['link'] = $result_image_pdf_big['link'];





		return($returnArray);
	}
}





//Soap Klasse wird aufgerufen für Bilder spezialisiert
function soapClassImage($link){

	// Einbindung der NuSOAP-Klasse
	// http://www.nusphere.com
	require_once 'includes/nusoap.php';

	$returnArray = array();

	$nusoapclient = new soapclient('http://soap.printcheck.info/wsdl/pdfFunctions.wsdl', true);
	$soapErr = $nusoapclient->getError();
	if (!$soapErr) {

		// Hier wird eine Session erstellt. Dazu werden die Zugangsdaten von Leadprint benötigt.
		$param = array('username' => 'IHR BENUTZERNAME', 'userpasswd' => 'IHR PASSWORT');
		$sessionData = $nusoapclient->call('initSession', $param, '', '', false, true);

		$jobTicket = $sessionData[ 'jobTicket' ];

		$returnArray['jobTicket'] = $jobTicket;

		//upload File
		$param = array('jobTicket' => $jobTicket, 'link' => $link);
		$result_upload_file = $nusoapclient->call('uploadFile', $param, '', '', false, true);
		$fileTicket = $result_upload_file[ 'fileTicket' ];

		$returnArray['fileTicket'] = $fileTicket;
		$returnArray['errorcode']['uploadFile'] = $result_upload_file['errorcode'];



		// Holen der wichtigsten Daten zur gerade erstellen Vorschaugrafik
		$param = array('jobTicket' => $jobTicket, 'fileTicket' => $fileTicket);
		$result_image_data = $nusoapclient->call('getImageData', $param, '', '', false, true);

		if($result_image_data['jpegcolorspace']	!= 2 && $result_image_data['colorspace'] == "rgb"){
			$returnArray['errorcode']['RGB'] = "RGB";
		}
		if($result_image_data['colorspace'] == "rgb"){
			$returnArray['errorcode']['Colorspace RGB'] = "Colorspace RGB";
		}
		if($result_image_data['jpegcolorspace'] == 1){
			$returnArray['errorcode']['Colorspace grau'] = "Colorspace grau";
		}
		if($result_image_data['colorspace'] == "lab"){
			$returnArray['errorcode']['Colorspace lab'] = "Colorspace lab";
		}
		if($result_image_data['compression'] == "lzw"){
			$returnArray['errorcode']['Colorspace LZW'] = "Colorspace LZW";
		}
		if($result_image_data['quality'] < 70){
			$returnArray['errorcode']['quality'] = "quality";
		}
		if(substr($result_image_data['dpi'], (strpos($result_image_data['dpi'], "x") + 1)) < 300){
			$returnArray['errorcode']['DPI'] = "DPI";
		}



		$returnArray['errorcode']['getImageData'] = $result_image_data['errorcode'];

		$returnArray['getImageData']['imagetype'] = $result_image_data['imagetype'];
		$returnArray['getImageData']['width'] = $result_image_data['width'];
		$returnArray['getImageData']['height'] = $result_image_data['hight'];
		$returnArray['getImageData']['colorspace'] = $result_image_data['colorspace'];
		$returnArray['getImageData']['dpi'] = $result_image_data['dpi'];
		$returnArray['getImageData']['geometry'] = $result_image_data['geometry'];
		$returnArray['getImageData']['filesize'] = $result_image_data['filesize'];
		$returnArray['getImageData']['compression'] = $result_image_data['compression'];
		$returnArray['getImageData']['quality'] = $result_image_data['quality'];
		$returnArray['getImageData']['jpegcolorspace'] = $result_image_data['jpegcolorspace'];
		$returnArray['getImageData']['signature'] = $result_image_data['signature'];




		// Erstellen einer Vorschaugrafik für die erste Seite des hochgeladenen PDF mit size 150x150
		$param = array(	'jobTicket' => $jobTicket,
		'fileTicket' => $fileTicket,
		'imagetype' => 'jpeg',
		'colorspace' => 'rgb',
		'quality' => 100,
		'width' => 150,
		'height' => 150,
		'dpi' => 100);
		$result_image_small = $nusoapclient->call('createImageFromImage', $param, '', '', false, true);
		$imageFileTicketUpload = $result_image_small[ 'fileTicket' ];


		$returnArray['createImageFromImageSmall']['fileTicket'] = $result_image_small['fileTicket'];
		$returnArray['createImageFromImageSmall']['link'] = $result_image_small['link'];



		// Erstellen einer Vorschaugrafik für die erste Seite des hochgeladenen PDF mit size 300x300
		$param = array(	'jobTicket' => $jobTicket,
		'fileTicket' => $fileTicket,
		'imagetype' => 'jpeg',
		'colorspace' => 'rgb',
		'quality' => 100,
		'width' => 300,
		'height' => 300,
		'dpi' => 100);
		$result_image_big = $nusoapclient->call('createImageFromImage', $param, '', '', false, true);
		$imageFileTicketUpload = $result_image_big[ 'fileTicket' ];


		$returnArray['createImageFromImageBig']['fileTicket'] = $result_image_big['fileTicket'];
		$returnArray['createImageFromImageBig']['link'] = $result_image_big['link'];

		return($returnArray);
	}
}
?>