JQを使用してアップロードされたpdfファイルを、CLIとpdf2svgを使用してsvgファイルに変換するPHPファイルに送信しようとしています。最終的には、そのsvgファイルを返してsvgエディターに配置できるようにします。
現在、私はこれを持っています: svg-editor.js:
if(file.type.indexOf("pdf") != -1){
//convert to svg
//load svg string
var reader = new FileReader();
reader.onloadend = function(e) {
$.post("pdfuploads/pdfconvert.php", { 'pdf[]': [e.target.result] })
.done(function(data){
alert("Data Loaded: " + data );
svgCanvas.importSvgString(data, true);
svgCanvas.ungroupSelectedElement()
svgCanvas.ungroupSelectedElement()
svgCanvas.groupSelectedElements()
svgCanvas.alignSelectedElements("m", "page")
svgCanvas.alignSelectedElements("c", "page")
});
};
reader.readAsText(file);
}
上記は、ロードされているファイルの拡張子をチェックし、そのpdfの場合はphpファイルに投稿します。(すべて正常に動作しています)
私のphpファイル(drupalと結びついています):
<?php
$dir = getcwd();
define('DRUPAL_ROOT', $_SERVER['DOCUMENT_ROOT']); //added to make sure its defined as we're outside the use of index.php
chdir(DRUPAL_ROOT);
require_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
chdir($dir);
global $base_url;
$time = microtime();
$handle = fopen("pdfupload-".$time.".pdf", "wb");
if (fwrite($handle, file_get_contents($_POST['pdf'][0])) === FALSE) {
$error = "Cannot write to file";
exit;
}
fclose($handle);
//$file = file_put_contents('pdfupload-'.$time.'.pdf', $_POST['pdf'][0]);
$svg = exec("/usr/local/bin/pdf2svg pdfupload-".$time.".pdf output_page-".$time."%d.svg all");
cg_utils_watch('file pdf value','', $error);
cg_utils_watch('file svg value','', $svg);
echo "<pre>";
print_r($svg);
echo "</pre>";
return $svg;
ロギングと、$svg が svg ファイルを返さないという事実を無視します --
PDF ストリームは投稿から取得され、保存されます。残念なことに、アップロードとサーバーへの保存の間に PDF ファイルが破損します。PDFファイルを保存しますが、そのファイルを空で開くと、exec()でサーバーに書き込まれるsvgファイルも空になります。
誰にもアイデアがありますか、これを行うためのより良い方法を知っていますか?