You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
2.4 KiB
80 lines
2.4 KiB
14 years ago
|
<?php
|
||
|
|
||
|
// $Id$
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
* This class implements document (doc, odt, pdf, etc.) conversion for a generic
|
||
|
* multi-format document collection.
|
||
|
*/
|
||
|
|
||
|
class DocumentConverter {
|
||
|
|
||
|
private $converter_service_url = "http://localhost:8080/converter/service";
|
||
|
|
||
|
public function __construct($converter_url = NULL) {
|
||
|
if (!empty($converter_url))
|
||
|
$this->converter_service_url = $converter_url;
|
||
|
}
|
||
|
|
||
|
function convert($parameterArray = NULL, $dsid, $file, $output_ext) {
|
||
|
module_load_include('inc', 'fedora_repository', 'MimeClass');
|
||
|
|
||
|
#debug:
|
||
|
#drupal_set_message("Sending $file to ". $this->converter_service_url ." for convertsion to $output_ext", 'status');
|
||
|
|
||
|
if (!empty($parameterArray['converter_url'])) {
|
||
|
$this->converter_service_url = $parameterArray['converter_url'];
|
||
|
}
|
||
|
|
||
|
$helper = new MimeClass();
|
||
|
$inputType = $helper->get_mimetype($file);
|
||
|
$outputType = $helper->get_mimetype($output_ext);
|
||
|
$inputData = file_get_contents($file);
|
||
|
|
||
|
$outputFile = $file ."_". $dsid .".". $output_ext;
|
||
|
|
||
|
#debug:
|
||
|
#drupal_set_message("inputType: $inputType", 'status');
|
||
|
#drupal_set_message("outputType: $outputType", 'status');
|
||
|
#drupal_set_message("outputFile: $outputFile", 'status');
|
||
|
|
||
|
$ch = curl_init($this->converter_service_url);
|
||
|
curl_setopt($ch, CURLOPT_HTTPHEADER, array( "Content-Type: $inputType", "Accept: $outputType" ) );
|
||
|
curl_setopt($ch, CURLOPT_POST, 1 );
|
||
|
curl_setopt($ch, CURLOPT_TIMEOUT, 120); // times out after 2 minutes
|
||
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // return into a variable
|
||
|
curl_setopt($ch, CURLOPT_POSTFIELDS, $inputData); // add POST fields
|
||
|
#curl_setopt($ch, CURLOPT_HEADER, 1);
|
||
|
#curl_setopt($ch, CURLOPT_VERBOSE, 1);
|
||
|
|
||
|
$data = curl_exec($ch); // run the whole process
|
||
|
|
||
|
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
||
|
|
||
|
if (200 == $code) {
|
||
|
|
||
|
$returnValue = file_put_contents($outputFile, $data);
|
||
|
if ($returnValue > 0) {
|
||
|
drupal_set_message("Conversion successful.", 'status');
|
||
|
$_SESSION['fedora_ingest_files']["$dsid"] = $outputFile;
|
||
|
return $outputFile;
|
||
|
}
|
||
|
else {
|
||
|
return $returnValue; // a.k.a. FALSE.
|
||
|
}
|
||
|
}
|
||
|
else {
|
||
|
drupal_set_message("Conversion Failed. Webservice returned $code.", 'status');
|
||
|
return FALSE;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
$documentConverter = new DocumentConverter();
|
||
|
$inputFile = "document.docx";
|
||
|
$outputType = "txt";
|
||
|
$documentConverter->convert( null, 'TXT', $inputFile, $outputType);
|
||
|
/* */
|