Class: Idml::Render::HyperlinkEmitter
- Inherits:
-
Object
- Object
- Idml::Render::HyperlinkEmitter
- 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
- #emit_for(spread, page_index) ⇒ Object
-
#initialize(writer:, package:, page_height:, layer_filter: nil, position_tracker: nil) ⇒ HyperlinkEmitter
constructor
A new instance of HyperlinkEmitter.
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 |