You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过PHP将PDF文件以JSON格式发送至AJAX应用

PHP端将PDF封装为JSON返回的实现方案

核心逻辑是将cURL获取到的二进制PDF内容做Base64编码后放入JSON结构,避免原始二进制字符破坏JSON格式,前端拿到编码内容后解码即可正常使用PDF。


完整PHP实现代码

<?php
// 初始化cURL请求远程PDF资源
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "填写远程PDF的实际请求地址");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 核心配置:将响应内容存入变量而非直接输出
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // 自动跟随重定向
curl_setopt($ch, CURLOPT_ENCODING, ""); // 自动处理gzip等压缩响应
// 如需携带请求头、Cookie、POST参数,在此处补充对应curl配置即可

$pdfRawContent = curl_exec($ch);
$requestError = curl_error($ch);
curl_close($ch);

// 请求异常处理
if ($requestError) {
    header('Content-Type: application/json');
    echo json_encode([
        'code' => 500,
        'message' => '远程PDF资源请求失败',
        'data' => null
    ]);
    exit;
}

// 对二进制PDF内容做Base64编码,消除不可见字符对JSON格式的影响
$base64Pdf = base64_encode($pdfRawContent);

// 输出标准JSON格式响应
header('Content-Type: application/json');
echo json_encode([
    'code' => 200,
    'message' => 'success',
    'data' => [
        'file_name' => 'document.pdf', // 可自定义返回给前端的文件名
        'mime_type' => 'application/pdf',
        'content' => $base64Pdf
    ]
]);
exit;
?>

关键注意事项

  • 绝对不能直接把原始二进制PDF内容拼接进JSON:二进制流包含大量不可见控制字符,会直接导致JSON格式损坏,前端无法正常解析。
  • 必须开启cURL的CURLOPT_RETURNTRANSFER配置,否则PDF内容会被直接输出到响应体,无法被PHP变量接收做后续处理。
  • 输出JSON前确保没有任何额外输出:包括PHP的BOM头、调试打印内容、PHP报错信息,否则会导致前端拿到的响应不是合法JSON格式。
  • 如果请求的PDF体积较大,建议适当调大PHP的memory_limit配置,避免内存不足报错。

前端对接说明

你已经完成前端代码准备的情况下,只需从返回的JSON中取出data.content字段,拼接前缀data:application/pdf;base64,后转为Blob对象,即可按照你之前准备的逻辑实现PDF的预览或下载,和常规HTTP请求下载PDF的效果完全一致。

内容的提问来源于stack exchange,提问作者Čamo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 00:24:22