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

如何使用Ruby将二进制形式存储的PDF文件转换为可正常读取的PDF

Ruby实现DATA.TXT转可用PDF方案

核心问题说明

之前操作失败的核心原因通常是两类:一是读写二进制文件时未使用二进制模式,默认文本模式的编码转换、换行符自动处理破坏了PDF结构;二是DATA.TXT头尾存在非PDF格式的冗余字节,导致PDF解析器无法识别。

实现步骤

第一步:前置校验(可选)

先确认原始文件是否包含合法PDF标识,PDF规范要求文件必须以%PDF-开头,以%%EOF结尾:

File.open("DATA.TXT", "rb") do |f|
  header = f.read(10)
  puts "原始文件头:#{header}"
  puts "是否含合法PDF头:#{header.start_with?("%PDF-")}"
end

第二步:完整转换代码

自动提取有效PDF二进制段并输出:

# 二进制读取原始文件全部内容
raw_content = File.binread("DATA.TXT")

# 定位PDF有效内容起始位置
pdf_start_pos = raw_content.index("%PDF-")
raise "原始文件未检测到PDF头,无有效PDF内容" unless pdf_start_pos

# 定位PDF有效内容结束位置
pdf_end_pos = raw_content.rindex("%%EOF")
raise "原始文件未检测到PDF结束标记,PDF内容不完整" unless pdf_end_pos

# 截取完整PDF二进制内容(额外多取5字节兼容部分PDF末尾的冗余换行)
valid_pdf = raw_content[pdf_start_pos..pdf_end_pos + 5]

# 二进制写入输出PDF文件
File.binwrite("converted_result.pdf", valid_pdf)

puts "转换完成,输出文件:converted_result.pdf"

结果校验

转换完成后可通过pdf-reader gem验证文件有效性:

require "pdf/reader"

reader = PDF::Reader.new("converted_result.pdf")
puts "PDF有效页数:#{reader.page_count}"
puts "PDF元信息:#{reader.info.inspect}"

如果可正常输出页数,说明文件转换成功,若仍无法用Adobe Reader打开,可尝试更换其他PDF阅读器验证。

内容的提问来源于stack exchange,提问作者Sakhi Manti

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 20:24:00