diff --git a/lib/templates/build_annotations.rb b/lib/templates/build_annotations.rb index f3fca7c1..96510e2c 100644 --- a/lib/templates/build_annotations.rb +++ b/lib/templates/build_annotations.rb @@ -5,12 +5,10 @@ module Templates module_function def call(data) - pdf = PDF::Reader.new(StringIO.new(data)) + pdf = HexaPDF::Document.new(io: StringIO.new(data)) pdf.pages.flat_map.with_index do |page, index| - annotations = page.objects.deref!(page.attributes[:Annots]) || [] - annotations.filter_map do |annot| - next if annot.nil? + (page[:Annots] || []).filter_map do |annot| next if annot[:A].blank? || annot[:A][:URI].blank? next unless annot[:Subtype] == :Link next if !annot[:A][:URI].starts_with?('https://') && !annot[:A][:URI].starts_with?('http://') @@ -30,10 +28,10 @@ module Templates { 'type' => 'external_link', 'value' => annot[:A][:URI], - 'x' => left / page.width.to_f, - 'y' => (page.height - top) / page.height.to_f, - 'w' => (right - left) / page.width.to_f, - 'h' => (top - bottom) / page.height.to_f + 'x' => left / page.box.width.to_f, + 'y' => (page.box.height - top) / page.box.height.to_f, + 'w' => (right - left) / page.box.width.to_f, + 'h' => (top - bottom) / page.box.height.to_f } end end