如何比较 Ruby 中的两个 PDF 文件

How to compare two PDF files in Ruby

我正在尝试使用 UTF-8 比较两个 PDF 文件,但在执行以下代码时出现错误 "Invalid encoding":

 encoding = 'utf-8'
 base_path = set_up
 tear_down do
   f1 = File.read("#{TMP_DIR}/#{current_file_name}", encoding: encoding)
   f2 = File.read("#{base_path}/#{expected_file_name}", encoding: encoding)
   expect(f1).to eql f2
 end

我尝试使用:

f1.force_encoding("UTF-8")
f2.force_encoding("UTF-8")

我也试过这个:

f1.force_encoding("BINARY")

但是,我收到另一个错误:

Encoding::CompatibilityError: incompatible character encodings: ASCII-8BIT and UTF-8

我不会将文件作为字符串进行比较,而只是比较文件的 MD5 哈希值:

require 'digest'

tear_down do
  md5_1 = Digest::MD5.file("#{TMP_DIR}/#{current_file_name}")
  md5_2 = Digest::MD5.file("#{base_path}/#{expected_file_name}")

  expect(md5_1).to eql md5_2
end

谢谢@spickermann 的帮助 删除 2 个 pdf 文件之间的差异 "CreationDate" 后,这对我来说工作正常:

base_path = set_up
tear_down do
  md5_1 = `cat "#{TMP_DIR}/#{current_file_name}" | grep -a -v "/CreationDate" | md5sum`.strip
  md5_2  = `cat "#{base_path}/#{expected_file_name}" | grep -a -v "/CreationDate" | md5sum`.strip
  expect(md5_1).to eql md5_2
end