Woraus das Dokument laut eigener Angabe besteht
Geben Sie dem Dokument Lesereihenfolge und Gestalt — Überschriften, Absätze, Abbildungen —, damit ein Programm es so vorliest, wie ein Mensch es läse.
In einem echten PDF ansehen
Eine Liste, deren Bilder ebenfalls sprechen
Eine Teileliste, deren erste Spalte ein Bild statt eines Wortes ist. Jedes Bild trägt den Satz, den jemand an seiner Stelle hört, sodass in der Liste nichts für einen Leser verloren geht, der sie nicht sehen kann. Auf der Seite sind die Bilder einfach Bilder.
Das PDF öffnen Das vollständige Beispiel ansehen
Auch zu sehen in: Ein Dokument, das sich vorlesen lässt · Eine Zahl, die sagt, welche Überschriften sie erreichen · Eine getaggte Hinterlegungsurkunde in PDF/A-1a
Zusammenfassung
Farbe auf einer Seite hat keine eigene Reihenfolge. Ein Mensch sieht, dass die großen Wörter oben eine Überschrift sind und dass die zwei Spalten nacheinander gelesen werden, aber ein Programm sieht nur Markierungen an Koordinaten, in der Reihenfolge, in der sie gezeichnet wurden. Einmal aufgeschrieben, lässt sich ein Dokument richtig vorlesen, ohne Durcheinander kopieren und auf einem kleinen Bildschirm neu umbrechen. Sie können auch angeben, dass eine Passage in einer anderen Sprache steht, damit sie richtig ausgesprochen wird, und einem Bild einen Satz geben, der es für jemanden beschreibt, der es nicht sehen kann.
Technisch
Auf der obersten Ebene einer Anfrage geschrieben, unter
"structure"
structure schreibt die /StructTreeRoot und den /StructElem-Baum darunter — woraus das Dokument nach eigener Aussage besteht, in Lesereihenfolge: die Elemente, die den markierten Inhalt tragen, den die Elemente im Inhaltsstream hinterlassen haben. Ein Element eröffnet markierten Inhalt mit tag und mark; der Baum beansprucht ihn dann über seine /MCID, und das verbindet die Farbe auf der Seite mit der Bedeutung. Fehlt es, sagt die Datei nichts über sich selbst, und die Anzeigesoftware liest sie in der Reihenfolge, in der die Farbe aufgetragen wurde. lang ist die Sprache, in der die Wörter geschrieben sind, als BCP-47-Tag, und ein Knoten gibt seine eigene an, wo eine Passage in einer anderen steht. roles erlaubt der Anfrage eigene Tags, von denen jedes über /RoleMap als eines gelesen wird, das die Norm nennt. Ein Knoten enthält entweder Kindelemente, beansprucht markierten Inhalt über content oder erreicht einen anderswo gebauten Zweig.
Anfrageschema
-
structure— Objekt, optional. Fehlt es, sagt die Datei nichts über sich selbst. -
structure.lang— Zeichenkette, optional, ein BCP-47-Tag. Die Sprache, in der die Wörter des Dokuments geschrieben sind. -
structure.roles— Array, optional. Eigene Tags der Anfrage, jedes ein Objekt austagundstandard, dem Standard-Tag, als das es gelesen wird. -
structure.children— Array, optional. Die Elemente an der Spitze des Baums, in Lesereihenfolge. -
Ein Knoten nennt entweder
branch, den Namen eines anderswo gebauten Zweigs, und sonst gar nichts; odertag, den Namen der Norm für das, was er ist (Document,Sect,H1,P,Figure), und dannchildren, andere Knoten, odercontent, die Bezeichnung des markierten Inhalts, den ein Element hinterlassen hat, eines von beiden und nie beide. Ein Knoten, der weder ein Tag noch einen Zweig nennt, wird abgelehnt. -
Ein Knoten nimmt außerdem
namespacean,langfür eine Passage in einer anderen Sprache,alt, einen Satz, der beschreibt, was man nicht sehen kann, undactual_text, was eine Passage tatsächlich sagt, wenn ihre gezeichnete Form es nicht buchstabiert. -
Ein Knoten nimmt außerdem
expansionan, die ausgeschriebenen Wörter, für die eine Abkürzung oder ein Akronym steht und die die Anzeigesoftware anstelle der Buchstaben ausspricht. -
Ein Knoten nimmt außerdem
list_numberingam Knoten einer Liste an, einer der Wertenone,unordered,description,disc,circle,square,ordered,decimal,upper_roman,lower_roman,upper_alphaundlower_alpha. Eine Liste in einer Liste, die ein Schema angibt, wird ohne eigene Angabe so nummeriert wie die äußere. -
Ein Knoten nimmt außerdem
placementan, wo das Element im Fluss seiner Seite steht, einer der Werteblock,inline,before,startundend. Fehlt es, ist das Element ein Block oder steht in seiner Zeile, je nach seinem Tag. Nichts auf der Seite verschiebt sich dafür: Es sagt einer Software, die das Dokument neu umbricht, wohin sie das Element zurücksetzen soll. -
structure.namespace_roles— Array, optional. Tags eines Namensraums, die als Tags eines anderen gelesen werden, jedes ein Objekt ausnamespace,tag,standardundtarget_namespace: Dastagvonnamespacewird alsstandardvontarget_namespacegelesen. So können zwei Namensräume einen Namen für verschiedene Dinge verwenden. PDF 2.0. -
structure.pronunciation_lexicons— Array von Zeichenketten, optional. Dernamevon Dateien unter denattachments, jede ein Aussprachelexikon im W3C-Format, mit dem die Anzeigesoftware die Wörter des Dokuments ausspricht, wobei der erste Treffer gewinnt. Ein Name, den kein Anhang deklariert, wird abgelehnt. -
Ein Knoten nimmt außerdem
aria_rolean, wofür das Element da ist, wo die Tags der Norm kein Wort dafür haben, als Rolle von WAI-ARIA 1.1 oder seines Moduls Digital Publishing, so geschrieben, wie das Vokabular es schreibt:doc-bibliography,doc-noteref,"alertdialog"."none"wird als"presentation"gelesen. Ein Wort, das das Vokabular nicht enthält, oder eine seiner abstrakten Rollen wird abgelehnt. -
Ein Knoten nimmt außerdem
phonemean, wie sein Inhalt ausgesprochen wird, in einem phonetischen Alphabet geschrieben, undphonetic_alphabet, dieses Alphabet, das die darin verschachtelten Knoten übernehmen, wenn sie keines angeben:ipa,x_sampa,pinyin,wade_gilesoder{"other": name}für eines, das die Norm nicht nennt. Fehlt es, nimmt die Anzeigesoftware das IPA. -
Ein Knoten einer Liste nimmt außerdem
continues_listan, die frühere Liste, die er fortsetzt:"preceding", die Liste davor im Baum, oder{"from": id}, die Liste mit der angegebenenid. Eineid, die kein Knoten trägt, wird abgelehnt. -
Ein
"Form"-Knoten, der ein gedrucktes Formularfeld umschließt, nimmt außerdemprint_fieldan, ein Objekt ausrole(radio_button,check_box,push_button,text_valueoderlist_box),checked(on,offoderneutral) unddescription, dem alternativen Namen des Feldes, wobei jedes nur geschrieben wird, wo es angegeben ist. -
Ein
"Artifact"-Knoten nimmt außerdemartifactan, was das von ihm umschlossene Beiwerk ist: ein Objekt auskind(pagination,layout,pageoderinline),subtype, so geschrieben, wie die Datei es enthält (Header,Footer,Watermark,PageNum,Bates,LineNum,Redactionoder ein eigener Name nach ISO 32000-2 Anhang E wieACME_Stamp), undbbox, dem Kasten, den es abdeckt, vier Kanten in Punkt der Seite, jeweils nur geschrieben, wo angegeben. Jeder andere Untertyp wird abgelehnt. -
Ein Knoten nimmt außerdem
refers_toan, dieidder Knoten, auf die er verweist — eine Anmerkung auf das, was sie kommentiert, eine Bildunterschrift auf das, was sie beschriftet. Eineid, die kein Knoten trägt, wird abgelehnt. -
Ein Knoten nimmt außerdem
attributesan, die Attributobjekte, die er angibt: was sein Aussehen bedeutet, etwa der Kasten, den eine Abbildung abdeckt, die Ausrichtung einer Zelle oder die Stärke eines Rahmens. Jedes ist ein Objekt ausowner, dem Namen, den die Norm der Familie gibt, zu der es gehört (Layout,List,PrintField,Table,UserProperties), oder einem eigenen Namen, oder stattdessennamespace, der Adresse eines eigenen Vokabulars, in PDF 2.0;entries, jeder Wert unter seinem Namen; und optionalrevision, die Revision des Elements, an das es gebunden ist. Ein Wert isttrueoderfalse, eine Zahl, eine Zeichenkette, ein Array von Werten,{"name": "Center"}für einen Namen oder{"dictionary": {…}}für unter Namen gruppierte Werte. Ein Objekt, das sowohlownerals auchnamespaceangibt oder keines von beiden, wird abgelehnt. -
structure.class_map— Array, optional. Attributobjekte, einmal unter einem Namen abgelegt, jede Klasse ein Objekt ausnameundattributes, geschrieben wie ein Knoten sie schreibt. Ein Knoten nimmt außerdemclassesan, die Klassen, zu denen er gehört, jede ein Objekt ausnameund optionalrevision, und übernimmt deren Attributobjekte als seine eigenen. -
Eine Knoten für Knoten angegebene Tabellenzelle, ein
"TH"oder ein"TD", nimmt außerdemscopean (row,columnoderboth, bei einem"TH"),col_spanundrow_span, die Spalten und Zeilen, die sie abdeckt, sich selbst mitgezählt, undheaders, dieidder Kopfzellen, unter denen sie steht. -
Ein Knoten mit
childrenodercontentnimmt außerdemannotationsan, diemark, die einlink-Element oder ein Formularfeld trägt, sodass das Element diesen Link oder dieses Feld enthält und der Link zu ihm zurückführt: Das schuldet ein Dokument, daspdfua1oderpdfua2beansprucht, jedem Link und jedem Feld. Eine Optionsgruppe legt pro Schaltfläche einen Eintrag unter ihrer Markierung ab. -
Ein Knoten nimmt außerdem
imported_runsan, die Abschnitte einer Seite, die einpdf_page-Element hereinbringt:{"page": label, "runs": [0, 1]}, dieown_runs-Bezeichnung dieses Elements und die Nummern, die sein eigenes Dokument den Abschnitten gegeben hat.annotationsundimported_runswerden bei einem Knoten abgelehnt, dessencontentmehrere Abschnitte nennt. -
Ein zeichnendes Element, dessen Abschnitt kein Element des Baums besitzt, nimmt
describedan, was der Abschnitt über sich selbst sagt: ein Objekt ausexpansion,actual_text,altundlang, mindestens eines angegeben. Nebentagoderartifactund innerhalb einer benannten Zeichnung wird es abgelehnt.
Geltungsbereich: das ganze Dokument. Daran wird accessible gemessen; für sich allein kostet es nichts und wird schlicht von dem gelesen, der die Reihenfolge und die Bedeutung statt der Koordinaten will.
Eine vollständige Anfrage, die ein PDF erzeugt
{
"standard_fonts": [{ "name": "sans", "face": "helvetica" }],
"structure": {
"lang": "en-GB",
"children": [
{
"tag": "Document",
"children": [
{ "tag": "H1", "content": "heading" },
{ "tag": "P", "content": "opening" },
{
"tag": "L",
"list_numbering": "decimal",
"children": [
{
"tag": "LI",
"children": [
{ "tag": "Lbl", "content": "label" },
{
"tag": "LBody",
"children": [
{
"tag": "Span",
"expansion": "kilogramme",
"content": "unit"
},
{
"tag": "Span",
"placement": "inline",
"content": "rest"
}
]
}
]
}
]
}
]
}
]
},
"items": [
{
"type": "text",
"rect": { "llx": 72, "lly": 720, "urx": 523, "ury": 760 },
"content": ["What this document is"],
"font": "sans",
"font_size": 20,
"tag": "H1",
"mark": "heading"
},
{
"type": "text",
"rect": { "llx": 72, "lly": 660, "urx": 523, "ury": 710 },
"content": ["It is read in the order the tree gives, not the order of the ink."],
"font": "sans",
"font_size": 11,
"tag": "P",
"mark": "opening"
},
{
"type": "text",
"rect": { "llx": 72, "lly": 620, "urx": 96, "ury": 646 },
"content": ["1."],
"font": "sans",
"font_size": 11,
"tag": "Lbl",
"mark": "label"
},
{
"type": "text",
"rect": { "llx": 100, "lly": 620, "urx": 112, "ury": 646 },
"content": ["kg"],
"font": "sans",
"font_size": 11,
"tag": "Span",
"mark": "unit"
},
{
"type": "text",
"rect": { "llx": 115, "lly": 620, "urx": 523, "ury": 646 },
"content": ["of paper per ream"],
"font": "sans",
"font_size": 11,
"tag": "Span",
"mark": "rest"
}
]
}
Sich darin zurechtfinden
Die Reihenfolge, in der ein Feld zum nächsten führt Was eine Seite beim Öffnen und Verlassen auslöst Was das Dokument beim Schließen, Speichern, Drucken ausführt Die Skripte, die das Dokument unter Namen registriert Das anklickbare Inhaltsverzeichnis an der Seite Zielorte mit Namen Einem Artikel Spalte für Spalte folgen Wie das Dokument sich öffnet und druckt
Wohin als Nächstes
Jeder JSON-Schlüssel einer Anfrage, auf einer Seite Die übrigen einundvierzig Einstellungen einer Anfrage