0

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ファイルも空になります。

誰にもアイデアがありますか、これを行うためのより良い方法を知っていますか?

4

1 に答える 1