通过PHP从数据库输出PDF并通过Javascript

时间:2017-08-03 08:34:38

标签: javascript php arrays pdf

我试图将我存储在数据库中的PDF文件显示为BLOB文件。虽然我尝试了几种方法,但我似乎无法做到这一点。

以下是我(尝试)从我的数据库下载PDF文件的方法:

function fillArrays(){
$idArray = array();
    $sql = "SELECT oglas_id,slika,prioriteta FROM deska WHERE deska.datumz <= CURRENT_DATE AND deska.datumk >= CURRENT_DATE;";
    $result = mysqli_query($GLOBALS['conn'],$sql);
    $resultCheck = mysqli_num_rows($result);
    if($resultCheck>0){
        while($row = mysqli_fetch_assoc($result)){
            array_push($GLOBALS['idArray'],$row['oglas_id']);
            $b64Doc = chunk_split(base64_encode(file_get_contents($row['slika']))); // THIS LINE!
            $file = "data:application/pdf;base64,".$b64Doc; // THIS LINE!
            array_push($GLOBALS['imgArray'],$file); // THIS LINE!
            array_push($GLOBALS['prArray'],$row['prioriteta']);
        }
    }else{
        die("Oops there seems to be an error(arr)");
    }
}

代码我已标记为&#34;此行!&#34;应该将数据库中的所有PDF文件放入一个名为$imgArray的PDF文件数组中。然后我json_encode数组并将其分配给JavaScript中的imgArray变量:

var imgArray = <?php echo json_encode($imgArray) ?>;

最后,我尝试在通过JavaScript创建的表格中显示相同的PDF文件4次。 (我在主PHP文件中调用createTable()):

var idArray = window.idArray;
var imgArray = window.imgArray;
var prArray = window.prArray;

var screenH = screen.height/2.1;
var screenW = screen.width/2.1;

var tdW;
var tdH;

function createTables(){

    if(idArray.length>2){
        rows=2;
        cols=2;
        tdW='100%';
        tdH='100%';
    }else if(idArray.length==2){
        rows=1;
        cols=2;
        tdW='100%';
        tdH='100%';
    }else if(idArray.length==1){
        tdW='100%';
        tdH='100%';
    }

    var table = '';
    for(var r=0;r<rows;r++){
        table += '<tr>';
        for(var c=0;c<cols;c++){
            table += '<td style="max-width:'+tdW+';max-height:'+tdH+';" id="c'+c+r+'">';
            table += '<embed src="'+imgArray[1]+'" type="application/pdf" style="max-height:'+screenH+';max-width:'+screenW+';">';
            table += '</td>';
        }
        table += '</tr>';
    }
    document.write("<table>"+table+"</table>");
}

请参阅我尝试嵌入pdf文件的代码底部。网站上的输出是:

enter image description here

语言是斯洛文尼亚语,它说PDF文件已损坏。

1 个答案:

答案 0 :(得分:0)

json_encode数据服务器端,但不要在客户端调用JSON.parse。这意味着您将JSON编码的数据直接输出到<script src="">属性。

更改PHP编码过程以删除不必要的函数调用:

$b64Doc = base64_encode($row['slika']);

然后,您需要修改JavaScript以正确解析JSON。类似的东西:

var imgArray = JSON.parse('<?= json_encode($imgArray); ?>');

for (var i = 0; i < imgArray.length; i++) {
    table += '<embed src="' + imgArray[i] + '"></embed>';
}