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

将PDF保存为BLOB字节数组时如何避免丢失内嵌链接?

问题排查和解决方案

BLOB字段本身是原始二进制存储,不会主动修改PDF内容,内嵌链接丢失本质是PDF字节流在读写、存储、传输的某个环节被截断或篡改,可以按以下步骤逐一排查:

  • 第一步:验证本地文件读取是否完整
    读完byte[] content后,直接将该字节数组写入本地新PDF文件,打开检查内嵌链接是否正常。同时对比源文件和生成文件的MD5值,如果不一致,说明读取环节就出了问题:
    • 确认读取的源文件本身包含完整的内嵌链接
    • 排除读取前使用PDF操作库(如iText、PDFBox)修改过PDF,但未正确保存全量内容的情况
  • 第二步:验证数据库存储环节是否正常
    从MySQL中读取刚存的PDF字节流,写入本地文件检查链接。如果出现丢失,优先检查:
    • 存储用的BLOB字段类型是否足够:TINYBLOB最大256字节、BLOB最大65KB、MEDIUMBLOB最大16MB,超过对应长度要改用LONGBLOB,长度不够会直接截断字节流,导致PDF结构损坏丢内容
    • 排除ORM框架自动序列化/截断byte数组的问题,可以用原生JDBC的setBlob方法做一次写入测试,验证存储逻辑
  • 第三步:验证REST API传输环节是否正常
    如果数据库读出来的字节流MD5和源文件一致,问题出在传输或安卓端写入:
    • 优先用Base64编码二进制流后再传输,避免HTTP传输过程中特殊字符被转义篡改,安卓端收到后正确解码再写入文件
    • 确认HTTP头Content-Type设置为application/octet-stream,避免中间代理、网关对内容做额外处理

你当前贴的Files.readAllBytes读取逻辑本身没有问题,建议按上述步骤加MD5校验定位出问题的环节,只要全链路保留PDF完整字节流,内嵌链接不会丢失。


内容的提问来源于stack exchange,提问作者Emre Turan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 01:39:01