poppler issueshttps://gitlab.freedesktop.org/poppler/poppler/-/issues2020-12-15T22:16:25Zhttps://gitlab.freedesktop.org/poppler/poppler/-/issues/1008Extracting pdftotext -layout functionality into library2020-12-15T22:16:25ZElias Gabriel Amaral da SilvaExtracting pdftotext -layout functionality into libraryHello, I need a function that returns a string with whatever `pdftotext` outputs when given the `-layout` option, but without having to run the executable. I want to call Popper's APIs myself (eventually I will package it as a Rust crate...Hello, I need a function that returns a string with whatever `pdftotext` outputs when given the `-layout` option, but without having to run the executable. I want to call Popper's APIs myself (eventually I will package it as a Rust crate and publish it to crates.io, but that's another matter).
I'm seeing that `pdftotext` uses internal Popper APIs, in special `TextOutputDev.h`: it calls `new TextOutputDev(filename, true, ...)` to build the object that prints text with physical layout. I'm tempted to go ahead and just call this, but [the readme advises against that](https://gitlab.freedesktop.org/poppler/poppler#stable-and-unstable-apis).
Is this functionality available in a stable API? I would prefer to use poppler-glib if possible, but either one is acceptable.https://gitlab.freedesktop.org/poppler/poppler/-/issues/1009Selecting text from annotation rect selects the wrong text2021-03-16T03:06:55ZzeidooSelecting text from annotation rect selects the wrong text**Preface:**
Using the latest code in the master branch. I have searched the issues and didn't find anything related, apologies if this is known. Also apologies if this is expected behavior. If it's not expected behavior, I'd gladly sub...**Preface:**
Using the latest code in the master branch. I have searched the issues and didn't find anything related, apologies if this is known. Also apologies if this is expected behavior. If it's not expected behavior, I'd gladly submit a PR to fix the issue.
**Problem:**
For highlight annotations, it's useful to extract the highlighted text. Annotations have their coordinates start (point 0,0) at the bottom left of the page, but it seems text selection starts at the top left of the page. At least for the glib api this is the case. Note that the annotation was done in Okular which uses the QT5 api of Poppler.
As such the following does not work:
```
char *text = poppler_page_get_text_for_area(demo->page, &amapping->area);
```
![image](/uploads/57bc490069ac3bf7813258e0483d9f46/image.png)
![image](/uploads/441d7db76d9a2cb5dde1bab5a493b561/image.png)
Nor does this (same results as the screenshots above):
```
PopplerRectangle rect;
poppler_annot_get_rectangle(amapping->annot, &rect);
char *text = poppler_page_get_text_for_area(demo->page, &rect);
```
This does get the correct text (792 is the page height):
```
PopplerRectangle rect;
poppler_annot_get_rectangle(amapping->annot, &rect);
rect.y1 = 792 - rect.y1;
rect.y2 = 792 - rect.y2;
char *text = poppler_page_get_text_for_area(demo->page, &rect);
```
![image](/uploads/9a9b41ea12497352857aa314e63da973/image.png)
![image](/uploads/0dd2bb6feaaca4b89331bf9ceafb8bc0/image.png)
**Test files**
[1.pdf](/uploads/e796b3db6309304a6c3d256657d5063e/1.pdf)
[2.pdf](/uploads/14a1901360f213b11c84e9c4785d74f5/2.pdf)
**Debug info**
![image](/uploads/a002cea96fb298cbb5ac5eaa2c6e8c10/image.png)https://gitlab.freedesktop.org/poppler/poppler/-/issues/1010Change annotation icon2020-12-17T23:34:59ZDavide PozziChange annotation iconMay you please redesign or substitute the annotation icon/placeholder? <br>
As per KDE bug file https://bugs.kde.org/show_bug.cgi?id=430294
Thank you,<br>
DavidMay you please redesign or substitute the annotation icon/placeholder? <br>
As per KDE bug file https://bugs.kde.org/show_bug.cgi?id=430294
Thank you,<br>
Davidhttps://gitlab.freedesktop.org/poppler/poppler/-/issues/1011Heap-Buffer-Overflow in DCTStream::getChars2020-12-25T23:51:17Zbin24151Heap-Buffer-Overflow in DCTStream::getChars- Version: 20.12.1
- Commit: e1f562582db4ed902989e23f7a02645a51da8e88
- How to reproduce: pdftops ./poc /dev/null
The log of ASAN:
```
==78169==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x633000019830 at pc 0x0000004def...- Version: 20.12.1
- Commit: e1f562582db4ed902989e23f7a02645a51da8e88
- How to reproduce: pdftops ./poc /dev/null
The log of ASAN:
```
==78169==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x633000019830 at pc 0x0000004def3c bp 0x7ffcb2d72b80 sp 0x7ffcb2d72330
WRITE of size 219 at 0x633000019830 thread T0
#0 0x4def3b in __asan_memcpy (/src/executable/pdftops+0x4def3b)
#1 0x7c5601 in DCTStream::getChars(int, unsigned char*) /src/poppler/poppler/DCTStream.cc:223:9
#2 0x606c86 in Stream::doGetChars(int, unsigned char*) /src/poppler/poppler/Stream.h:130:20
#3 0x603203 in LZWEncoder::reset() /src/poppler/poppler/Stream.cc:4940:21
#4 0x5ffdc3 in ASCII85Encoder::reset() /src/poppler/poppler/Stream.cc:4723:10
#5 0x6a18c6 in PSOutputDev::doImageL2(GfxState*, Object*, GfxImageColorMap*, bool, bool, Stream*, int, int, int, int const*, Stream*, int, int, bool) /src/poppler/poppler/PSOutputDev.cc:6047:14
#6 0x6ad7d3 in PSOutputDev::drawImage(GfxState*, Object*, Stream*, int, int, GfxImageColorMap*, bool, int const*, bool) /src/poppler/poppler/PSOutputDev.cc:5181:9
#7 0x91bfc0 in Gfx::doImage(Object*, Stream*, bool) /src/poppler/poppler/Gfx.cc:4520:22
#8 0x8c70a9 in Gfx::opXObject(Object*, int) /src/poppler/poppler/Gfx.cc:4097:13
#9 0x8f0006 in Gfx::execOp(Object*, Object*, int) /src/poppler/poppler/Gfx.cc:802:5
#10 0x8ee669 in Gfx::go(bool) /src/poppler/poppler/Gfx.cc:679:13
#11 0x8edc20 in Gfx::display(Object*, bool) /src/poppler/poppler/Gfx.cc:640:5
#12 0xa78ecf in Page::displaySlice(OutputDev*, double, double, int, bool, bool, int, int, int, int, bool, bool (*)(void*), void*, bool (*)(Annot*, void*), void*, bool) /src/poppler/poppler/Page.cc:576:14
#13 0xa78a4e in Page::display(OutputDev*, double, double, int, bool, bool, bool, bool (*)(void*), void*, bool (*)(Annot*, void*), void*, bool) /src/poppler/poppler/Page.cc:521:5
#14 0x54b820 in PDFDoc::displayPage(OutputDev*, int, double, double, int, bool, bool, bool, bool (*)(void*), void*, bool (*)(Annot*, void*), void*, bool) /src/poppler/poppler/PDFDoc.cc:639:24
#15 0x5218dc in main /src/poppler/utils/pdftops.cc:475:18
#16 0x7fabbbf24bf6 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21bf6)
#17 0x420359 in _start (/src/executable/pdftops+0x420359)
0x633000019830 is located 0 bytes to the right of 102448-byte region [0x633000000800,0x633000019830)
allocated by thread T0 here:
#0 0x5187c0 in operator new(unsigned long) (/src/executable/pdftops+0x5187c0)
#1 0x6a105a in PSOutputDev::doImageL2(GfxState*, Object*, GfxImageColorMap*, bool, bool, Stream*, int, int, int, int const*, Stream*, int, int, bool) /src/poppler/poppler/PSOutputDev.cc:6001:19
#2 0x6ad7d3 in PSOutputDev::drawImage(GfxState*, Object*, Stream*, int, int, GfxImageColorMap*, bool, int const*, bool) /src/poppler/poppler/PSOutputDev.cc:5181:9
SUMMARY: AddressSanitizer: heap-buffer-overflow (/src/executable/pdftops+0x4def3b) in __asan_memcpy
Shadow bytes around the buggy address:
0x0c667fffb2b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x0c667fffb2c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x0c667fffb2d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x0c667fffb2e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x0c667fffb2f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
=>0x0c667fffb300: 00 00 00 00 00 00[fa]fa fa fa fa fa fa fa fa fa
0x0c667fffb310: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c667fffb320: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c667fffb330: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c667fffb340: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c667fffb350: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
Addressable: 00
Partially addressable: 01 02 03 04 05 06 07
Heap left redzone: fa
Freed heap region: fd
Stack left redzone: f1
Stack mid redzone: f2
Stack right redzone: f3
Stack after return: f5
Stack use after scope: f8
Global redzone: f9
Global init order: f6
Poisoned by user: f7
Container overflow: fc
Array cookie: ac
Intra object redzone: bb
ASan internal: fe
Left alloca redzone: ca
Right alloca redzone: cb
==78169==ABORTING
```
poc file: [poc](/uploads/8455cee26a313a3a0174a01e4ec80e33/poc)https://gitlab.freedesktop.org/poppler/poppler/-/issues/1012Heap-buffer-overflow in `LZWEncoder::fillBuf()`2020-12-21T18:09:05Zbin24151Heap-buffer-overflow in `LZWEncoder::fillBuf()`- Version: 20.12.1
- Commit: e1f562582db4ed902989e23f7a02645a51da8e88
- How to reproduce: pdftops ./poc /dev/null
The log of ASAN:
```
==42490==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x633000019830 at pc 0x0000004df9f...- Version: 20.12.1
- Commit: e1f562582db4ed902989e23f7a02645a51da8e88
- How to reproduce: pdftops ./poc /dev/null
The log of ASAN:
```
==42490==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x633000019830 at pc 0x0000004df9fd bp 0x7fffe400da20 sp 0x7fffe400d1d0
READ of size 65459 at 0x633000019830 thread T0
#0 0x4df9fc in __asan_memmove (/src/poppler/build/utils/pdftops+0x4df9fc)
#1 0x603ddc in LZWEncoder::fillBuf() /src/poppler/poppler/Stream.cc:5031:5
#2 0x6034eb in LZWEncoder::getChar() /src/poppler/poppler/Stream.cc:4956:9
#3 0x5ffff6 in ASCII85Encoder::fillBuf() /src/poppler/poppler/Stream.cc:4739:15
#4 0x60dc0c in ASCII85Encoder::getChar() /src/poppler/poppler/Stream.h:1303:59
#5 0x6a1951 in PSOutputDev::doImageL2(GfxState*, Object*, GfxImageColorMap*, bool, bool, Stream*, int, int, int, int const*, Stream*, int, int, bool) /src/poppler/poppler/PSOutputDev.cc:6049:26
#6 0x6ad7d3 in PSOutputDev::drawImage(GfxState*, Object*, Stream*, int, int, GfxImageColorMap*, bool, int const*, bool) /src/poppler/poppler/PSOutputDev.cc:5181:9
#7 0x91bfc0 in Gfx::doImage(Object*, Stream*, bool) /src/poppler/poppler/Gfx.cc:4520:22
#8 0x8c70a9 in Gfx::opXObject(Object*, int) /src/poppler/poppler/Gfx.cc:4097:13
#9 0x8f0006 in Gfx::execOp(Object*, Object*, int) /src/poppler/poppler/Gfx.cc:802:5
#10 0x8ee669 in Gfx::go(bool) /src/poppler/poppler/Gfx.cc:679:13
#11 0x8edc20 in Gfx::display(Object*, bool) /src/poppler/poppler/Gfx.cc:640:5
#12 0xa78ecf in Page::displaySlice(OutputDev*, double, double, int, bool, bool, int, int, int, int, bool, bool (*)(void*), void*, bool (*)(Annot*, void*), void*, bool) /src/poppler/poppler/Page.cc:576:14
#13 0xa78a4e in Page::display(OutputDev*, double, double, int, bool, bool, bool, bool (*)(void*), void*, bool (*)(Annot*, void*), void*, bool) /src/poppler/poppler/Page.cc:521:5
#14 0x54b820 in PDFDoc::displayPage(OutputDev*, int, double, double, int, bool, bool, bool, bool (*)(void*), void*, bool (*)(Annot*, void*), void*, bool) /src/poppler/poppler/PDFDoc.cc:639:24
#15 0x5218dc in main /src/poppler/utils/pdftops.cc:475:18
#16 0x7fc782dd3bf6 in __libc_start_main /build/glibc-S9d2JN/glibc-2.27/csu/../csu/libc-start.c:310
#17 0x420359 in _start (/src/poppler/build/utils/pdftops+0x420359)
0x633000019830 is located 0 bytes to the right of 102448-byte region [0x633000000800,0x633000019830)
allocated by thread T0 here:
#0 0x5187c0 in operator new(unsigned long) (/src/poppler/build/utils/pdftops+0x5187c0)
#1 0x6a105a in PSOutputDev::doImageL2(GfxState*, Object*, GfxImageColorMap*, bool, bool, Stream*, int, int, int, int const*, Stream*, int, int, bool) /src/poppler/poppler/PSOutputDev.cc:6001:19
#2 0x6ad7d3 in PSOutputDev::drawImage(GfxState*, Object*, Stream*, int, int, GfxImageColorMap*, bool, int const*, bool) /src/poppler/poppler/PSOutputDev.cc:5181:9
SUMMARY: AddressSanitizer: heap-buffer-overflow (/src/poppler/build/utils/pdftops+0x4df9fc) in __asan_memmove
Shadow bytes around the buggy address:
0x0c667fffb2b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x0c667fffb2c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x0c667fffb2d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x0c667fffb2e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x0c667fffb2f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
=>0x0c667fffb300: 00 00 00 00 00 00[fa]fa fa fa fa fa fa fa fa fa
0x0c667fffb310: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c667fffb320: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c667fffb330: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c667fffb340: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c667fffb350: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
Addressable: 00
Partially addressable: 01 02 03 04 05 06 07
Heap left redzone: fa
Freed heap region: fd
Stack left redzone: f1
Stack mid redzone: f2
Stack right redzone: f3
Stack after return: f5
Stack use after scope: f8
Global redzone: f9
Global init order: f6
Poisoned by user: f7
Container overflow: fc
Array cookie: ac
Intra object redzone: bb
ASan internal: fe
Left alloca redzone: ca
Right alloca redzone: cb
==42490==ABORTING
```
[poc](/uploads/faba3c98649124f0ab2b96b6beeef47e/poc)https://gitlab.freedesktop.org/poppler/poppler/-/issues/1013Stack-Overflow in `FoFiType1C::cvtGlyph` results in Segmentation Fault2020-12-22T22:09:54Zbin24151Stack-Overflow in `FoFiType1C::cvtGlyph` results in Segmentation Fault- Version: 20.12.1
- Commit: e1f56258
- How to reproduce: ./pdftops ./poc /dev/null
The backtrace is:
```
==107470==ERROR: AddressSanitizer: stack-overflow on address 0x7ffc5f160fd8 (pc 0x0000004ded5c bp 0x7ffc5f161850 sp 0x7ffc5f160fe0...- Version: 20.12.1
- Commit: e1f56258
- How to reproduce: ./pdftops ./poc /dev/null
The backtrace is:
```
==107470==ERROR: AddressSanitizer: stack-overflow on address 0x7ffc5f160fd8 (pc 0x0000004ded5c bp 0x7ffc5f161850 sp 0x7ffc5f160fe0 T0)
#0 0x4ded5b in __asan_memcpy (/src/poppler_test/build/utils/pdftops+0x4ded5b)
#1 0x817158 in FoFiType1C::getOp(int, bool, bool*) /src/poppler_test/fofi/FoFiType1C.cc:2620:21
#2 0x8077bd in FoFiType1C::cvtGlyph(int, int, GooString*, Type1CIndex const*, Type1CPrivateDict const*, bool) /src/poppler_test/fofi/FoFiType1C.cc:1141:15
#3 0x80ad8d in FoFiType1C::cvtGlyph(int, int, GooString*, Type1CIndex const*, Type1CPrivateDict const*, bool) /src/poppler_test/fofi/FoFiType1C.cc
#4 0x80ad8d in FoFiType1C::cvtGlyph(int, int, GooString*, Type1CIndex const*, Type1CPrivateDict const*, bool) /src/poppler_test/fofi/FoFiType1C.cc
#5 0x80ad8d in FoFiType1C::cvtGlyph(int, int, GooString*, Type1CIndex const*, Type1CPrivateDict const*, bool) /src/poppler_test/fofi/FoFiType1C.cc
#6 0x80ad8d in FoFiType1C::cvtGlyph(int, int, GooString*, Type1CIndex const*, Type1CPrivateDict const*, bool) /src/poppler_test/fofi/FoFiType1C.cc
#7 0x80ad8d in FoFiType1C::cvtGlyph(int, int, GooString*, Type1CIndex const*, Type1CPrivateDict const*, bool) /src/poppler_test/fofi/FoFiType1C.cc
#8 0x80ad8d in FoFiType1C::cvtGlyph(int, int, GooString*, Type1CIndex const*, Type1CPrivateDict const*, bool) /src/poppler_test/fofi/FoFiType1C.cc
#9 0x80ad8d in FoFiType1C::cvtGlyph(int, int, GooString*, Type1CIndex const*, Type1CPrivateDict const*, bool) /src/poppler_test/fofi/FoFiType1C.cc
#10 0x80ad8d in FoFiType1C::cvtGlyph(int, int, GooString*, Type1CIndex const*, Type1CPrivateDict const*, bool) /src/poppler_test/fofi/FoFiType1C.cc
#11 0x80ad8d in FoFiType1C::cvtGlyph(int, int, GooString*, Type1CIndex const*, Type1CPrivateDict const*, bool) /src/poppler_test/fofi/FoFiType1C.cc
#12 0x80ad8d in FoFiType1C::cvtGlyph(int, int, GooString*, Type1CIndex const*, Type1CPrivateDict const*, bool) /src/poppler_test/fofi/FoFiType1C.cc
#13 0x80ad8d in FoFiType1C::cvtGlyph(int, int, GooString*, Type1CIndex const*, Type1CPrivateDict const*, bool) /src/poppler_test/fofi/FoFiType1C.cc
#14 0x80ad8d in FoFiType1C::cvtGlyph(int, int, GooString*, Type1CIndex const*, Type1CPrivateDict const*, bool) /src/poppler_test/fofi/FoFiType1C.cc
#15 0x80ad8d in FoFiType1C::cvtGlyph(int, int, GooString*, Type1CIndex const*, Type1CPrivateDict const*, bool) /src/poppler_test/fofi/FoFiType1C.cc
#16 0x80ad8d in FoFiType1C::cvtGlyph(int, int, GooString*, Type1CIndex const*, Type1CPrivateDict const*, bool) /src/poppler_test/fofi/FoFiType1C.cc
#17 0x80ad8d in FoFiType1C::cvtGlyph(int, int, GooString*, Type1CIndex const*, Type1CPrivateDict const*, bool) /src/poppler_test/fofi/FoFiType1C.cc
#18 0x80ad8d in FoFiType1C::cvtGlyph(int, int, GooString*, Type1CIndex const*, Type1CPrivateDict const*, bool) /src/poppler_test/fofi/FoFiType1C.cc
#19 0x80ad8d in FoFiType1C::cvtGlyph(int, int, GooString*, Type1CIndex const*, Type1CPrivateDict const*, bool) /src/poppler_test/fofi/FoFiType1C.cc
#20 0x80ad8d in FoFiType1C::cvtGlyph(int, int, GooString*, Type1CIndex const*, Type1CPrivateDict const*, bool) /src/poppler_test/fofi/FoFiType1C.cc
#21 0x80ad8d in FoFiType1C::cvtGlyph(int, int, GooString*, Type1CIndex const*, Type1CPrivateDict const*, bool) /src/poppler_test/fofi/FoFiType1C.cc
#22 0x80ad8d in FoFiType1C::cvtGlyph(int, int, GooString*, Type1CIndex const*, Type1CPrivateDict const*, bool) /src/poppler_test/fofi/FoFiType1C.cc
#23 0x80ad8d in FoFiType1C::cvtGlyph(int, int, GooString*, Type1CIndex const*, Type1CPrivateDict const*, bool) /src/poppler_test/fofi/FoFiType1C.cc
#24 0x80ad8d in FoFiType1C::cvtGlyph(int, int, GooString*, Type1CIndex const*, Type1CPrivateDict const*, bool) /src/poppler_test/fofi/FoFiType1C.cc
#25 0x80ad8d in FoFiType1C::cvtGlyph(int, int, GooString*, Type1CIndex const*, Type1CPrivateDict const*, bool) /src/poppler_test/fofi/FoFiType1C.cc
#26 0x80ad8d in FoFiType1C::cvtGlyph(int, int, GooString*, Type1CIndex const*, Type1CPrivateDict const*, bool) /src/poppler_test/fofi/FoFiType1C.cc
#27 0x80ad8d in FoFiType1C::cvtGlyph(int, int, GooString*, Type1CIndex const*, Type1CPrivateDict const*, bool) /src/poppler_test/fofi/FoFiType1C.cc
#28 0x80ad8d in FoFiType1C::cvtGlyph(int, int, GooString*, Type1CIndex const*, Type1CPrivateDict const*, bool) /src/poppler_test/fofi/FoFiType1C.cc
#29 0x80ad8d in FoFiType1C::cvtGlyph(int, int, GooString*, Type1CIndex const*, Type1CPrivateDict const*, bool) /src/poppler_test/fofi/FoFiType1C.cc
#30 0x80ad8d in FoFiType1C::cvtGlyph(int, int, GooString*, Type1CIndex const*, Type1CPrivateDict const*, bool) /src/poppler_test/fofi/FoFiType1C.cc
#31 0x80ad8d in FoFiType1C::cvtGlyph(int, int, GooString*, Type1CIndex const*, Type1CPrivateDict const*, bool) /src/poppler_test/fofi/FoFiType1C.cc
#32 0x80ad8d in FoFiType1C::cvtGlyph(int, int, GooString*, Type1CIndex const*, Type1CPrivateDict const*, bool) /src/poppler_test/fofi/FoFiType1C.cc
#33 0x80ad8d in FoFiType1C::cvtGlyph(int, int, GooString*, Type1CIndex const*, Type1CPrivateDict const*, bool) /src/poppler_test/fofi/FoFiType1C.cc
#34 0x80ad8d in FoFiType1C::cvtGlyph(int, int, GooString*, Type1CIndex const*, Type1CPrivateDict const*, bool) /src/poppler_test/fofi/FoFiType1C.cc
#35 0x80ad8d in FoFiType1C::cvtGlyph(int, int, GooString*, Type1CIndex const*, Type1CPrivateDict const*, bool) /src/poppler_test/fofi/FoFiType1C.cc
#36 0x80ad8d in FoFiType1C::cvtGlyph(int, int, GooString*, Type1CIndex const*, Type1CPrivateDict const*, bool) /src/poppler_test/fofi/FoFiType1C.cc
#37 0x80ad8d in FoFiType1C::cvtGlyph(int, int, GooString*, Type1CIndex const*, Type1CPrivateDict const*, bool) /src/poppler_test/fofi/FoFiType1C.cc
#38 0x80ad8d in FoFiType1C::cvtGlyph(int, int, GooString*, Type1CIndex const*, Type1CPrivateDict const*, bool) /src/poppler_test/fofi/FoFiType1C.cc
#39 0x80ad8d in FoFiType1C::cvtGlyph(int, int, GooString*, Type1CIndex const*, Type1CPrivateDict const*, bool) /src/poppler_test/fofi/FoFiType1C.cc
#40 0x80ad8d in FoFiType1C::cvtGlyph(int, int, GooString*, Type1CIndex const*, Type1CPrivateDict const*, bool) /src/poppler_test/fofi/FoFiType1C.cc
#41 0x80ad8d in FoFiType1C::cvtGlyph(int, int, GooString*, Type1CIndex const*, Type1CPrivateDict const*, bool) /src/poppler_test/fofi/FoFiType1C.cc
#42 0x80ad8d in FoFiType1C::cvtGlyph(int, int, GooString*, Type1CIndex const*, Type1CPrivateDict const*, bool) /src/poppler_test/fofi/FoFiType1C.cc
...
...
```
This cause segmentation fault without ASAN.
[poc](/uploads/7d6e4beff39de2fd18da33958d93edb9/poc)https://gitlab.freedesktop.org/poppler/poppler/-/issues/1014Poppler doesn't render a valid PDF2020-12-23T22:54:46ZThomas FreitagPoppler doesn't render a valid PDFI have here a PDF with a generation value of 0xffffffff (= -1L) in a xref stream section. Poppler complains about it with "Gen inside xref table too large (bigger than INT_MAX)", tries to reconstruct the xref table (which always fails wh...I have here a PDF with a generation value of 0xffffffff (= -1L) in a xref stream section. Poppler complains about it with "Gen inside xref table too large (bigger than INT_MAX)", tries to reconstruct the xref table (which always fails when xref stream sections are used) and doesn't render this PDF at all!https://gitlab.freedesktop.org/poppler/poppler/-/issues/1015Pdfsig not installing on Alpine2020-12-21T17:50:12ZFlorent SerfasPdfsig not installing on AlpineHello,
I am currently trying to install the package poppler on Alpine to use pdfsig but I couldln't find a way to do it.
I tried with : `RUN apk --no-cache add poppler poppler-utils` but it installed each commands except pdfsig.
Doing...Hello,
I am currently trying to install the package poppler on Alpine to use pdfsig but I couldln't find a way to do it.
I tried with : `RUN apk --no-cache add poppler poppler-utils` but it installed each commands except pdfsig.
Doing `apk search pdfsig` doesn't return anything either
I there a specific way to do it ?
Thanks in advance :)https://gitlab.freedesktop.org/poppler/poppler/-/issues/1016NULL-Pointer Deference in `FoFiType1C::convertToType1`2020-12-23T22:47:05Zbin24151NULL-Pointer Deference in `FoFiType1C::convertToType1`- Version: 20.12.1
- Commit: e1f56258
- How to reproduce: ./pdftops ./poc /dev/null
In function `FoFiType1C::convertToType1`:
```c
299 } else {
300 (*outputFunc)(outputStream, "256 array\n", 10);
301 (*...- Version: 20.12.1
- Commit: e1f56258
- How to reproduce: ./pdftops ./poc /dev/null
In function `FoFiType1C::convertToType1`:
```c
299 } else {
300 (*outputFunc)(outputStream, "256 array\n", 10);
301 (*outputFunc)(outputStream, "0 1 255 {1 index exch /.notdef put} for\n", 40);
302 enc = newEncoding ? newEncoding : (const char **)encoding;
303 for (i = 0; i < 256; ++i) {
→ 304 if (enc[i]) { // enc == 0
305 buf = GooString::format("dup {0:d} /{1:s} put\n", i, enc[i]);
306 (*outputFunc)(outputStream, buf->c_str(), buf->getLength());
307 delete buf;
308 }
309 }
```
enc == 0 in line 304.
Here is the debug from gdb:
```assemble
0x7c6e5d <FoFiType1C::convertToType1(char+0> shr rax, 0x3
0x7c6e61 <FoFiType1C::convertToType1(char+0> cmp BYTE PTR [rax+0x7fff8000], 0x0
0x7c6e68 <FoFiType1C::convertToType1(char+0> jne 0x7c9bfe <FoFiType1C::convertToType1(char const*, char const**, bool, void (*)(void*, char const*, int), void*)+17710>
→ 0x7c6e6e <FoFiType1C::convertToType1(char+0> mov rdx, QWORD PTR [r15]
0x7c6e71 <FoFiType1C::convertToType1(char+0> test rdx, rdx
0x7c6e74 <FoFiType1C::convertToType1(char+0> je 0x7c6df8 <FoFiType1C::convertToType1(char const*, char const**, bool, void (*)(void*, char const*, int), void*)+5928>
0x7c6e76 <FoFiType1C::convertToType1(char+0> mov rax, QWORD PTR [rip+0x926943] # 0x10ed7c0 <__afl_area_ptr>
0x7c6e7d <FoFiType1C::convertToType1(char+0> add BYTE PTR [rax+0x4f23], 0x1
0x7c6e84 <FoFiType1C::convertToType1(char+0> mov DWORD PTR fs:[r13+0x0], 0x245f
gef➤ print $r15
$7 = 0x0
```
The backtrace is:
```c
[#0] 0x7c6e6e → FoFiType1C::convertToType1(this=<optimized out>, psName=0x603000019360 "ERGTBC+#3ceoSansIntel", newEncoding=<optimized out>, ascii=<optimized out>, outputFunc=<optimized out>, outputStream=<optimized out>)
[#1] 0x6346ca → PSOutputDev::setupEmbeddedType1CFont(this=0x619000000f80, font=<optimized out>, id=<optimized out>, psName=<optimized out>)
[#2] 0x629553 → PSOutputDev::setupFont(this=0x619000000f80, font=<optimized out>, parentResDict=<optimized out>)
[#3] 0x62630c → PSOutputDev::setupFonts(this=<optimized out>, resDict=0x6070000020f0)
[#4] 0x622f01 → PSOutputDev::setupResources(this=0x619000000f80, resDict=0x6070000020f0)
[#5] 0x61da18 → PSOutputDev::writeDocSetup(this=0x619000000f80, catalog=<optimized out>, pageList=<optimized out>, duplexA=<optimized out>)
[#6] 0x6195db → PSOutputDev::postInit(this=0x619000000f80)
[#7] 0x6406e9 → PSOutputDev::checkPageSlice(this=<optimized out>, page=<optimized out>, rotateA=<optimized out>, useMediaBox=<optimized out>, crop=0x1, sliceX=<optimized out>, sliceY=<optimized out>, sliceW=<optimized out>, sliceH=<optimized out>, printing=<optimized out>, abortCheckCbk=<optimized out>, abortCheckCbkData=<optimized out>, annotDisplayDecideCbk=<optimized out>, annotDisplayDecideCbkData=<optimized out>)
[#8] 0xa31aad → Page::displaySlice(this=<optimized out>, out=0x619000000f80, hDPI=<optimized out>, vDPI=<optimized out>, rotate=<optimized out>, useMediaBox=<optimized out>, crop=<optimized out>, sliceX=<optimized out>, sliceY=<optimized out>, sliceW=<optimized out>, sliceH=<optimized out>, printing=<optimized out>, abortCheckCbk=<optimized out>, abortCheckCbkData=<optimized out>, annotDisplayDecideCbk=<optimized out>, annotDisplayDecideCbkData=<optimized out>, copyXRef=<optimized out>)
[#9] 0xa31944 → Page::display(this=0x61a0000006a0, out=0x14, hDPI=1.5817496953307363e-153, vDPI=9.041152192150418e+271, rotate=0x0, useMediaBox=0x0, crop=0x0, printing=<optimized out>, abortCheckCbk=0x0, abortCheckCbkData=0x0, annotDisplayDecideCbk=0x0, annotDisplayDecideCbkData=0x0, copyXRef=<optimized out>)
```
[poc](/uploads/ba61b595e864a7a76dd9f2d2b5d7c7c4/poc)https://gitlab.freedesktop.org/poppler/poppler/-/issues/1017Poppler renders patch 11 of Ghent Output Suite V3.0 not correct2020-12-24T09:41:08ZThomas FreitagPoppler renders patch 11 of Ghent Output Suite V3.0 not correctThe output of "pdftoppm -png -overprint" of 110_defaultcolourspace_x3.pdf is not correct:
![defcpis-1](/uploads/de81bc07d95fc7ba02afe156685d1ac1/defcpis-1.png)
Expected result:
![defcpexpected-1](/uploads/ff9805c85a6d6136b50b9664b6c5c73...The output of "pdftoppm -png -overprint" of 110_defaultcolourspace_x3.pdf is not correct:
![defcpis-1](/uploads/de81bc07d95fc7ba02afe156685d1ac1/defcpis-1.png)
Expected result:
![defcpexpected-1](/uploads/ff9805c85a6d6136b50b9664b6c5c739/defcpexpected-1.png)
![110_defaultcolourspace_x3.pdf](/uploads/45bafab0fb5832cad10e048dc27a16fa/110_defaultcolourspace_x3.pdf)https://gitlab.freedesktop.org/poppler/poppler/-/issues/1018Segfault when trying to fill in forms in a pdf2021-01-05T18:17:24ZRaphael NestlerSegfault when trying to fill in forms in a pdfI get a segfault when trying to edit forms in a pdf:
```
>>> bt full
#0 AnnotWidget::generateFieldAppearance(bool*) (this=0x7fffe00bec80, addedDingbatsResource=0x7fffffffc86f) at /usr/src/debug/poppler-20.12.1/poppler/Annot.cc:4934
...I get a segfault when trying to edit forms in a pdf:
```
>>> bt full
#0 AnnotWidget::generateFieldAppearance(bool*) (this=0x7fffe00bec80, addedDingbatsResource=0x7fffffffc86f) at /usr/src/debug/poppler-20.12.1/poppler/Annot.cc:4934
resources = <optimized out>
da = 0x0
appearBuilder = {
appearBuf = 0x555555d7c510
}
success = <optimized out>
appearBuf = <optimized out>
appearDict = <optimized out>
bbox = <optimized out>
resDict = <optimized out>
appearStream = <optimized out>
#1 0x00007ffff019415a in AnnotWidget::updateAppearanceStream() (this=0x7fffe00bec80) at /usr/src/debug/poppler-20.12.1/poppler/Annot.cc:4983
dummyAddDingbatsResource = false
obj1 = {
type = 3758609120,
{
booln = 58,
intg = -266675654,
int64g = 140737221679674,
real = 6.953342632307082e-310,
string = 0x7ffff01ada3a <FormFieldText::setContentCopy(GooString const*)+490>,
cString = 0x7ffff01ada3a <FormFieldText::setContentCopy(GooString const*)+490> "H\213D$(dH+\004%(",
array = 0x7ffff01ada3a <FormFieldText::setContentCopy(GooString const*)+490>,
dict = 0x7ffff01ada3a <FormFieldText::setContentCopy(GooString const*)+490>,
stream = 0x7ffff01ada3a <FormFieldText::setContentCopy(GooString const*)+490>,
ref = {
num = -266675654,
gen = 32767
}
}
}
#2 0x00007ffff01ace82 in FormField::updateChildrenAppearance() (this=<optimized out>) at /usr/src/debug/poppler-20.12.1/poppler/Form.cc:834
i = <optimized out>
#3 FormField::updateChildrenAppearance() (this=0x7fffe00beab0) at /usr/src/debug/poppler-20.12.1/poppler/Form.cc:829
#4 0x00007ffff03e73fc in poppler_form_field_text_set_text(PopplerFormField*, gchar const*) (field=0x7fffe03498a0, text=text@entry=0x5555559d3000 "test") at /usr/src/debug/poppler-20.12.1/glib/poppler-form-field.cc:448
goo_tmp = 0x555555eeafc0
tmp = <optimized out>
length = 8
__PRETTY_FUNCTION__ = "void poppler_form_field_text_set_text(PopplerFormField*, const gchar*)"
#5 0x00007ffff15f6838 in pdf_document_forms_form_field_text_set_text(EvDocumentForms*, EvFormField*, gchar const*) (document=0x555555915f20, field=0x7fffe0355880, text=0x5555559d3000 "test") at ../evince/backend/pdf/ev-poppler.cc:2876
poppler_field = <optimized out>
#6 0x00007ffff7f7e6fc in ev_view_form_field_text_save.part.0.lto_priv.0 (view=0x5555558bf390, widget=<optimized out>) at ../evince/libview/ev-view.c:2584
field_text = <optimized out>
field_region = 0x555555ed3510
field = 0x7fffe0355880
#7 0x00007ffff7f6a9b6 in ev_view_form_field_text_save (widget=<optimized out>, view=<optimized out>) at ../evince/libview/ev-view.c:2621
#8 ev_view_form_field_text_focus_out (widget=<optimized out>, event=<optimized out>, view=<optimized out>) at ../evince/libview/ev-view.c:2622
#9 0x00007ffff75fcf6f in () at /usr/lib/libgtk-3.so.0
#10 0x00007ffff7ea0052 in g_closure_invoke () at /usr/lib/libgobject-2.0.so.0
#11 0x00007ffff7ec89c5 in () at /usr/lib/libgobject-2.0.so.0
#12 0x00007ffff7ebbbcb in g_signal_emit_valist () at /usr/lib/libgobject-2.0.so.0
#13 0x00007ffff7ebcb00 in g_signal_emit () at /usr/lib/libgobject-2.0.so.0
#14 0x00007ffff78c39f5 in () at /usr/lib/libgtk-3.so.0
#15 0x00007ffff78bf6dc in gtk_widget_send_focus_change () at /usr/lib/libgtk-3.so.0
#16 0x00007ffff78d2777 in () at /usr/lib/libgtk-3.so.0
#17 0x00007ffff78d2dba in () at /usr/lib/libgtk-3.so.0
#18 0x00007ffff7e9e7de in g_cclosure_marshal_VOID__OBJECTv () at /usr/lib/libgobject-2.0.so.0
#19 0x00007ffff7ebc98a in g_signal_emit_valist () at /usr/lib/libgobject-2.0.so.0
#20 0x00007ffff7ebcb00 in g_signal_emit () at /usr/lib/libgobject-2.0.so.0
#21 0x00007ffff7ebc98a in g_signal_emit_valist () at /usr/lib/libgobject-2.0.so.0
#22 0x00007ffff7ebcb00 in g_signal_emit () at /usr/lib/libgobject-2.0.so.0
#23 0x00007ffff78b0ffc in gtk_widget_grab_focus () at /usr/lib/libgtk-3.so.0
#24 0x00007ffff7f74ac9 in ev_view_button_press_event (widget=0x5555558bf390, event=0x7fffe0016400) at ../evince/libview/ev-view.c:5558
view = 0x5555558bf390
#25 0x00007ffff75fd249 in () at /usr/lib/libgtk-3.so.0
#26 0x00007ffff7ebc98a in g_signal_emit_valist () at /usr/lib/libgobject-2.0.so.0
#27 0x00007ffff7ebcb00 in g_signal_emit () at /usr/lib/libgobject-2.0.so.0
#28 0x00007ffff78c39f5 in () at /usr/lib/libgtk-3.so.0
#29 0x00007ffff775be15 in () at /usr/lib/libgtk-3.so.0
#30 0x00007ffff775d16d in gtk_main_do_event () at /usr/lib/libgtk-3.so.0
#31 0x00007ffff74b6413 in () at /usr/lib/libgdk-3.so.0
#32 0x00007ffff7507114 in () at /usr/lib/libgdk-3.so.0
#33 0x00007ffff7daba84 in g_main_context_dispatch () at /usr/lib/libglib-2.0.so.0
#34 0x00007ffff7dff9b1 in () at /usr/lib/libglib-2.0.so.0
#35 0x00007ffff7daa2b1 in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0
#36 0x00007ffff71e2d1e in g_application_run () at /usr/lib/libgio-2.0.so.0
#37 0x000055555556e650 in main (argc=<optimized out>, argv=<optimized out>) at ../evince/shell/main.c:316
application = 0x5555558c0170
context = <optimized out>
error = 0x0
status = <optimized out>
```
The pdf was generated from https://www.dndbeyond.com:
[RoughL_41551338.pdf](/uploads/a4825c32758a5b0348e73bc9696c2c26/RoughL_41551338.pdf)
I originally submitted the bug on https://gitlab.gnome.org/GNOME/evince/-/issues/1532 where I was told to submit it here.
System information:
```
$ lsb_release -a
LSB Version: 1.4
Distributor ID: Arch
Description: Arch Linux
Release: rolling
Codename: n/a
$ evince --version
GNOME Document Viewer 3.38.0
```https://gitlab.freedesktop.org/poppler/poppler/-/issues/1019openjp2 is not linked into libpoppler.a2020-12-29T21:54:11ZOlivier Lacroixopenjp2 is not linked into libpoppler.aHello there,
I am using libvips via sharp, and have been trying to add pdf support by recompiling libvips with poppler.
This seemed to work well (ie I was able to process some pdf files), until I received the following for a particular...Hello there,
I am using libvips via sharp, and have been trying to add pdf support by recompiling libvips with poppler.
This seemed to work well (ie I was able to process some pdf files), until I received the following for a particular pdf file at run time:
`nodejs: symbol lookup error: /[...]/node_modules/sharp/build/Release/../../vendor/8.10.5/lib/libvips.so.42: undefined symbol: opj_stream_default_create`
opj_stream_default_create is defined by the openjpeg2 library I believe, and does not appear to have been linked into libpoppler.a
The build script I am using is a modified version of the sharp-libvips one, where openjpeg and poppler are compiled statically. Main modifications are highlighted [here](https://github.com/olivier-lacroix/sharp-libvips/blob/6bbc2cc7ddf6b8dc5910bdd7c80b32a01975e98c/build/lin.sh#L382-L415).
Any idea of what the problem with poppler is ? or (maybe more likely) with my build script :-) ?
Reported at [libvips](https://github.com/libvips/libvips/issues/1944) as well.https://gitlab.freedesktop.org/poppler/poppler/-/issues/1020Rendering issues with some PDF + GObject + Cairo2020-12-30T19:12:12ZJerome FleschRendering issues with some PDF + GObject + CairoHello,
I'm developing [Paperwork](https://openpaper.work) (Python+GTK), and I use Poppler to extract text from PDF files and display them.
On some (rare) PDF files, some of my users have reported getting uncaught exceptions `cairo.Err...Hello,
I'm developing [Paperwork](https://openpaper.work) (Python+GTK), and I use Poppler to extract text from PDF files and display them.
On some (rare) PDF files, some of my users have reported getting uncaught exceptions `cairo.Error: invalid value for a dash setting` when Paperwork tries to render the PDF with Poppler and Cairo. For instance: [ticket #913 on my side](https://gitlab.gnome.org/World/OpenPaperwork/paperwork/-/issues/913) ; other users have reported this very same problem too. Weirdly, the PDF is still correctly drawn on screen.
I've narrowed it down to this Python test script: [test.py](/uploads/671dff64370b916c5b96fd1c9c3d9948/test.py).
I've compiled and installed Poppler from Git (master), and I still can reproduce this issue.
The user who opened the ticket on my side [#913](https://gitlab.gnome.org/World/OpenPaperwork/paperwork/-/issues/913) has sent me by email a PDF to reproduce the problem. Unfortunately, this PDF contains personal information, so I cannot upload it on this ticket. However, [he has allowed me to share it privately](https://gitlab.gnome.org/World/OpenPaperwork/paperwork/-/issues/913#note_885907) with any Poppler developers.
The problem doesn't seem to happen with Evince, which suggests it's related to the GObject Introspection bindings.
Interestingly, if you remove the calls to `cairo_context.save()` and `cairo_context.restore()`, there are still some cairo warnings in the console, but not uncaught exception anymore.
Best regards,https://gitlab.freedesktop.org/poppler/poppler/-/issues/1021stack-overflow in `Gfx` results in Segmentation Fault2021-01-02T21:23:16Zbin24151stack-overflow in `Gfx` results in Segmentation Fault- Version: 20.12.1
- Commit: e1f56258
- How to reproduce: ./pdftops ./poc.pdf /dev/null
The backtrace is:
```
==87508==ERROR: AddressSanitizer: stack-overflow on address 0x7ffdad19dd50 (pc 0x7fa5dfaba70a bp 0x7ffdad1a0320 sp 0x7ffdad19d...- Version: 20.12.1
- Commit: e1f56258
- How to reproduce: ./pdftops ./poc.pdf /dev/null
The backtrace is:
```
==87508==ERROR: AddressSanitizer: stack-overflow on address 0x7ffdad19dd50 (pc 0x7fa5dfaba70a bp 0x7ffdad1a0320 sp 0x7ffdad19dc40 T0)
#0 0x7fa5dfaba709 in buffered_vfprintf /build/glibc-S9d2JN/glibc-2.27/stdio-common/vfprintf.c:2329
#1 0x7fa5dfab7825 in _IO_vfprintf /build/glibc-S9d2JN/glibc-2.27/stdio-common/vfprintf.c:1301
#2 0x44cbc6 in __interceptor_vfprintf (/src/executable/pdftops+0x44cbc6)
#3 0x44ccd6 in fprintf (/src/executable/pdftops+0x44ccd6)
#4 0x525b15 in error(ErrorCategory, long long, char const*, ...) /src/poppler/poppler/Error.cc:76:13
#5 0x991c50 in GfxTilingPattern::parse(Object*, int) /src/poppler/poppler/GfxState.cc:3186:9
#6 0x9911c7 in GfxPattern::parse(GfxResources*, Object*, OutputDev*, GfxState*, int) /src/poppler/poppler/GfxState.cc:3155:19
#7 0x8e7d27 in GfxResources::lookupPattern(char const*, OutputDev*, GfxState*) /src/poppler/poppler/Gfx.cc:389:24
#8 0x8e2fb3 in Gfx::opSetFillColorN(Object*, int) /src/poppler/poppler/Gfx.cc:1542:63
#9 0x8f0006 in Gfx::execOp(Object*, Object*, int) /src/poppler/poppler/Gfx.cc:802:5
#10 0x8ee669 in Gfx::go(bool) /src/poppler/poppler/Gfx.cc:679:13
#11 0x8edc20 in Gfx::display(Object*, bool) /src/poppler/poppler/Gfx.cc:640:5
#12 0x8f3b89 in Gfx::drawForm(Object*, Dict*, double const*, double const*, bool, bool, GfxColorSpace*, bool, bool, bool, Function*, GfxColor*) /src/poppler/poppler/Gfx.cc:4767:5
#13 0xa89643 in PreScanOutputDev::tilingPatternFill(GfxState*, Gfx*, Catalog*, Object*, double const*, int, int, Dict*, double const*, double const*, int, int, int, int, double, double) /src/poppler/poppler/PreScanOutputDev.cc:84:14
#14 0x8f7e91 in Gfx::doTilingPatternFill(GfxTilingPattern*, bool, bool, bool) /src/poppler/poppler/Gfx.cc:2180:25
#15 0x8f541e in Gfx::doPatternFill(bool) /src/poppler/poppler/Gfx.cc:1898:9
#16 0x8c308b in Gfx::opFillStroke(Object*, int) /src/poppler/poppler/Gfx.cc:1797:17
#17 0x8f0006 in Gfx::execOp(Object*, Object*, int) /src/poppler/poppler/Gfx.cc:802:5
#18 0x8ee669 in Gfx::go(bool) /src/poppler/poppler/Gfx.cc:679:13
#19 0x8edc20 in Gfx::display(Object*, bool) /src/poppler/poppler/Gfx.cc:640:5
#20 0x8f3b89 in Gfx::drawForm(Object*, Dict*, double const*, double const*, bool, bool, GfxColorSpace*, bool, bool, bool, Function*, GfxColor*) /src/poppler/poppler/Gfx.cc:4767:5
#21 0xa89643 in PreScanOutputDev::tilingPatternFill(GfxState*, Gfx*, Catalog*, Object*, double const*, int, int, Dict*, double const*, double const*, int, int, int, int, double, double) /src/poppler/poppler/PreScanOutputDev.cc:84:14
#22 0x8f7e91 in Gfx::doTilingPatternFill(GfxTilingPattern*, bool, bool, bool) /src/poppler/poppler/Gfx.cc:2180:25
#23 0x8f541e in Gfx::doPatternFill(bool) /src/poppler/poppler/Gfx.cc:1898:9
#24 0x8c308b in Gfx::opFillStroke(Object*, int) /src/poppler/poppler/Gfx.cc:1797:17
#25 0x8f0006 in Gfx::execOp(Object*, Object*, int) /src/poppler/poppler/Gfx.cc:802:5
#26 0x8ee669 in Gfx::go(bool) /src/poppler/poppler/Gfx.cc:679:13
#27 0x8edc20 in Gfx::display(Object*, bool) /src/poppler/poppler/Gfx.cc:640:5
#28 0x8f3b89 in Gfx::drawForm(Object*, Dict*, double const*, double const*, bool, bool, GfxColorSpace*, bool, bool, bool, Function*, GfxColor*) /src/poppler/poppler/Gfx.cc:4767:5
#29 0xa89643 in PreScanOutputDev::tilingPatternFill(GfxState*, Gfx*, Catalog*, Object*, double const*, int, int, Dict*, double const*, double const*, int, int, int, int, double, double) /src/poppler/poppler/PreScanOutputDev.cc:84:14
#30 0x8f7e91 in Gfx::doTilingPatternFill(GfxTilingPattern*, bool, bool, bool) /src/poppler/poppler/Gfx.cc:2180:25
#31 0x8f541e in Gfx::doPatternFill(bool) /src/poppler/poppler/Gfx.cc:1898:9
#32 0x8c308b in Gfx::opFillStroke(Object*, int) /src/poppler/poppler/Gfx.cc:1797:17
#33 0x8f0006 in Gfx::execOp(Object*, Object*, int) /src/poppler/poppler/Gfx.cc:802:5
#34 0x8ee669 in Gfx::go(bool) /src/poppler/poppler/Gfx.cc:679:13
#35 0x8edc20 in Gfx::display(Object*, bool) /src/poppler/poppler/Gfx.cc:640:5
#36 0x8f3b89 in Gfx::drawForm(Object*, Dict*, double const*, double const*, bool, bool, GfxColorSpace*, bool, bool, bool, Function*, GfxColor*) /src/poppler/poppler/Gfx.cc:4767:5
#37 0xa89643 in PreScanOutputDev::tilingPatternFill(GfxState*, Gfx*, Catalog*, Object*, double const*, int, int, Dict*, double const*, double const*, int, int, int, int, double, double) /src/poppler/poppler/PreScanOutputDev.cc:84:14
#38 0x8f7e91 in Gfx::doTilingPatternFill(GfxTilingPattern*, bool, bool, bool) /src/poppler/poppler/Gfx.cc:2180:25
#39 0x8f541e in Gfx::doPatternFill(bool) /src/poppler/poppler/Gfx.cc:1898:9
#40 0x8c308b in Gfx::opFillStroke(Object*, int) /src/poppler/poppler/Gfx.cc:1797:17
#41 0x8f0006 in Gfx::execOp(Object*, Object*, int) /src/poppler/poppler/Gfx.cc:802:5
#42 0x8ee669 in Gfx::go(bool) /src/poppler/poppler/Gfx.cc:679:13
#43 0x8edc20 in Gfx::display(Object*, bool) /src/poppler/poppler/Gfx.cc:640:5
#44 0x8f3b89 in Gfx::drawForm(Object*, Dict*, double const*, double const*, bool, bool, GfxColorSpace*, bool, bool, bool, Function*, GfxColor*) /src/poppler/poppler/Gfx.cc:4767:5
#45 0xa89643 in PreScanOutputDev::tilingPatternFill(GfxState*, Gfx*, Catalog*, Object*, double const*, int, int, Dict*, double const*, double const*, int, int, int, int, double, double) /src/poppler/poppler/PreScanOutputDev.cc:84:14
#46 0x8f7e91 in Gfx::doTilingPatternFill(GfxTilingPattern*, bool, bool, bool) /src/poppler/poppler/Gfx.cc:2180:25
#47 0x8f541e in Gfx::doPatternFill(bool) /src/poppler/poppler/Gfx.cc:1898:9
#48 0x8c308b in Gfx::opFillStroke(Object*, int) /src/poppler/poppler/Gfx.cc:1797:17
#49 0x8f0006 in Gfx::execOp(Object*, Object*, int) /src/poppler/poppler/Gfx.cc:802:5
#50 0x8ee669 in Gfx::go(bool) /src/poppler/poppler/Gfx.cc:679:13
#51 0x8edc20 in Gfx::display(Object*, bool) /src/poppler/poppler/Gfx.cc:640:5
#52 0x8f3b89 in Gfx::drawForm(Object*, Dict*, double const*, double const*, bool, bool, GfxColorSpace*, bool, bool, bool, Function*, GfxColor*) /src/poppler/poppler/Gfx.cc:4767:5
#53 0xa89643 in PreScanOutputDev::tilingPatternFill(GfxState*, Gfx*, Catalog*, Object*, double const*, int, int, Dict*, double const*, double const*, int, int, int, int, double, double) /src/poppler/poppler/PreScanOutputDev.cc:84:14
#54 0x8f7e91 in Gfx::doTilingPatternFill(GfxTilingPattern*, bool, bool, bool) /src/poppler/poppler/Gfx.cc:2180:25
#55 0x8f541e in Gfx::doPatternFill(bool) /src/poppler/poppler/Gfx.cc:1898:9
#56 0x8c308b in Gfx::opFillStroke(Object*, int) /src/poppler/poppler/Gfx.cc:1797:17
#57 0x8f0006 in Gfx::execOp(Object*, Object*, int) /src/poppler/poppler/Gfx.cc:802:5
#58 0x8ee669 in Gfx::go(bool) /src/poppler/poppler/Gfx.cc:679:13
#59 0x8edc20 in Gfx::display(Object*, bool) /src/poppler/poppler/Gfx.cc:640:5
#60 0x8f3b89 in Gfx::drawForm(Object*, Dict*, double const*, double const*, bool, bool, GfxColorSpace*, bool, bool, bool, Function*, GfxColor*) /src/poppler/poppler/Gfx.cc:4767:5
#61 0xa89643 in PreScanOutputDev::tilingPatternFill(GfxState*, Gfx*, Catalog*, Object*, double const*, int, int, Dict*, double const*, double const*, int, int, int, int, double, double) /src/poppler/poppler/PreScanOutputDev.cc:84:14
#62 0x8f7e91 in Gfx::doTilingPatternFill(GfxTilingPattern*, bool, bool, bool) /src/poppler/poppler/Gfx.cc:2180:25
#63 0x8f541e in Gfx::doPatternFill(bool) /src/poppler/poppler/Gfx.cc:1898:9
#64 0x8c308b in Gfx::opFillStroke(Object*, int) /src/poppler/poppler/Gfx.cc:1797:17
#65 0x8f0006 in Gfx::execOp(Object*, Object*, int) /src/poppler/poppler/Gfx.cc:802:5
#66 0x8ee669 in Gfx::go(bool) /src/poppler/poppler/Gfx.cc:679:13
#67 0x8edc20 in Gfx::display(Object*, bool) /src/poppler/poppler/Gfx.cc:640:5
#68 0x8f3b89 in Gfx::drawForm(Object*, Dict*, double const*, double const*, bool, bool, GfxColorSpace*, bool, bool, bool, Function*, GfxColor*) /src/poppler/poppler/Gfx.cc:4767:5
#69 0xa89643 in PreScanOutputDev::tilingPatternFill(GfxState*, Gfx*, Catalog*, Object*, double const*, int, int, Dict*, double const*, double const*, int, int, int, int, double, double) /src/poppler/poppler/PreScanOutputDev.cc:84:14
#70 0x8f7e91 in Gfx::doTilingPatternFill(GfxTilingPattern*, bool, bool, bool) /src/poppler/poppler/Gfx.cc:2180:25
#71 0x8f541e in Gfx::doPatternFill(bool) /src/poppler/poppler/Gfx.cc:1898:9
#72 0x8c308b in Gfx::opFillStroke(Object*, int) /src/poppler/poppler/Gfx.cc:1797:17
#73 0x8f0006 in Gfx::execOp(Object*, Object*, int) /src/poppler/poppler/Gfx.cc:802:5
#74 0x8ee669 in Gfx::go(bool) /src/poppler/poppler/Gfx.cc:679:13
#75 0x8edc20 in Gfx::display(Object*, bool) /src/poppler/poppler/Gfx.cc:640:5
#76 0x8f3b89 in Gfx::drawForm(Object*, Dict*, double const*, double const*, bool, bool, GfxColorSpace*, bool, bool, bool, Function*, GfxColor*) /src/poppler/poppler/Gfx.cc:4767:5
#77 0xa89643 in PreScanOutputDev::tilingPatternFill(GfxState*, Gfx*, Catalog*, Object*, double const*, int, int, Dict*, double const*, double const*, int, int, int, int, double, double) /src/poppler/poppler/PreScanOutputDev.cc:84:14
#78 0x8f7e91 in Gfx::doTilingPatternFill(GfxTilingPattern*, bool, bool, bool) /src/poppler/poppler/Gfx.cc:2180:25
#79 0x8f541e in Gfx::doPatternFill(bool) /src/poppler/poppler/Gfx.cc:1898:9
#80 0x8c308b in Gfx::opFillStroke(Object*, int) /src/poppler/poppler/Gfx.cc:1797:17
#81 0x8f0006 in Gfx::execOp(Object*, Object*, int) /src/poppler/poppler/Gfx.cc:802:5
#82 0x8ee669 in Gfx::go(bool) /src/poppler/poppler/Gfx.cc:679:13
#83 0x8edc20 in Gfx::display(Object*, bool) /src/poppler/poppler/Gfx.cc:640:5
#84 0x8f3b89 in Gfx::drawForm(Object*, Dict*, double const*, double const*, bool, bool, GfxColorSpace*, bool, bool, bool, Function*, GfxColor*) /src/poppler/poppler/Gfx.cc:4767:5
#85 0xa89643 in PreScanOutputDev::tilingPatternFill(GfxState*, Gfx*, Catalog*, Object*, double const*, int, int, Dict*, double const*, double const*, int, int, int, int, double, double) /src/poppler/poppler/PreScanOutputDev.cc:84:14
#86 0x8f7e91 in Gfx::doTilingPatternFill(GfxTilingPattern*, bool, bool, bool) /src/poppler/poppler/Gfx.cc:2180:25
#87 0x8f541e in Gfx::doPatternFill(bool) /src/poppler/poppler/Gfx.cc:1898:9
#88 0x8c308b in Gfx::opFillStroke(Object*, int) /src/poppler/poppler/Gfx.cc:1797:17
#89 0x8f0006 in Gfx::execOp(Object*, Object*, int) /src/poppler/poppler/Gfx.cc:802:5
#90 0x8ee669 in Gfx::go(bool) /src/poppler/poppler/Gfx.cc:679:13
#91 0x8edc20 in Gfx::display(Object*, bool) /src/poppler/poppler/Gfx.cc:640:5
#92 0x8f3b89 in Gfx::drawForm(Object*, Dict*, double const*, double const*, bool, bool, GfxColorSpace*, bool, bool, bool, Function*, GfxColor*) /src/poppler/poppler/Gfx.cc:4767:5
#93 0xa89643 in PreScanOutputDev::tilingPatternFill(GfxState*, Gfx*, Catalog*, Object*, double const*, int, int, Dict*, double const*, double const*, int, int, int, int, double, double) /src/poppler/poppler/PreScanOutputDev.cc:84:14
#94 0x8f7e91 in Gfx::doTilingPatternFill(GfxTilingPattern*, bool, bool, bool) /src/poppler/poppler/Gfx.cc:2180:25
#95 0x8f541e in Gfx::doPatternFill(bool) /src/poppler/poppler/Gfx.cc:1898:9
#96 0x8c308b in Gfx::opFillStroke(Object*, int) /src/poppler/poppler/Gfx.cc:1797:17
#97 0x8f0006 in Gfx::execOp(Object*, Object*, int) /src/poppler/poppler/Gfx.cc:802:5
#98 0x8ee669 in Gfx::go(bool) /src/poppler/poppler/Gfx.cc:679:13
#99 0x8edc20 in Gfx::display(Object*, bool) /src/poppler/poppler/Gfx.cc:640:5
#100 0x8f3b89 in Gfx::drawForm(Object*, Dict*, double const*, double const*, bool, bool, GfxColorSpace*, bool, bool, bool, Function*, GfxColor*) /src/poppler/poppler/Gfx.cc:4767:5
#101 0xa89643 in PreScanOutputDev::tilingPatternFill(GfxState*, Gfx*, Catalog*, Object*, double const*, int, int, Dict*, double const*, double const*, int, int, int, int, double, double) /src/poppler/poppler/PreScanOutputDev.cc:84:14
#102 0x8f7e91 in Gfx::doTilingPatternFill(GfxTilingPattern*, bool, bool, bool) /src/poppler/poppler/Gfx.cc:2180:25
#103 0x8f541e in Gfx::doPatternFill(bool) /src/poppler/poppler/Gfx.cc:1898:9
#104 0x8c308b in Gfx::opFillStroke(Object*, int) /src/poppler/poppler/Gfx.cc:1797:17
#105 0x8f0006 in Gfx::execOp(Object*, Object*, int) /src/poppler/poppler/Gfx.cc:802:5
#106 0x8ee669 in Gfx::go(bool) /src/poppler/poppler/Gfx.cc:679:13
#107 0x8edc20 in Gfx::display(Object*, bool) /src/poppler/poppler/Gfx.cc:640:5
#108 0x8f3b89 in Gfx::drawForm(Object*, Dict*, double const*, double const*, bool, bool, GfxColorSpace*, bool, bool, bool, Function*, GfxColor*) /src/poppler/poppler/Gfx.cc:4767:5
#109 0xa89643 in PreScanOutputDev::tilingPatternFill(GfxState*, Gfx*, Catalog*, Object*, double const*, int, int, Dict*, double const*, double const*, int, int, int, int, double, double) /src/poppler/poppler/PreScanOutputDev.cc:84:14
#110 0x8f7e91 in Gfx::doTilingPatternFill(GfxTilingPattern*, bool, bool, bool) /src/poppler/poppler/Gfx.cc:2180:25
#111 0x8f541e in Gfx::doPatternFill(bool) /src/poppler/poppler/Gfx.cc:1898:9
#112 0x8c308b in Gfx::opFillStroke(Object*, int) /src/poppler/poppler/Gfx.cc:1797:17
#113 0x8f0006 in Gfx::execOp(Object*, Object*, int) /src/poppler/poppler/Gfx.cc:802:5
#114 0x8ee669 in Gfx::go(bool) /src/poppler/poppler/Gfx.cc:679:13
#115 0x8edc20 in Gfx::display(Object*, bool) /src/poppler/poppler/Gfx.cc:640:5
#116 0x8f3b89 in Gfx::drawForm(Object*, Dict*, double const*, double const*, bool, bool, GfxColorSpace*, bool, bool, bool, Function*, GfxColor*) /src/poppler/poppler/Gfx.cc:4767:5
#117 0xa89643 in PreScanOutputDev::tilingPatternFill(GfxState*, Gfx*, Catalog*, Object*, double const*, int, int, Dict*, double const*, double const*, int, int, int, int, double, double) /src/poppler/poppler/PreScanOutputDev.cc:84:14
...
```
[poc.pdf](/uploads/5d319eec3de201ca2b0845feebfdb2db/poc.pdf)https://gitlab.freedesktop.org/poppler/poppler/-/issues/1022Invalid Memory Access in ` Splash::pipeRun` which results in Segmentation Fault2022-11-29T05:26:08Zbin24151Invalid Memory Access in ` Splash::pipeRun` which results in Segmentation Fault- Version: 20.12.1
- Commit: e1f56258
- How to reproduce: ./pdftops ./poc.pdf /dev/null
The backtrace is:
```
==79548==ERROR: AddressSanitizer: SEGV on unknown address 0x633f8001da68 (pc 0x00000071f9a6 bp 0x7ffea1e3ea60 sp 0x7ffea1e3e8...- Version: 20.12.1
- Commit: e1f56258
- How to reproduce: ./pdftops ./poc.pdf /dev/null
The backtrace is:
```
==79548==ERROR: AddressSanitizer: SEGV on unknown address 0x633f8001da68 (pc 0x00000071f9a6 bp 0x7ffea1e3ea60 sp 0x7ffea1e3e8c0 T0)
==79548==The signal is caused by a READ memory access.
#0 0x71f9a5 in Splash::pipeRun(SplashPipe*) /src/poppler_latest/splash/Splash.cc:433:24
#1 0x782e48 in Splash::drawSpan(SplashPipe*, int, int, int, bool) /src/poppler_latest/splash/Splash.cc:1339:13
#2 0x743645 in Splash::fillWithPattern(SplashPath*, bool, SplashPattern*, double) /src/poppler_latest/splash/Splash.cc
#3 0x6e71cf in SplashOutputDev::fill(GfxState*) /src/poppler_latest/poppler/SplashOutputDev.cc:2110:13
#4 0x8d3907 in Gfx::opCloseFillStroke(Object*, int) /src/poppler_latest/poppler/Gfx.cc:1823:22
#5 0x8f3866 in Gfx::execOp(Object*, Object*, int) /src/poppler_latest/poppler/Gfx.cc:802:5
#6 0x8f1ec9 in Gfx::go(bool) /src/poppler_latest/poppler/Gfx.cc:679:13
#7 0x8f1480 in Gfx::display(Object*, bool) /src/poppler_latest/poppler/Gfx.cc:640:5
#8 0x916428 in Gfx::doShowText(GooString const*) /src/poppler_latest/poppler/Gfx.cc:3923:25
#9 0x8d2468 in Gfx::opShowText(Object*, int) /src/poppler_latest/poppler/Gfx.cc:3709:5
#10 0x8f3866 in Gfx::execOp(Object*, Object*, int) /src/poppler_latest/poppler/Gfx.cc:802:5
#11 0x8f1ec9 in Gfx::go(bool) /src/poppler_latest/poppler/Gfx.cc:679:13
#12 0x8f1480 in Gfx::display(Object*, bool) /src/poppler_latest/poppler/Gfx.cc:640:5
#13 0xa7dc5f in Page::displaySlice(OutputDev*, double, double, int, bool, bool, int, int, int, int, bool, bool (*)(void*), void*, bool (*)(Annot*, void*), void*, bool) /src/poppler_latest/poppler/Page.cc:576:14
#14 0x669e81 in PSOutputDev::checkPageSlice(Page*, double, double, int, bool, bool, int, int, int, int, bool, bool (*)(void*), void*, bool (*)(Annot*, void*), void*) /src/poppler_latest/poppler/PSOutputDev.cc:3252:15
#15 0xa7d958 in Page::displaySlice(OutputDev*, double, double, int, bool, bool, int, int, int, int, bool, bool (*)(void*), void*, bool (*)(Annot*, void*), void*, bool) /src/poppler_latest/poppler/Page.cc:562:15
#16 0xa7d7de in Page::display(OutputDev*, double, double, int, bool, bool, bool, bool (*)(void*), void*, bool (*)(Annot*, void*), void*, bool) /src/poppler_latest/poppler/Page.cc:521:5
#17 0x54b920 in PDFDoc::displayPage(OutputDev*, int, double, double, int, bool, bool, bool, bool (*)(void*), void*, bool (*)(Annot*, void*), void*, bool) /src/poppler_latest/poppler/PDFDoc.cc:639:24
#18 0x5219bc in main /src/poppler_latest/utils/pdftops.cc:515:18
#19 0x7fc888708bf6 in __libc_start_main /build/glibc-S9d2JN/glibc-2.27/csu/../csu/libc-start.c:310
#20 0x420439 in _start (/src/executable/pdftops_latest+0x420439)
```
[poc](/uploads/470460f08c900fde55047e5b86c70290/poc)https://gitlab.freedesktop.org/poppler/poppler/-/issues/1023Build poppler 20.12 with msvc 2017 in windows error2021-01-05T07:19:43Zs0lut1onBuild poppler 20.12 with msvc 2017 in windows errorI try build poppler 20.12 with msvc 2017 in windows 10 and it work with poppler-cpp. But when I build with poppler-qt5 it return error:
> Error C2491 'Poppler::OptContentModel::staticMetaObject': definition of dllimport static data memb...I try build poppler 20.12 with msvc 2017 in windows 10 and it work with poppler-cpp. But when I build with poppler-qt5 it return error:
> Error C2491 'Poppler::OptContentModel::staticMetaObject': definition of dllimport static data member not allowed poppler-qt5
> poppler-20.12.1\build\qt5\src\poppler-qt5_autogen\include_Release\EWIEGA46WW\moc_poppler-optcontent.cpp 65
I have try to add:
> #ifdef CURRENT_MODULE
> #define DLLIMPORTEXPORT _declspec(dllexport)
> #else
> #define DLLIMPORTEXPORT _declspec(dllimport)
> #endif
But nothing work. Can someone help me with this ?https://gitlab.freedesktop.org/poppler/poppler/-/issues/1024Not able to apply changes in pdf forms2021-01-05T11:13:11ZRaphael NestlerNot able to apply changes in pdf formsWhen editing the forms in the pdf from https://www.dndbeyond.com: [RoughL_41551338.pdf](https://gitlab.freedesktop.org/poppler/poppler/uploads/a4825c32758a5b0348e73bc9696c2c26/RoughL_41551338.pdf) the changes don't update the appearance ...When editing the forms in the pdf from https://www.dndbeyond.com: [RoughL_41551338.pdf](https://gitlab.freedesktop.org/poppler/poppler/uploads/a4825c32758a5b0348e73bc9696c2c26/RoughL_41551338.pdf) the changes don't update the appearance (but are changed when trying to edit the same field again).
If one then saves the pdf and loads it again the changed fields appear empty, but on editing shows the changed text.
Tested editors: evince and Okular.
The pdf is handled fine by the built in pdf viewer of Firefox.
### System Information
```
$ lsb_release -a
LSB Version: 1.4
Distributor ID: Arch
Description: Arch Linux
Release: rolling
Codename: n/a
$ pacman -Q poppler
poppler 21.01.0-1
```https://gitlab.freedesktop.org/poppler/poppler/-/issues/1025pdfinfo -struct-text and nested nonstructural marked content2021-01-06T00:09:43ZRenkemapdfinfo -struct-text and nested nonstructural marked contentI ran into a problem with `pdfinfo -struct-text`, which I think is caused by
a bug.
The [attached file](/uploads/6121203dd6488d57b26b30c22e7a2f11/poppler-bug.pdf) demonstrates the problem. Extracting the textual content gives this resu...I ran into a problem with `pdfinfo -struct-text`, which I think is caused by
a bug.
The [attached file](/uploads/6121203dd6488d57b26b30c22e7a2f11/poppler-bug.pdf) demonstrates the problem. Extracting the textual content gives this result:
```
$ pdfinfo -struct-text poppler-bug.pdf
Document
P (block)
"xxxyyy"
```
where the expected output would be:
```
Document
P (block)
"xxxyyyzzz"
```
The relevant part of the attached pdf is the page content stream:
```
3 0 obj
<< /Length 215 >>
stream
1 0 0 1 48.272 46.73 cm
/P <</MCID 0>> BDC 1 0 0 1 -48.272 -46.73 cm
BT
/F1 9.96264 Tf
1 0 0 1 48.272 46.73 Tm [(xxx)]TJ
/Span << >> BDC
1 0 0 1 64.046 46.73 Tm [(yyy)]TJ
EMC
1 0 0 1 79.82 46.73 Tm [(zzz)]TJ
ET
EMC
endstream
```
As you see, the problem is caused by a nonstructural marked content sequence
(the `/Span`) inside a marked content item (marked with `/P`). This is
explicitly allowed by the specification (see §14.7.4.1, p.560), yet somehow
cuts short pdfinfo’s text extraction function.
This is on debian unstable, with the following version:
```
$ pdfinfo -v
pdfinfo version 20.09.0
Copyright 2005-2020 The Poppler Developers - http://poppler.freedesktop.org
Copyright 1996-2011 Glyph & Cog, LLC
```https://gitlab.freedesktop.org/poppler/poppler/-/issues/1026"some font thing failed" - text simply not displayed2021-02-22T03:45:38ZAndy Hairston"some font thing failed" - text simply not displayedIn some PDFs, I get an error message "some font thing failed", and the resulting image simply doesn't have the text from the PDF. These are credit card statements from Citi, so I can't post the PDF here, and I haven't seen this issue on ...In some PDFs, I get an error message "some font thing failed", and the resulting image simply doesn't have the text from the PDF. These are credit card statements from Citi, so I can't post the PDF here, and I haven't seen this issue on other PDFs (that I know of - missing text is hard to notice).
Running pdftocairo gives these errors:
Syntax Error: Embedded font file may be invalid (several times, right at the beginning)
Syntax Error: could not create type1 face (hundreds of times)
some font thing failed (hundreds of times)
Running pdftoppm gives these errors:
Syntax Error: Embedded font file may be invalid
Syntax Error: Embedded font file may be invalid
Syntax Error: Embedded font file may be invalid
Syntax Error: Embedded font file may be invalid
Syntax Error: Couldn't create a font for 'F5_Otl'
Syntax Error: Couldn't create a font for 'F6_Otl'
Syntax Error: Couldn't create a font for 'F7_Otl'
Syntax Error: Couldn't create a font for 'F8_Otl'
The outputs from these are attached.
pdffonts -subst reports this:
Syntax Error: Embedded font file may be invalid
Syntax Error: Embedded font file may be invalid
Syntax Error: Embedded font file may be invalid
Syntax Error: Embedded font file may be invalid
name object ID substitute font substitute font file
------------------------------------ --------- ------------------------------------ ------------------------------------
While I wouldn't expect poppler to be able to guess at what an invalid embedded font should look like, I *would* expect it to replace it with something else, so at least the text would show up.
![cairo-output-5](/uploads/87df9b364b48bdf8bb011b5ab3cfc88f/cairo-output-5.png)
![splash-output-5](/uploads/164aca961539969e78d80a9cf6e2717d/splash-output-5.png)https://gitlab.freedesktop.org/poppler/poppler/-/issues/1027Selection doesn't flow properly across lines in Evince2021-07-17T00:39:39Zgabrc52Selection doesn't flow properly across lines in EvinceI can reproduce this bug in Evince 3.38.0, and I was asked to report here. [Original bug](https://gitlab.gnome.org/GNOME/evince/-/issues/1546)
I have a specific PDF where selecting doesn't flow properly across lines (see the following G...I can reproduce this bug in Evince 3.38.0, and I was asked to report here. [Original bug](https://gitlab.gnome.org/GNOME/evince/-/issues/1546)
I have a specific PDF where selecting doesn't flow properly across lines (see the following GIF):
![bug gif](https://gitlab.gnome.org/GNOME/evince/uploads/575147f3e5881ae58792b40ff4ebd348/bug.gif)
This is the PDF where it's possible to reproduce the bug.
[bug.pdf](https://gitlab.gnome.org/GNOME/evince/uploads/b015446908387125af3327b66f64ff98/bug.pdf)