Update smalot/pdfparser for PDFs with indirect /Encoding objects
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 35/100
Direzione di ricerca
Inizia da 3rdparty/composer/smalot/pdfparser/src/Smalot/PdfParser/Font.php e verifica la versione o il commit di smalot/pdfparser vendorizzato. Confrontalo con l’issue upstream #822 e la pull request #823, quindi verifica l’aggiornamento della dipendenza con il caso fornito EncodingAsIndirectPDFObject.pdf. Il lavoro è completato quando la versione vendorizzata include il fix upstream e il caricamento del PDF non genera più un PHP 8 TypeError.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Bug Report
Note: This is not a bug in LibreSign itself, but a heads-up about a bug in a vendored dependency that affects LibreSign users.
Summary
When uploading certain PDF files (e.g. PDFs with Type1 fonts where is an indirect object reference), LibreSign throws a fatal error:
This originates in the vendored library at:
Root Cause
The PDF spec (Table 5.11) allows a font's entry to be either a name or an indirect reference to an encoding dictionary (). When it is an indirect reference, tried to cast the to string via , which throws a in PHP 8+ because has no .
The affected PDF is not corrupt — it is valid per the PDF specification.
Upstream Fix
This has been reported and fixed upstream in :
- Issue: https://github.com/smalot/pdfparser/issues/822
- Pull Request (merged/open): https://github.com/smalot/pdfparser/pull/823
The fix adds a type-safe branch in that handles encoding dictionaries by reading the header entry instead of casting to string.
Request
Please update the vendored in to a version that includes the upstream fix (once merged), so that LibreSign users are no longer affected by this error.
Environment
- Nextcloud version: 33.0.5.1
- LibreSign vendored pdfparser commit:
- PHP version: 8.x
- Triggered by: Uploading a EncodingAsIndirectPDFObject.pdf PDF with Type1 fonts using indirect references
Nextcloud Log
Workaround
Until the vendored library is updated, the fix can be applied manually to:
3rdparty/composer/smalot/pdfparser/src/Smalot/PdfParser/Font.php
Replace the Encoding line in getDetails() with:
\$encoding = \$this->has('Encoding') ? \$this->get('Encoding') : null;
if (\$encoding instanceof PDFObject) {
\$baseEncoding = \$encoding->getHeader()->get('BaseEncoding');
\$details['Encoding'] = (\$baseEncoding instanceof Element && (string) \$baseEncoding !== '')
? (string) \$baseEncoding
: 'Ansi';
} elseif (\$encoding instanceof Element) {
\$details['Encoding'] = (string) \$encoding;
} else {
\$details['Encoding'] = 'Ansi';
}
- Lingua principale
- PHP
- Stelle
- 818
- Fork
- 146
- Merge medio
- 7h 38m
- PR unite (30g)
- 490
Preparare l'ambiente
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 LibreSign/libresign
-
good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
LibreSign/libresign#8284 · 5 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
frontend javascript
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
I maintainer di solito rispondono entro 1 giorno
-
frontend javascript
Difficoltà 4/5 3-5 giorni Idoneità per principianti 55/100
I maintainer di solito rispondono entro 1 giorno
-
frontend javascript
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
I maintainer di solito rispondono entro 1 giorno
-
frontend javascript
Difficoltà 4/5 3-5 giorni Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di LibreSign/libresign
Issue simili
-
sync-en
Difficoltà 1/5 1-3 ore Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno
-
good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
az-digital/az_quickstart#6077 ·
I maintainer di solito rispondono entro 1 giorno
-
Toolkit
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno
-
[Bug] v-quick-install-app install crashes with ValueError if no supported PHP version is installedAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
I maintainer di solito rispondono entro 1 giorno
-
Add `kjkpc.net`Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 72/100
FGRibreau/mailchecker#625 ·