function apply(&$box, &$driver) { $link_target = $box->getCSSProperty(CSS_HTML2PS_LINK_TARGET); if (CSSPseudoLinkTarget::is_external_link($link_target)) { $driver->add_link($box->get_left(), $box->get_top(), $box->get_width(), $box->get_height(), $link_target); } elseif (CSSPseudoLinkTarget::is_local_link($link_target)) { if (isset($driver->anchors[substr($link_target, 1)])) { $anchor = $driver->anchors[substr($link_target, 1)]; $driver->add_local_link($box->get_left(), $box->get_top(), $box->get_width(), $box->get_height(), $anchor); } } }
function parse($value, &$pipeline) { // Keep local links (starting with sharp sign) as-is if (CSSPseudoLinkTarget::is_local_link($value)) { return $value; } $data = @parse_url($value); if (!isset($data['scheme']) || $data['scheme'] == "" || $data['scheme'] == "http") { return $pipeline->guess_url($value); } else { return $value; } }
function show(&$viewport) { if (CSSPseudoLinkTarget::is_external_link($this->pseudo_link_target)) { $viewport->add_link($this->get_left(), $this->get_top(), $this->get_width(), $this->get_height(), $this->pseudo_link_target); } if (CSSPseudoLinkTarget::is_local_link($this->pseudo_link_target)) { if (isset($viewport->anchors[substr($this->pseudo_link_target, 1)])) { $anchor = $viewport->anchors[substr($this->pseudo_link_target, 1)]; $viewport->add_local_link($this->get_left(), $this->get_top(), $this->get_width(), $this->get_height(), $anchor); } } // Draw border of the box $this->border->show($viewport, $this); // Render background of the box $this->background->show($viewport, $this); parent::show($viewport); return true; }