[poppler] Black boxes & Poppler
Albert Astals Cid
aacid at kde.org
Sat Feb 18 08:36:02 PST 2012
El Dissabte, 18 de febrer de 2012, a les 16:28:44, Thomas Freitag va escriure:
> Am 15.02.2012 09:15, schrieb Thomas Freitag:
> > Am 14.02.2012 23:17, schrieb Albert Astals Cid:
> >> El Dimarts, 14 de febrer de 2012, a les 20:35:29, Thomas Freitag va
> >>
> >> escriure:
> >>> Hi Albert!
> >>>
> >>> Am 14.02.2012 18:07, schrieb Ralph Gootee:
> >>>> Hi Thomas!
> >>>>
> >>>> Thanks for the help!
> >>>>
> >>>> Steps to reproduce
> >>>>
> >>>> 1) split the pdf with pdfseparate
> >>>> 2) use pdftopdf to convert the output to png
> >>>>
> >>>> Also, the PDF errors out acrobat after separation. It's a little
> >>>> confusing but there's already black boxes in the pdf (from
> >>>> redaction)
> >>>> the black boxes will show up in the middle after pdftoppm.
> >>>>
> >>>> We're really really happy with poppler, thanks for helping to make
> >>>> such
> >>>> an awesome lib!
> >>>
> >>> We have two problems with it, one is a general problem coming from
> >>> the
> >>> merge:
> >>>
> >>> a) xRef->getNumObjects() will no more work with the changes from
> >>> our/my
> >>> merge in PDFDoc::writePageObjects, 'cause last is not set here. We
> >>> need
> >>> to use xRef->getSize().
> >>
> >> We use getNumObjects in a lot of other places, aren't those affected
> >> too?
> >> Shouldn't we just revert getNumObjects to do what it did? i.e. kill
> >> the last
> >> variable and just return size? What's the benefit of this last
> >> variable?
> >
> > in the other places getNumOnjects() will work: last is filled during
> > creating the XRef table in readXRefTable, and has the number of the
> > last valid xref, where as size is the number of allocated xrefs.
> > This optimization is coming from the merge. The problem in
> > writePageObjects is the the xref table wasn't read but is indirect
> > created, therefore we must use size there, also because xrefs are here
> > not created necessary in ascending order.
> > In short terms: in all other cases it is okay to use getNumOnjects.
>
> I regtest the patch. All tests pass:
> 1124 tests passed (100.00%)
> For completeness I attach the patch, which I regtested, once again.
I've commited it to master only, since we are a bit late with 0.20 i prefer we
center all our attention into master and don't do any further 0.18.x releases.
Cheers,
Albert
>
> Cheers,
> Thomas
>
> > Thomas
> >
> >> Albert
> >>
> >>> b) CCITTFaxStream and DCTStream are enherited by FlateStream, and
> >>> the
> >>> FlateStream::reset "eats" the first two bytes. Therefore a call of
> >>> unfilteredReset will not work in pdfseparate. As far as I can see,
> >>> unfilteredReset is just called by PDFDoc::writeRawStream (or in
> >>> Stream.cc itself), therefore I think my changes in the attached
> >>> patch
> >>> are safe.
> >>>
> >>> a) is the reason why I send this patch immediately and do not wait
> >>> until
> >>> the weekend: pdfseparate and pdfunite will no more work on the HEAD
> >>> revision.
> >>>
> >>> @Ralph: You need to check out the head revision and apply this
> >>> patch, if
> >>> You want to test it immediately.
> >>>
> >>> Cheers,
> >>> Thomas
> >>>
> >>>> Cheers,
> >>>> Ralph G.
> >>
> >> _______________________________________________
> >> poppler mailing list
> >> poppler at lists.freedesktop.org
> >> http://lists.freedesktop.org/mailman/listinfo/poppler
> >>
> >> .
> >
> > _______________________________________________
> > poppler mailing list
> > poppler at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/poppler
> >
> > .
More information about the poppler
mailing list