[poppler] PDF compliance, regarding Annot /Rect
Tobias Deiminger
haxtibal at posteo.de
Wed Mar 21 08:17:35 UTC 2018
Am 20.03.2018 23:31 schrieb Leonard Rosenthol:
> To be clear - AP's are optional in ISO 32000-1 (PDF 1.x) but are
> required by ISO 32000-2 (PDF 2.x)
Ah, thanks, wasn't aware of that. Afaik poppler doesn't claim to support
PDF 2.x yet, but good to know anyway.
> However, you are completely correct that drawing an AP (either
> pre-generated or dynamically created) outside of the Rect is a bug.
> The Rect is considered a clipping rect for the AP - this is defined in
> 32K somewhere...
Ok, then the bugfixing patches should get their own entry on bugzilla.
Such a change should be visible (actively announced?) to downstream
projects, because it's very likely some of them have adapted to the
buggy poppler behavior and would have to change accordingly. I'll cut
the patches out of my unrelated patch series therefore.
Cheers
Tobias
> On 3/20/18, 6:22 PM, "poppler on behalf of Tobias Deiminger"
> <poppler-bounces at lists.freedesktop.org on behalf of
> haxtibal at posteo.de> wrote:
>
> I've stumbled upon the following issue several times, and it
> affects a
> patch series I'm currently doing. Please let me ask about it here.
>
> Suppose we've got an annotation object like
> <<
> /Type /Annot
> /Rect [0.00 0.00 10.00 10.00]
> % ... other required stuff, omitted for readability ... %
> % Important: There's no /AP %
> >>
>
> An annotation at position 0,0 with dimension 10x10 pts... There's
> no AP
> entry, i.e. no embedded appearance. That's fine, AP is optional in
> ISO
> 32000. Poppler conforms and does its best to generate the missing
> appearance at runtime.
>
> But then poppler does something that seems buggy. In some cases it
> ignores /Rect and draws the generated appearance with a new size
> chosen
> by poppler. The new size is not written back to /Rect, nor is it
> reflected in public APIs (this puzzles Okular [0]). As an example
> you'll
> always get 24x24 pts icons for popup notes, even if /Rect says
> 10x10
> pts.
>
> My first question: Is ignoring /Rect for dynamically generated
> appearances compliant with ISO 32000?
> If not, then it's a poppler bug, and I'd prefer to fix the bug
> instead
> of building workarounds into my patch.
>
> If I got it right, "Algorithm: Appearance streams" from ISO 32000
> describes how to do it right. We shall transform AP BBox to match
> with
> Annot Rect. And we're almost there: Gfx::drawAnnot [1] sets up a
> matrix
> to transform AP BBox into a rectangle given by xMin, yMin, xMax,
> yMax
> arguments. It already works. We just have to use the original Rect
> coordinates when calling Gfx::drawAnnot, instead of new ones. We
> might
> loose aspect ratio for popplers own appearances, but that's imho
> better
> than lying about the drawn size.
>
> So my second question: Is calling Gfx::drawAnnot with original
> /Rect
> coordinates a valid approach for a fix?
>
> [0]
> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbugs.kde.org%2Fshow_bug.cgi%3Fid%3D388458&data=02%7C01%7Clrosenth%40adobe.com%7Cdf368ef231de4d30f88908d58e8f86bf%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636571669467648347&sdata=fHXn5irYuLI51s5pCKEY1EvOpyMZLl69szEzK%2B4M4Fk%3D&reserved=0
> [1]
>
> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcgit.freedesktop.org%2Fpoppler%2Fpoppler%2Ftree%2Fpoppler%2FGfx.cc%3Fh%3Dpoppler-0.63.0%23n5125&data=02%7C01%7Clrosenth%40adobe.com%7Cdf368ef231de4d30f88908d58e8f86bf%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636571669467648347&sdata=3Hsg66glB7AADAz4L5wtLpP%2FG910kYLxqg0qIDE7Zpo%3D&reserved=0
> _______________________________________________
> poppler mailing list
> poppler at lists.freedesktop.org
>
> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Fpoppler&data=02%7C01%7Clrosenth%40adobe.com%7Cdf368ef231de4d30f88908d58e8f86bf%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636571669467648347&sdata=VS4fgL2LNavg1ueN4k8Oht43emYjPsX8mvA2tjF63is%3D&reserved=0
More information about the poppler
mailing list