view pdfconcat.php @ 1:6ea97e3f7cb5 default tip

ignore log and upload, because they change in a live setup
author markus schnalke <meillo@marmaro.de>
date Thu, 29 Aug 2013 13:59:09 +0200
parents 8f7e68d54c6d
children
line wrap: on
line source

<!--
	pdfconcat-0.1
	Written by markus schnalke <meillo@marmaro.de>,
		developed at KIT-Library, Karlsruhe.
	This is free software under the CC0 license.
	http://marmaro.de/prog/pdfconcat
-->
<html>
<head>
<title>PDF concat and detextify</title>
<meta name="author" content="markus schnalke <meillo@marmaro.de>">
<meta name="copyright" content="No copyright applies.">
</head>
<body>
<h2>PDF concat and detextify</h2>

<?php

define('PDFDETEXTIFY', dirname(__FILE__).'/bin/pdfdetextify');
define('PDFCONCAT', dirname(__FILE__).'/bin/pdfconcat');

define('LOGFILE', dirname(__FILE__).'/log');
define('UPLOADDIR', 'upload');


function
detextify($file)
{
	$newfile = tempnam(sys_get_temp_dir(), basename(__FILE__).".");
	$cmd = sprintf("%s %s 2>&1 >%s", PDFDETEXTIFY, $file, $newfile);
	system($cmd);
	return $newfile;
}


function
concatpdfs($files)
{
	$newfile = sprintf("%s/%s/%s.pdf", dirname(__FILE__), UPLOADDIR,
			date('Y-m-d_H-i-s'));
	$cmd = sprintf("%s %s 2>&1 >%s", PDFCONCAT, implode(' ', $files),
			$newfile);
	system($cmd);
	foreach ($files as $file) {
		unlink($file);
	}
	return sprintf("%s/%s", UPLOADDIR, basename($newfile));
}


function
procfiles()
{
	$date = date("Y-m-d H:i:s");
	$ip = $_SERVER['REMOTE_ADDR'];
	$files = array();
	foreach ($_FILES as $key => $val) {
		if ($val['error'] == UPLOAD_ERR_NO_FILE) {
			continue;
		}
		if ($val['error'] > 0) {
			echo "Errors in transferring $val[name]. Skipping.\n";
			echo "($val[error])\n";
			continue;
		}
		if (isset($_POST[$key.'detextify']) && $_POST[$key.'detextify'] == 'on') {
			$files[] = detextify($val['tmp_name']);
		} else {
			$files[] = $val['tmp_name'];
		}
	}
	$newfile = concatpdfs($files);
	// log
	$logmsg = sprintf("[%s] %s creates `%s'\n", $date, $ip, $newfile);
	file_put_contents(LOGFILE, $logmsg, FILE_APPEND);

	return $newfile;

}


// main()

if (isset($_POST['submit'])) {
	echo '<pre>';
	$outfile = procfiles();
	echo '</pre>';
	echo '<hr>';
	echo '<h2><a href="'. $outfile .'">The concatenated PDF</a></h2>';
	echo '<hr>';
}

?>


<p>
	This webservice concatenates PDF files and optionally converts their
	text to bitmaps.
</p>
<p>
	The files are stored temporary on the webserver. The detextification
	function modifies them. Use this service only of you have the
	appropriate rights on the files.
</p>

<form action="<?php echo basename($_SERVER['SCRIPT_NAME']); ?>"
	method="post" enctype="multipart/form-data">
<p>
	<input type="file" name="pdf1" />
	detextify? <input type="checkbox" name="pdf1detextify" />
	<br />
	<input type="file" name="pdf2" />
	detextify? <input type="checkbox" name="pdf2detextify" />
	<br />
	<input type="file" name="pdf3" />
	detextify? <input type="checkbox" name="pdf3detextify" />
	<br />
	<input type="file" name="pdf4" />
	detextify? <input type="checkbox" name="pdf4detextify" />
	<br />
	<input type="file" name="pdf5" />
	detextify? <input type="checkbox" name="pdf5detextify" />
</p>
<p>
	(Maximum file size: <?php echo ini_get('upload_max_filesize'); ?>)
</p>
<p>
	<input type="submit" name="submit" />
</p>
</form>

</body>
</html>