class_mcInkscape.inc.php 3.95 KB
<?php
/** 
 * @copyright (c) 2014, netz.coop eG
 */

class mcInkscape {

	/**
	 * 
	 * @param string $param_svgFileString
	 */
	public static function svgToPng($param_input_filename, array $param_outputfile = null, array $param_quality = null) {
		self::replaceInSvGFile($param_input_filename);
		mcFile::manipulateOutputfileArray($param_outputfile, $param_input_filename);
		if (!$param_outputfile['filename']) {
			if (!$param_outputfile['filenameextension']) {
				$param_outputfile['filenameextension'] = '.png';
			}
			$outfile = mcFile::createTmpFile($param_outputfile);
		} else {
			$outfile = $param_outputfile['filename'];
		}

		if (!$param_quality['dpi']) {
			$param_quality['dpi'] = 90;
		}

		$order = "inkscape $param_input_filename --export-dpi=" . $param_quality['dpi'] . " -e $outfile";
//		D::ulli('$'.$order);
//		$shell_exec = shell_exec($order);	
		$shell_exec = mcBash::shell_exec($order);

		return $outfile;
	}

	/**
	 * 
	 * @param string $param_svgFileString
	 */
	public static function svgToPdf($param_input_filename, array $param_outputfile = null, array $param_quality = null) {
		mcFile::manipulateOutputfileArray($param_outputfile, $param_input_filename);
		if (!$param_outputfile['filename']) {
			if (!$param_outputfile['filenameextension']) {
				$param_outputfile['filenameextension'] = '.pdf';
			}

			$outfile = mcFile::createTmpFile($param_outputfile);
		} else {
			$outfile = $param_outputfile['filename'];
		}

		if (!$param_quality['DPI']) {
			$param_quality['DPI'] = 90;
		}
		if (!$param_quality['PDF_VERSION']) {
			$param_quality['PDF_VERSION'] = 1.4;
		}


		$order = "inkscape $param_input_filename --export-dpi=" . $param_quality['dpi'] . "  --export-pdf=$outfile";
//		D::ulli('$'.$order);
//		$shell_exec = shell_exec($order);	
		$shell_exec = mcBash::shell_exec($order);

		return $outfile;
	}

	public static function svgToJpg($param_in_svg, $param_out_jpg = false, $param_quality = 100) {
		$new_png = mcInkscape::svgToPng($param_in_svg);
//		D::li('1.1 $new_png: '.$new_png);
		return mcImage::pngToJpg($new_png, $param_out_jpg, $param_quality);
	}

	public static function inkscapeSvgToNormalSvg($param_input_filename, array $param_outputfile = null) {
		self::replaceInSvGFile($param_input_filename);

		mcFile::manipulateOutputfileArray($param_outputfile, $param_input_filename);
		if (!$param_outputfile['filename']) {
			if (!$param_outputfile['filenameextension']) {
				$param_outputfile['filenameextension'] = '.svg';
			}

			$outfile = mcFile::createTmpFile($param_outputfile);
		} else {
			$outfile = $param_outputfile['filename'];
		}

		$inkscape_order = "inkscape -T " . $param_input_filename . " -l " . $outfile . "  ";

		$shell_exec = mcBash::shell_exec($inkscape_order);

		return $outfile;
	}
	
	
	public static function inkscapeSvgToNormalSvgPrint($param_content) {
		
		$param_input_filename=  mcFile::createTmpFile(array('prefix'=>'in_'.uniqid(),'filenameextension'=>'.svg','dirname'=>'media/tmp'));
		$param_outputfile=  mcFile::createTmpFile(array('prefix'=>'out_'.uniqid(),'filenameextension'=>'.svg','dirname'=>'media/tmp'));
		$doc = new DOMDocument();
		$doc->loadXML($param_content);
		$doc->save($param_input_filename);
		self::replaceInSvGFile($param_input_filename);
		$inkscape_order = "inkscape -T " . $param_input_filename . " -l " . $param_outputfile . "  ";

		$shell_exec = mcBash::shell_exec($inkscape_order);
		$svgfile_content = mcFile::getFileContent($param_outputfile, true);
		
		unlink($param_input_filename);
		unlink($param_outputfile);
		
		return $svgfile_content;
	}
	

	public function replaceInSvGFile($param_input_filename) {
		$replacearray = array(
		 'flowpara' => 'flowPara',
		 'flowspan' => 'flowSpan',
			);//Mage::helper('anc_printconfigproduct/constant')->get('ancTransTagsCaseInkscape');
		$str = implode("\n", file($param_input_filename));
		$fp = fopen($param_input_filename, 'w');
		foreach ($replacearray as $key => $value) {
			$str = str_replace($key, $value, $str);
		}
		fwrite($fp, $str, strlen($str));
	}

}

?>