我试图将使用JQ上传的pdf文件发送到PHP文件,该文件使用CLI和pdf2svg将其转换为svg文件,最终目的是返回该svg文件,以便将其放入svg编辑器中。 / p>
目前我有这个: 在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文件也是空的。
有没有人有任何想法/知道更好的方法吗?
答案 0 :(得分:0)
好的,事实证明上面评论中的mkl是正确的,问题出在reader.readAsText(file)
行。
这是在帖子之前发布的,所以PDF文件被发布为文本。
在此之后:http://www.develop.com/htmlfivefileapi我将JQ更改为以下内容:
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.readAsDataURL(file);
}
它现在就像一个魅力:)