PdfWriter writes non-conformant `/MarkInfo << /Marked true >>` instead of `/MarkInfo << /Tagged true >>` (ISO 32000-1)
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 1/5
- Tempo stimato
- Meno di un'ora
- Idoneità per principianti
- 88/100
Direzione di ricerca
In PdfName è definita la costante MARKED e PdfWriter.getCatalog(PdfIndirectReference) la usa durante la creazione del dizionario MarkInfo del catalogo. Leggi queste due posizioni, poi controlla il catalogo generato dopo aver chiamato PdfWriter.setTagged(). Il lavoro è completato quando contiene /Tagged true, come specificato, invece di /Marked true.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Describe the bug
When a document is marked as tagged via PdfWriter.setTagged(), the catalog of the generated PDF contains:
/MarkInfo << /Marked true >>
According to ISO 32000-1:2008 §14.8.2 (Mark Info), the entry that marks a tagged document in the MarkInfo dictionary is Tagged:
Tagged (Optional; PDF 1.4) — A boolean indicating whether the document contains semantic information that aids accessibility (true) or not (false).
The name Marked is not defined by the specification. The structural tree (StructTreeRoot) is generated correctly, but the flag that tells viewers and assistive technology the document is tagged is invalid — so documents produced with setTagged() are not recognized as tagged by PDF validators and PDF/UA (ISO 14289) conformance checks. In practice this makes it impossible to produce conformant tagged / PDF/UA documents with this library.
org.openpdf.text.pdf.PdfName (line 1677):
public static final PdfName MARKED = new PdfName("Marked");
consumed by org.openpdf.text.pdf.PdfWriter.getCatalog(PdfIndirectReference) (line 1056):
PdfDictionary mi = new PdfDictionary();
mi.put(PdfName.MARKED, PdfBoolean.PDFTRUE);
...
catalog.put(PdfName.MARKINFO, mi);
The value appears to have been carried over from iText 2.1.x, where the same non-conformant constant exists.
To Reproduce
Document doc = new Document();
PdfWriter writer = PdfWriter.getInstance(doc, new FileOutputStream("out.pdf"));
writer.setTagged();
doc.open();
doc.add(new Paragraph("Hello tagged PDF"));
doc.close();
Expected behavior
/MarkInfo << /Tagged true >>
Suggested fix
public static final PdfName MARKED = new PdfName("Tagged");
System
- OS: Windows
- Used font: Helvetica
- OpenPDF version: 3.0.5
Additional context
PdfName.MARKED has exactly two occurrences in the 3.0.5 source: its definition and PdfWriter.getCatalog — nothing in the library ever reads this entry back, so changing the constant to the spec value "Tagged" only affects newly written documents (and documents written with /Marked were non-conformant to begin with, so there is no conformant reading behaviour to preserve). Suggested one-line fix:
public static final PdfName MARKED = new PdfName("Tagged");
- Lingua principale
- Java
- Stelle
- 4.4k
- Fork
- 714
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di LibrePDF/OpenPDF
-
IndexOutOfBoundsException in PdfReaderForse già presa @andreasrosdalw l’ha presa 92 giorni fa. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
-
`PdfSmartCopy` can take effectively unbounded time on nested shared Form XObjectsForse già presa Una pull request collegata a questa issue è aperta o già unita. Apertabug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
-
enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 38/100
-
Difficoltà 4/5 1-2 giorni Idoneità per principianti 45/100
Tutte le issue di LibrePDF/OpenPDF
Issue simili
-
agent:working bug follow-up lane:auto
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
Sanne/incus-spawn#1765 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
Mend: dependency security vulnerability untriaged
Difficoltà 2/5 1-3 ore Idoneità per principianti 63/100
opensearch-project/data-prepper#7219 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
I maintainer di solito rispondono entro 1 giorno
-
Update Java flags pageAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
PaperMC/docs#824 · 1 commento · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno