pdf-association / pdf-issues

Industry-based resolutions for issues and errata reported against any PDF-related specification
https://pdf-issues.pdfa.org/
66 stars 2 forks source link

Unclear what Table 402 "Entries in a DestOutputProfileRef dictionary" URLs array entries can be #482

Closed petervwyatt closed 2 weeks ago

petervwyatt commented 1 month ago

In Table 402 "Entries in a DestOutputProfileRef dictionary", the URLs entry is described as:

(Optional, PDF 2.0) An array, containing at least one element, where each element shall be an embedded file specification (7.11.4, "Embedded file streams") or a URL file specification (7.11.5, "URL specifications").

There is no such thing as an "embedded file specification" and the reference to 7.11.4 is to an embedded file stream object - so is it a dictionary or directly to the stream?

Also 7.11.5, "URL specifications" only describes itself as a PDFDocEncoded string in the context of the FS entry in a file specification dictionary has the value URL, so is the intention for URLs array elements to be just the string, or a complete but simple file specification dictionary as shown by the example in 7.11.5?

So the question is what are the valid elements for this array (one or more of the following)?:

The word "or" in the current description implies that there are 2 different kinds of array element objects...

The answer is likely heavily influenced by existing PDF/X files which may have interpreted things differently.

petervwyatt commented 1 month ago

@DietrichSeggern? @bdoubrov? @lrosenthol?

DietrichSeggern commented 3 weeks ago

Summary of this comment: This ‘an embedded file specification (7.11.4, “Embedded file streams”) or’ should be removed from the definition in Table 402 “Entries in a DestOutputProfileRef dictionary” on URLs.

The DestOutputProfileRef was first used in PDF/X-4p where the URLs entry was mandatory. All values in the URLs array have to be file specifications (without an EF (embedded file) entry). Since embedded file streams are one option for URL file specifications it is misleading to list them as alternatives.

PDF/X-5n and PDF/X-6n which are using embedded files for referenced ICC profiles are using the EF entry with an URL file specification, so embedded file streams should be supported, but not as an alternative to URL specifications as currently stated, it rather is an option.

In addition I think the headline hierarchy in PDF 2.0 section 7.11. is wrong: what currently is 7.11.4, 7.11.5 and 7,11,6 should be 7.11.2.1 7.11.2.2 and 7.11.2.3. I believe this wrong hierarchy is the root cause of the misconception behind this issue.l

lrosenthol commented 3 weeks ago

+1 to @DietrichSeggern and his comments above.

petervwyatt commented 3 weeks ago

Proposed solution along the lines of:

... the URLs entry shall be an array of file specification dictionaries (see Table 43) where each entry shall have an FS entry with the value URL and the F entry shall be a PDFDocEncoded text string limited to RFC 3986 (see 7.11.5.)

petervwyatt commented 3 weeks ago

Regarding restructure of 7.11 subclauses: I think this further implies that an embedded file stream object can never exist unless it is a "child" of a file specification dictionary...

e.g. possibly SlideShow Resources name-tree (Table 308) which maps a string to ???

DietrichSeggern commented 3 weeks ago

True, but since it is in the File specifications chapter anyway that is already implied. But I do not insist that we change that in an amendment.

petervwyatt commented 3 weeks ago

I have no problem agreeing on such "surgical" changes, but it is difficult to do with the methods we currently use to publish errata (XFDF, annotated PDF, HTML markup, etc). It also makes it a bit confusing for any new errata references. My current method with other similar proposals is to "park" the resolved issue and do it whenever a full edit of the PDF spec is next undertaken.

petervwyatt commented 3 weeks ago

See also Errata #481 for another change in 7.11 subclauses.

petervwyatt commented 3 weeks ago

PDF TWG agree: