Я столкнулся с точно такой же проблемой и, в конечном итоге, столкнулся с использованием combine_pdf
Ruby gem, который имеет довольно простой API и прекрасно работает.(Хотя я не знаю, насколько хорошо он поддерживает упомянутые вами гиперссылки и метаданные.) Если это вариант для вас, я очень рекомендую его.Вы должны быть хороши с коротким скриптом, который выглядит примерно так:
require "combine_pdf"
stamp_pages = CombinePDF.new(stamp_filename).pages
pdf = CombinePDF.new(base_filename)
pdf.pages.each_with_index do |page, index|
page << stamp_pages[index > stamp_pages.size ? -1 : index]
end
pdf.save(output_filename)
До этого я использовал ImageMagick (который требует GhostScript для манипулирования PDF), но я терял много деталей при преобразовании PDF-файлов в изображения и обратно:
# Increase the `-density` number for higher quality.
# Add `+antialias` to stop ImageMagick from antialiasing your images.
convert -density 300 base_filename null: stamp_filename -compose multiply -layers composite output_filename