You're right:
https://forums.adobe.com/thread/507079?tstart=0
https://wwwimages2.adobe.com/content/dam/Adobe/en/devnet/pdf/pdfs/pdf_reference_archives/pdf_17_errata.pdf
I was working with the 1.7 document :-(
Tilman
Am 10.02.2015 um 17:13 schrieb Andrea Vacondio:
Hmm... I haven't tested your code, but I wonder why root.getOpenCount()
always gets negative >numbers (= closed), and outline positive ones ( =
open)?
Outline has always positives because according to table 152 Count is "Total
number of visible outline items at all levels of the outline. The value
cannot be negative."
Root is the first outline item and is negative as long as it's closed (the
implementation makes newly created items closed by default). Table 153 says
"If the outline item is closed, Count is negative and its absolute value is
the number of descendants that would be visible if the outline item were
opened".
Does it make sense?
What you could also try is to attach this to a PDF, and then test that one
with preflight-app and >with
http://www.pdf-tools.com/pdf/validate-pdfa-online.aspx . Both do also check
the outlines, >even if it isn't a valid pdf/a.
Ok, I'll test the current implementation and my implementation and see the
result.
Thanks
Am 09.02.2015 um 18:52 schrieb Andrea Vacondio:
Hi,
I'm playing with the outline package and I' trying to figure out if my
understanding of the spec tables 152 and 153, Count key for the outline
dictionary and outline item dictionary is correct. Could someone confirm
that the following units should pass?
Thanks
@Test
public void outlinesCount()
{
PDDocumentOutline outline = new PDDocumentOutline();
PDOutlineItem root = new PDOutlineItem();
outline.appendChild(root);
assertEquals(1, outline.getOpenCount());
root.appendChild(new PDOutlineItem());
assertEquals(-1, root.getOpenCount());
assertEquals(1, outline.getOpenCount());
root.appendChild(new PDOutlineItem());
assertEquals(-2, root.getOpenCount());
assertEquals(1, outline.getOpenCount());
root.openNode();
assertEquals(2, root.getOpenCount());
assertEquals(3, outline.getOpenCount());
}
@Test
public void multipleLevelsCount()
{
PDOutlineItem root = new PDOutlineItem();
PDOutlineItem first = new PDOutlineItem();
root.appendChild(first);
assertEquals(-1, root.getOpenCount());
PDOutlineItem second = new PDOutlineItem();
root.appendChild(second);
assertEquals(-2, root.getOpenCount());
second.appendChild(new PDOutlineItem());
assertEquals(-1, second.getOpenCount());
assertEquals(-2, root.getOpenCount());
second.openNode();
assertEquals(1, second.getOpenCount());
assertEquals(-3, root.getOpenCount());
root.openNode();
assertEquals(3, root.getOpenCount());
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]