【问题标题】:how to save json byte[] as pdf in php如何在php中将json字节[]保存为pdf
【发布时间】:2017-11-29 09:31:22
【问题描述】:

通过 curl 请求,我将 pdf 数据作为 jsonEncoded byte[] 获取。我需要创建这些数据并将其保存为 pdf。

你能帮我在 php 中如何做到这一点吗?

我的卷码是 -

$ch = curl_init($url); 
curl_setopt_array($ch, 
array( CURLOPT_POST => TRUE, 
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_BINARYTRANSFER => TRUE, 
CURLOPT_HTTPHEADER => array(    'Content-Type: application/json' ), 
CURLOPT_POSTFIELDS => json_encode($postData) )
);

$response = curl_exec($ch);

$responseData = json_decode($response, TRUE);

当我打印 responseData 时,它给了我这个结果 -

JVBERi0xLjQKJeLjz9MKMSAwIG9iaiAKPDwKL01hdHJpeCBbMSAwIDAgMSAwIDBdCi9TdWJ0eXBlIC9Gb3JtCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCi9MZW5ndGggMTUwMzc3Ci9SZXNvdXJjZXMgCjw8Ci9FeHRHU3RhdGUgCjw8Ci9HUzAgMiAwIFIKL0dTMSAzIDAgUgo+PgovQ29sb3JTcGFjZSAKPDwKL0NTMCA0IDAgUgo+PgovUHJvcGVydGllcyAKPDwKL01DMyAKPDwKL01ldGFkYXRhIDUgMCBSCj4+Ci9NQzIgCjw8Ci9NZXRhZGF0YSA2IDAgUgo+PgovTUMxIAo8PAovTWV0YWRhdGEgNyAwIFIKPj4KL01DMCAKPDwKL01ldGFkYXRhIDggMCBSCj4+Cj4+Ci9YT2JqZWN0IAo8PAovRm0xIDkgMCBSCi9GbTAgMTAgMCBSCi9GbTIgMTEgMCBSCj4+Ci9Gb250IAo8PAovVDFfMyAxMiAwIFIKL1QxXzIgMTMgMCBSCi9UMV8xIDE0IDAgUgovVDFfMCAxNSAwIFIKPj4KL1Byb2NTZXQgWy9QREYgL1RleHRdCj4+Ci9Gb3JtVHlwZSAxCi9UeXBlIC9YT2JqZWN0Ci9CQm94IFswIDAgNjEyIDc5Ml0KPj4Kc3RyZWFtCnic3L1bjy09ciX2/v2K/WgZ2KXknQQEAR5JbdiGgBmogXkYG4askWZst2TrMrDf5q+bwSCZychgXqoqso6MBvo7depUcW/uJNeK21r/+Nsf//d/tbz+0z//9se/+/vl9ef/12//7rc//qv/+6//4fUnf/LHf/ln/8Ofv5bXn/7pv/nzP3v99m9+/9vygv+p1/8JP6XKT/1e/a/wN7//u99S+WZ6Was+lA2vYPTHovMffv/3v/2H/+Z/Xkz4o7eO8Aff/gB/o9sf4L8u/9fBH2z+g4E/mPYH/Udv5eEPKv8hwB+W/AdT/2b4aZ1/nVq2P63zkirBH1z9aW3pDxn6F7q9TFV==

【问题讨论】:

    标签: php json pdf curl byte


    【解决方案1】:

    生成的数据字符串是base64 编码的数据。因此,要进一步处理它,您需要致电base64_decode( $responseData );1

    如果数据没有损坏,并且您将其保存到文件中,您应该会得到一个有效的 PDF 文件。

    例如:

    $responseData = json_decode($response, TRUE);
    // decode the base64 data
    $pdfData = base64_decode( $responseData );
    // save the decoded data to a PDF file
    file_put_contents( '/path/to/file.pdf', $pdfData );
    

    PDF 文件现在应该保存在/path/to/file.pdf


    1) 见base64_decode() documentation

    【讨论】:

    • 经验。 :) /+,尤其是数据末尾的 ==,如果您经常看到 base64,那么它们是无用的。如果您多看几次 base64 数据,您可能也会立即认出它。
    【解决方案2】:

    尝试像这样更改 HTTP 标头:

    $ch = curl_init($url); 
    curl_setopt_array($ch, 
      array( CURLOPT_POST => TRUE, 
      CURLOPT_RETURNTRANSFER => TRUE,
      CURLOPT_BINARYTRANSFER => TRUE, 
      CURLOPT_HTTPHEADER => array('Content-type:application/pdf'), 
      CURLOPT_POSTFIELDS => json_encode($postData) )
    );
    
    $response = curl_exec($ch);
    
    $responseData = json_decode($response, TRUE);
    

    【讨论】:

      猜你喜欢
      • 2011-11-21
      • 2012-07-21
      • 2015-06-18
      • 1970-01-01
      • 2010-11-26
      • 2022-01-14
      • 2020-07-05
      • 2015-11-15
      • 1970-01-01
      相关资源
      最近更新 更多