Class: Idml::Render::HyperlinkEmitter

Inherits:
Object
  • Object
show all
Defined in:
lib/idml/render/hyperlink_emitter.rb

Overview

Emits PDF Link annotations for IDML hyperlinks. After a spread renders, walk each visible text frame, look up its story's hyperlink sources, resolve each to a URL via HyperlinkResolver, and emit /Subtype /Link annotations.

When a PositionTracker is supplied (render path), link rects are computed from the tracker's recorded line positions — giving per-source rect precision instead of frame-level. Without a tracker, links fall back to the frame's bounding box (the original TODO 78 behavior).

Instance Method Summary collapse

Constructor Details

#initialize(writer:, package:, page_height:, layer_filter: nil, position_tracker: nil) ⇒ HyperlinkEmitter



16
17
18
19
20
21
22
23
24
# File 'lib/idml/render/hyperlink_emitter.rb', line 16

def initialize(writer:, package:, page_height:, layer_filter: nil,
               position_tracker: nil)
  @writer = writer
  @package = package
  @resolver = HyperlinkResolver.new(package)
  @page_height = page_height
  @layer_filter = layer_filter
  @position_tracker = position_tracker
end

Instance Method Details

#emit_for(spread, page_index) ⇒ Object



26
27
28
29
30
# File 'lib/idml/render/hyperlink_emitter.rb', line 26

def emit_for(spread, page_index)
  each_text_frame_on(spread) do |frame|
    emit_for_frame(frame, page_index)
  end
end