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

如何在PHP中将PDF文件转换为字节码以通过JSON传输?求助

PHP中PDF转字节码并通过JSON传输的解决方案

在PHP中直接传输原始字节到JSON会因为不可打印字符导致解析失败,通常的做法是将PDF内容编码为Base64格式(这是字节码的一种可打印表示形式),再嵌入JSON进行传输。以下是完整的实现步骤和代码示例:

1. 读取PDF文件并编码为Base64

使用file_get_contents()读取PDF文件内容,再通过base64_encode()将原始字节转换为Base64字符串:

// 替换为你的PDF文件路径
$pdfPath = './example.pdf';

// 检查文件是否存在
if (!file_exists($pdfPath)) {
    die("PDF文件不存在");
}

// 读取PDF原始字节并编码为Base64
$pdfBase64 = base64_encode(file_get_contents($pdfPath));

2. 封装为JSON数据

将Base64字符串放入数组,再用json_encode()生成JSON:

// 构造要传输的数据结构
$data = [
    'filename' => 'example.pdf',
    'pdf_content' => $pdfBase64
];

// 生成JSON(JSON_UNESCAPED_SLASHES避免转义斜杠,优化传输体积)
$jsonData = json_encode($data, JSON_UNESCAPED_SLASHES);

// 输出或传输JSON
echo $jsonData;

3. 接收端解码并还原PDF

如果接收端也是PHP,可通过以下步骤还原原始PDF文件:

// 接收JSON数据(假设从请求中获取)
$receivedJson = file_get_contents('php://input');
$receivedData = json_decode($receivedJson, true);

// 验证数据完整性
if (!isset($receivedData['pdf_content'])) {
    die("缺少PDF内容数据");
}

// 解码Base64并保存为PDF文件
$pdfBytes = base64_decode($receivedData['pdf_content']);
file_put_contents('./received_example.pdf', $pdfBytes);

注意事项

  • 大文件处理:如果PDF文件过大,file_get_contents()可能会超出PHP内存限制,可修改php.ini中的memory_limit参数,或使用分块读取+分块编码的方式处理。
  • 传输限制:HTTP请求通常有大小限制,若PDF过大,建议改用文件上传接口而非JSON内嵌的方式。

内容的提问来源于stack exchange,提问作者Raju Das

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 10:06:19