Comprendere i metadati XML e i segnalibri PDF: una guida tecnica.

Argomenti principali trattati.
📍 Destinazioni.
Marcatori di posizione precisi che definiscono posizioni specifiche all'interno dei documenti PDF. Questi consentono una navigazione precisa per segnalibri e collegamenti ipertestuali, mentre le strutture dei documenti forniscono funzionalità di indice gerarchico.
Metadati XML.
Flussi XML strutturati che forniscono metadati completi del documento utilizzando formati XMP standardizzati, estendendosi oltre le proprietà di base del documento per includere informazioni descrittive dettagliate.
Allegati.
Capacità completa di incorporamento di file che confeziona risorse esterne direttamente all'interno dei documenti PDF, creando pacchetti di documenti autonomi simili agli allegati di posta elettronica.
Annotazioni.
Elementi di sovrapposizione interattivi che aggiungono testo, grafica e funzionalità cliccabili alle pagine PDF senza modificare il contenuto sottostante. Include collegamenti ipertestuali per una navigazione fluida del documento e vari strumenti di markup per una maggiore interazione con il lettore.
Segnalibri e destinazioni.

La navigazione del documento si basa su strutture gerarchiche di segnalibri, tecnicamente note come. struttura del documentoQuesto sistema organizzato ad albero presenta voci cliccabili, comunemente titoli di capitoli, intestazioni di sezioni e nomi di sottosezioni, che consentono ai lettori di accedere rapidamente a sezioni specifiche del documento. Ogni voce di segnalibro combina il testo visualizzato con le informazioni di destinazione che specificano esattamente dove il collegamento deve portare.
Comprensione delle destinazioni
Le destinazioni PDF fungono da marcatori di posizione precisi all'interno di un documento, specificando quale pagina visualizzare, dove posizionare la visualizzazione in quella pagina e quale livello di zoom applicare. È possibile creare destinazioni in due modi: definirle direttamente inline (che useremo nei nostri esempi per chiarezza) o farvi riferimento per nome tramite un sistema di denominazione a livello di documento. La maggior parte dei lettori PDF presenta i segnalibri in un pannello di navigazione accanto al contenuto principale del documento.
Ogni destinazione utilizza una struttura a matrice in cui gli elementi specifici variano in base al comportamento di visualizzazione che si desidera ottenere. Ecco i principali modelli di destinazione disponibili:
Tabella dei tipi di destinazione
Nota: "page" rappresenta un riferimento indiretto a un oggetto pagina. Per impostazione predefinita, queste destinazioni funzionano con i limiti della cornice di ritaglio della pagina, ricadendo sulla cornice dei media quando non è definita alcuna cornice di ritaglio.
| Array | Description |
|---|---|
| [page /Fit] | Scales the page to fit completely within the viewer window, adjusting both width and height proportionally. |
| [page /FitH top] | Positions the specified top coordinate at the window’s top edge while scaling horizontally to fit the full page width. |
| [page /FitV left] | Aligns the specified left coordinate with the window’s left edge while scaling vertically to fit the full page height. |
| [page /XYZ left top zoom] | Positions the coordinates (left, top) at the window’s upper-left corner and applies the specified zoom factor. Null values preserve current settings for those parameters. |
| [page /FitR left bottom right top] | Zooms and positions the view to display the rectangular area defined by the left, bottom, right, and top coordinates. |
| [page /FitB] | Similar to /Fit, but scales based on the actual content boundaries instead of the defined crop box area. |
| [page /FitBH top] | Functions like /FitH but uses the content bounding box instead of the crop box for horizontal scaling calculations. |
| [page /FitBV left] | Operates like /FitV but calculates vertical scaling based on the content bounding box rather than the crop box boundaries. |
Struttura della struttura del documento
La struttura di outline crea una navigazione gerarchica che funge da indice interattivo per i visualizzatori di PDF. Questa organizzazione a albero aiuta gli utenti a navigare rapidamente in documenti complessi fornendo una chiara panoramica della struttura. Il sistema si basa su due tipi fondamentali di oggetti:
- Dizionario dell'outline – La radice della gerarchia dell'outline
- Dizionari degli elementi dell'outline – Singole voci nell'outline
Struttura del dizionario dell'outline (Tabella)
| Key | Value Type | Value |
|---|---|---|
| /Type | name | If present, must be /Outlines. |
| /First | indirect reference to dictionary | References the initial top-level outline entry in the document hierarchy. This field is mandatory when outline entries exist. |
| /Last | indirect reference to dictionary | References the final top-level outline entry in the document hierarchy. This field is mandatory when outline entries exist. |
| /Count | integer | Specifies how many outline entries are currently expanded across the entire outline tree. Can be omitted when no entries are in an open state. |
Implementazione degli elementi dell'outline
Ogni elemento dell'outline è costituito da un dizionario che specifica il titolo di visualizzazione, la destinazione e le relazioni con altri elementi nella gerarchia.
Esaminiamo come è strutturata una semplice struttura di outline in sintassi PDF:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
8 0 obj <</Type/Outlines/Count 4/First 9 0 R/Last 9 0 R>> endobj 9 0 obj <</Title(Chapter 1: Experiment A)/Count 3/Parent 8 0 R/First 12 0 R/Last 18 0 R>> endobj 12 0 obj <</Title(1: Introduction)/Count 0/Parent 9 0 R/Next 15 0 R>> endobj 15 0 obj <</Title(2: Methodology)/Count 0/Parent 9 0 R/Prev 12 0 R/Next 18 0 R>> endobj 18 0 obj <</Title(3: Result verification)/Count 0/Parent 9 0 R/Prev 15 0 R/>> endobj |
Struttura della tabella del dizionario degli elementi dell'outline
* indica una voce obbligatoria
| Key | Value Type | Value |
|---|---|---|
| /Title* | text string | Text to be displayed for this entry. |
| /Parent* | indirect reference to dictionary | References this item’s parent within the outline hierarchy, which can be either another outline item or the root outline dictionary. |
| /Prev | indirect reference to dictionary | References the preceding sibling item at the same hierarchical level, when applicable. |
| /Next | indirect reference to dictionary | References the following sibling item at the same hierarchical level, when applicable. |
| /First | indirect reference to dictionary | References the initial child item under this entry, when child items exist. |
| /Last | indirect reference to dictionary | References the final child item under this entry, when child items exist. |
| /Count | integer | When the entry is expanded, indicates the count of visible descendant entries. When collapsed, stores a negative value representing the total number of hidden descendants that would become visible upon expansion. |
| /Dest | name, string or array | The destination. Arrays are destinations, names are references to entries in the /Dests entry in the document catalog, strings are references to entries in the /Dests entry in the document’s name dictionary. |
Metadati XML

I documenti PDF moderni possono incorporare flussi di metadati basati su XML, che offrono informazioni molto più dettagliate e strutturate rispetto alle tradizionali proprietà del documento. Questo avanzato sistema di metadati utilizza la specifica XMP (Extensible Metadata Platform) di Adobe per fornire descrizioni di documenti standardizzate e leggibili dalle macchine, che migliorano la ricerca, l'organizzazione e le capacità di elaborazione automatica.
Struttura dei metadati XMP
I metadati XMP sono confezionati come un documento XML che utilizza la sintassi RDF (Resource Description Framework) per organizzare e descrivere le proprietà del documento in un formato standardizzato. Questo contenuto dei metadati è incorporato all'interno di un oggetto di flusso dedicato che include una corretta identificazione del tipo per i processori PDF:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
6 0 obj <</Length 1235/Type/Metadata/Subtype/XML>>stream <?xpacket begin="锘xBF" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.2-c001 63.139439, 2010/09/27-13:37:26" ><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" ><rdf:Description rdf:about="" xmlns:pdf="http://ns.adobe.com/pdf/1.3/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" ><pdf:Producer>losLab PDF Library</pdf:Producer> <dc:creator>losLab.com</dc:creator> <dc:title>Delphi PDF SDKs</dc:title> <xmp:CreateDate>2025-06-29T10:46:27+08:00</xmp:CreateDate> <xmp:ModifyDate>2025-06-29T10:58:57+08:00</xmp:ModifyDate> <xmp:MetadataDate>2025-06-29T10:46:27+08:00</xmp:MetadataDate> <dc:description>Delphi Development Library for PDF creation & editing</dc:description> <xmp:CreatorTool>HotPDF Component</xmp:CreatorTool> <dc:subject>PDF Developer Library for RAD Studio></dc:subject> <pdf:Keywords>Delphi, PDF SDK, PDF Component</pdf:Keywords> </rdf:Description>Robust Delphi PDF development library</rdf:RDF> </x:xmpmeta> <?xpacket end="w"?> endstream endobj |
Schemi di metadati standard
Il framework XMP organizza i metadati attraverso namespace di schemi consolidati, ognuno dei quali serve a categorie di informazioni specifiche:
📋 Dublin Core (dc:)
Informazioni bibliografiche di base
- dc:title – Titolo del documento
- dc:creator – Autore/i del documento
- dc:subject – Argomento/parole chiave del documento
- dc:description – Descrizione del documento
- dc:format – Tipo MIME
🏷️ XMP Basic (xmp:)
Proprietà principali di XMP
- xmp:CreateDate – Data di creazione
- xmp:ModifyDate – Data di modifica
- xmp:CreatorTool – Applicazione di creazione
- xmp:MetadataDate – Data di modifica dei metadati
📄 Schema PDF (pdf:)
Proprietà specifiche di PDF
- pdf:Producer – Produttore del file PDF.
- pdf:Keywords – Parole chiave del documento.
- pdf:PDFVersion – Versione del file PDF.
Integrazione con il catalogo documenti.
Il flusso di metadati XML è referenziato dal catalogo documenti:
|
1 2 3 |
1 0 obj < < Type Catalog Pages 2 0 R Metadata 10 0 R Outlines 1 0 R>> endobj |
🎯 Best practice per i metadati XML.
- Includere sempre sia il dizionario delle informazioni del documento che i metadati XMP per la massima compatibilità.
- Assicurarsi che i valori dei metadati siano coerenti in entrambe le posizioni.
- Utilizzare la codifica XML corretta (UTF-8) per i caratteri internazionali.
- Includere le date di creazione e modifica in formato ISO 8601.
- Validare la struttura XML per prevenire errori di analisi.
Allegati di file.

Gli allegati di file PDF forniscono un metodo comodo per incorporare file esterni direttamente all'interno di un documento PDF, creando pacchetti autonomi che includono tutte le risorse necessarie. Questi allegati possono essere associati all'intero documento o collegati a pagine specifiche, a seconda delle proprie esigenze. La maggior parte dei moderni visualizzatori di PDF presentano questi file incorporati in un pannello di allegati dedicato, facilitando agli utenti l'accesso, la visualizzazione o il salvataggio del contenuto incluso. Questa funzionalità è particolarmente utile per creare pacchetti di documenti completi, come presentazioni che includono risorse supplementari o report con file di dati allegati.
Struttura dei file incorporati.
Fondamentalmente, un file incorporato consiste in un oggetto stream che contiene i dati effettivi del file, insieme a una voce di dizionario dello stream che specifica /Type /EmbeddedFile. Questo approccio semplice consente di archiviare qualsiasi tipo di file all'interno di un PDF. Ecco come appare la struttura di base del file incorporato:
|
1 2 3 4 5 6 |
8 0 obj < < Type EmbeddedFile Length 35>> stream This is a text file attachment... endstream endobj |
Il formato PDF supporta due approcci distinti per fare riferimento a file incorporati, ciascuno adatto a casi d'uso diversi: allegati a livello di documento, accessibili globalmente, e allegati a livello di pagina, che appaiono come elementi interattivi su pagine specifiche.
Allegati a livello di documento
Per gli allegati validi per l'intero documento, è necessario aggiungere /EmbeddedFiles una voce al dizionario dei nomi, che viene accessibile tramite la /Names voce nel catalogo del documento. Questo approccio rende l'allegato disponibile globalmente in tutto il PDF, indipendentemente dalla pagina che l'utente sta visualizzando:
|
1 2 3 4 5 6 |
9 0 obj < < Names << EmbeddedFiles << Names [ (attachment.txt) << EF << F 8 0 R>> /F (attachment.txt) /Type /Filespec >> ] >> >> /Pages 1 0 R /Type /Catalog >> endobj |
Spiegazione della struttura del codice
- /Names – Contiene il dizionario dei nomi per il documento.
- /EmbeddedFiles – Gestisce specificamente i nomi dei file incorporati.
- (attachment.txt) – Il nome del file come lo vedono gli utenti.
- /EF – Dizionario dei file incorporati che contiene il riferimento effettivo al file.
- /F 8 0 R – Riferimento all'oggetto stream del file incorporato.
- /Type /Filespec – Identifica questo come un dizionario di specifiche dei file.
Allegati a livello di pagina.
Gli allegati specifici per pagina richiedono un approccio diverso, utilizzando le annotazioni per gli allegati di file. Questi vengono aggiunti a... /Annots aggiungi un elemento all'array nel dizionario della pagina di destinazione, creando un'icona di allegato visibile con cui gli utenti possono interagire direttamente sulla pagina:
|
1 2 3 4 5 6 7 8 |
9 0 obj < < Type Page (Other dictionary entries as usual) Annots [ << FS << EF << F 8 0 R>> /F (attachment.txt) /Type /Filespec >> /Subtype /FileAttachment /Contents (attachment.txt) /Rect [ 18 796.88976378 45 823.88976378 ] >> ] >> endobj |
Proprietà degli allegati alla pagina.
- /FS – Dizionario delle specifiche dei file (identico a /EF sopra).
- /Subtype /FileAttachment – Identifica questa annotazione come un allegato di file.
- /Contents – Testo del tooltip che appare quando si passa il mouse sull'icona dell'allegato.
- /Rect – Rettangolo che definisce la posizione e le dimensioni dell'icona dell'allegato sulla pagina.
Esempi di utilizzo degli allegati.
📊 File di dati.
Incorpora fogli di calcolo, database o file di dati grezzi insieme a report e analisi.
🎨 File sorgente.
Includi file di progettazione originali, disegni CAD o modelli modificabili.
📹 Risorse multimediali.
Allega presentazioni video, registrazioni audio o contenuti interattivi.
📋 Documenti di supporto.
Raggruppa PDF correlati, contratti o materiali di riferimento.
Annotazioni.

Le annotazioni PDF offrono un modo potente per aggiungere elementi interattivi e marcature visive ai documenti senza modificare il contenuto originale della pagina. Questi elementi sovrapposti migliorano l'esperienza di lettura consentendo agli utenti di evidenziare il testo, aggiungere commenti o creare collegamenti cliccabili. Tra i tipi di annotazione più utili ci sono gli hyperlink, che consentono una navigazione fluida tra diverse sezioni di un documento o verso risorse esterne.
Struttura delle annotazioni
Sebbene i diversi tipi di annotazione abbiano scopi diversi, tutti seguono una struttura fondamentale coerente, con proprietà specifiche del tipo aggiunte secondo necessità. Le pagine PDF possono contenere più annotazioni, che sono organizzate in un array referenziato dalla voce /Annots nel dizionario di ogni pagina. Ogni annotazione è implementata come un proprio oggetto dizionario con proprietà specifiche.
Tabella della struttura del dizionario delle annotazioni
* indica una voce obbligatoria
| Key | Value Type | Value |
|---|---|---|
| /Type | name | When specified, this value must be set to /Annot to properly identify the dictionary type. |
| /Subtype* | name | Specifies the specific annotation category (e.g., Link, Text, Highlight). |
| /Rect* | rectangle | Defines the annotation’s position and dimensions using standard PDF coordinate units. |
| /Contents | text string | Contains the annotation’s text content or provides an alternative descriptive label for accessibility purposes. |
Esempio di dizionario di annotazione fondamentale:
|
1 2 3 |
12 0 obj < < Type Annot Subtype Link Rect [100 200 300 250] Border [0 0 1] C [0.0 0.0 1.0] Dest [5 0 R XYZ null null null]>> endobj |
Tipi di annotazione comuni
🔗 Annotazioni di collegamento
Crea aree cliccabili che portano a destinazioni all'interno del documento o a risorse esterne.
- /Subtype /Link – Identifica un'annotazione come un collegamento.
- /Dest – Array di destinazioni o destinazione denominata.
- /A – Dizionario delle azioni per comportamenti più complessi.
📝 Annotazioni di testo.
Mostra note e commenti a comparsa quando si fa clic.
- /Subtype /Text – Identifica l'annotazione come testo.
- /Contents – Il contenuto testuale dell'annotazione.
- /Open – Indica se l'annotazione è inizialmente aperta.
🖍️ Annotazioni di markup.
Evidenzia, sottolinea o barrato il contenuto del testo.
- /Subtype /Highlight – Evidenziazione del testo
- /Subtype /Underline – Sottolineatura del testo
- /Subtype /StrikeOut – Barratura del testo
Azioni avanzate per i collegamenti.
Le annotazioni dei link possono eseguire varie azioni oltre alla semplice navigazione:
|
1 2 3 |
13 0 obj < < Type Annot Subtype Link Rect [50 50 200 100] A << Type Action S URI URI (https: www.example.com)>> >> endobj |
Tipi di azione
- /S /GoTo – Naviga verso una destinazione all'interno del documento
- /S /GoToR – Naviga verso una destinazione in un altro documento
- /S /URI – Apri un URL web
- /S /Launch – Avvia un'applicazione esterna
- /S /JavaScript – Esegui codice JavaScript
Aspetto delle annotazioni
Lo stile visivo personalizzato per le annotazioni viene ottenuto tramite flussi di aspetto, consentendo un controllo preciso su come le annotazioni vengono visualizzate agli utenti:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
14 0 obj < < Type Annot Subtype Square Rect [100 100 200 150] C [1.0 0.0 0.0] BS << W 2 S S>> /AP < < N 15 0 R>> >> endobj 15 0 obj < < Type XObject Subtype Form BBox [0 0 100 50] Length 85>> stream q 1.0 0.0 0.0 RG 2 w 10 10 80 30 re S Q endstream endobj |
Linee guida pratiche per l'implementazione
Integrazione della struttura del documento
Un'implementazione di successo richiede la comprensione di come questi elementi interagiscono all'interno dell'architettura generale del documento PDF.
|
1 2 3 4 |
1 0 obj < < Type Catalog Pages 2 0 R Outlines 3 0 R Names << EmbeddedFiles 4 0 R>> /Metadata 5 0 R >> endobj |
✅ Lista di controllo per l'implementazione
- Configurazione del catalogo documenti – Assicurarsi che siano presenti riferimenti corretti a schemi, nomi e metadati.
- Numerazione degli oggetti – Mantenere una numerazione degli oggetti coerente e riferimenti incrociati.
- Codifica dei flussi – Applicare filtri e codifiche appropriati per i flussi.
- Validazione – Verifica la struttura del file PDF utilizzando strumenti di validazione.
- Test di compatibilità – Esegui test su diversi visualizzatori di PDF e versioni.
Problemi comuni e soluzioni.
❌ I segnalibri non vengono visualizzati.
Soluzione: Verifica che il catalogo del documento includa una /Outlines voce e che la gerarchia dell'indice sia strutturata correttamente con le relazioni genitore-figlio corrette.
❌ I metadati non vengono riconosciuti.
Soluzione: Assicurarsi che il flusso di metadati XML sia formattato correttamente, utilizzi i namespace corretti e sia referenziato nel catalogo dei documenti. /Type /Metadata e /Subtype /XML.
❌ Allegati non accessibili.
Soluzione: Verificare che i file incorporati siano correttamente referenziati nel dizionario dei nomi a livello di documento o nel dizionario delle annotazioni a livello di pagina, e che i dizionari delle specifiche dei file siano strutturati correttamente.
Conclusione.
La padronanza dei metadati PDF e dell'implementazione dei segnalibri è fondamentale per sviluppare documenti di livello professionale che offrono una migliore esperienza utente e funzionalità. Queste potenti funzionalità offrono:
- Navigazione avanzata. – Grazie a segnalibri e destinazioni ben strutturati.
- Metadati ricchi. – Che consentono una migliore gestione e ricerca dei documenti.
- Integrazione dei file. – Raggruppamento delle risorse correlate all'interno dei documenti.
- Elementi interattivi. – Creazione di esperienze utente coinvolgenti con annotazioni.
Implementando correttamente queste funzionalità, è possibile creare documenti PDF che vanno oltre il semplice testo e la grafica, diventando risorse complete e interattive che servono efficacemente sia i lettori umani che i sistemi automatizzati.
🚀 Prossimi passi.
- Esercitati nell'implementazione di queste strutture nel tuo flusso di lavoro di creazione di PDF.
- Sperimenta con diversi tipi di annotazioni e gerarchie di segnalibri.
- Testare le implementazioni su diversi visualizzatori PDF.
- Esplorare funzionalità PDF avanzate basandosi su queste fondamenta.