Recent posts

#8
Features / Native Text Hyperlink Support ...
Last post by Pexim SLani - February 13, 2026, 10:36:25 PM
Integrating Native Hyperlink Support into Scribus Text Engine
(Right-Click → Insert Hyperlink)


1. Problem Statement

Currently in Scribus, hyperlinks in PDF documents are implemented as separate PDF Annotation objects that are manually positioned over text frames.

This creates several workflow limitations:

  • Hyperlinks are not part of the text model.
  • If text reflows, annotations must be manually repositioned.
  • No "Insert Hyperlink" option exists in the text context menu.
  • Managing many links (e.g., TOC, references, external URLs) is inefficient.
  • Hyperlink styling cannot be directly tied to character styles.

In professional DTP workflows (books, magazines, technical documentation, hybrid print/digital PDFs), hyperlink support is expected to be integrated into the text engine, similar to:

  • Adobe InDesign
  • Affinity Publisher
  • LibreOffice Draw/Writer

This proposal outlines a possible architectural approach to implement native hyperlink support in Scribus.


2. Architectural Overview
Current Model (Simplified)

Scribus currently separates:

  • Text Engine (StoryText / text frames)
  • PDF Annotation System
  • PDF Export Layer

Hyperlinks exist only at the annotation level, not within text attributes.


3. Proposed Architectural Enhancement
Goal:

Add hyperlink as a character-level text attribute, similar to:

  • font
  • size
  • style
  • color


4. Core Implementation Layers
4.1 Text Engine Layer

Add a new character attribute:

struct HyperlinkAttribute {
    enum LinkType {
        ExternalURI,
        InternalPage,
        NamedDestination,
        Email
    };

    LinkType type;
    QString target;
};


This attribute should:

  • Attach to character ranges
  • Be stored inside StoryText
  • Move and reflow with text
  • Be serializable in the .sla format

4.2 UI Layer
Context Menu

When text is selected:

  • Right Click → Insert Hyperlink

If selection already contains hyperlink:

  • Edit Hyperlink
  • Remove Hyperlink


4.3 Hyperlink Dialog

Minimal dialog structure:

Fields:

Link Type:

External URL

Page

Named Destination

Email

Target (dynamic input depending on type)

Optional:

Checkbox: Apply "Hyperlink" character style



4.4 Styling System Integration

Hyperlinks should:

  • Be compatible with Character Styles
  • Allow a default "Hyperlink" style
  • Not hard-code visual formatting
  • Rendering should visually indicate hyperlink if styled accordingly.


4.5 PDF Export Layer

During PDF export:

For each text frame:

  • Iterate through character runs
  • Detect HyperlinkAttribute ranges
  • Compute bounding boxes for those ranges
  • Automatically generate corresponding PDF Annotation objects

QuotePseudo-code:

for each textFrame in document:
    for each textRun in textFrame:
        if textRun.hasHyperlink():
            rect = layoutEngine.calculateBoundingBox(textRun)
            pdfExporter.createLinkAnnotation(rect, textRun.hyperlinkTarget)

Important:

  • Must handle multi-line hyperlink ranges.
  • Must handle text across frames (linked frames).
  • Must respect rotated frames.


5. Backward Compatibility

  • Existing annotation workflow must remain functional.
  • Old documents must load without change.
  • New hyperlink attributes must not break SLA compatibility.


6. Optional Phase 2 Enhancements

  • Auto-detect URLs in pasted text.
  • Automatic TOC hyperlink generation.
  • Hyperlink panel (list all hyperlinks in document).
  • Convert annotation → text hyperlink tool.
  • Named destination manager.



Benefits

  • Professional digital publishing workflow
  • Reliable interactive PDFs
  • Easier TOC and cross-reference creation
  • Alignment with industry-standard DTP tools
  • Stronger adoption for hybrid print/digital projects


Conclusion

Native hyperlink support inside the text engine would significantly modernize Scribus' PDF workflow.

Even a minimal implementation (character attribute + export mapping) would dramatically improve usability and reduce manual annotation management.

This feature would elevate Scribus from "print-focused DTP with annotation workaround" to a fully capable hybrid publishing tool.
#9
Features / Re: Styles, Master pages, Scra...
Last post by Lynn - February 13, 2026, 07:40:16 PM
Using loops it is possible to iterate through the page and apply operations (whether finding or resizing/relocating items) to only the items on the page.

I don't really see an advantage to trying to do an operation to all the items simultaneously over iterating through the pages and doing it once per page - the script should take the same amount of time regardless.

Personally I would look for a match that's the same size and the same location, but you could have a variable that controlled whether it looked for one or both of those.
#10
Text and Typography / Re: Outline text without the t...
Last post by PhilipL - February 13, 2026, 06:56:30 PM
Oops. My eyesight is going!