[
https://issues.apache.org/jira/browse/PDFBOX-2099?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14009965#comment-14009965
]
John Hewson commented on PDFBOX-2099:
-------------------------------------
PDF 1.4 introduced the *Version* key in the document catalog dictionary (i.e.
the *Root* dictionary), which if greater than the version in the header,
overrides it.
> Improve handling and writing of header and trailer versions
> -----------------------------------------------------------
>
> Key: PDFBOX-2099
> URL: https://issues.apache.org/jira/browse/PDFBOX-2099
> Project: PDFBox
> Issue Type: Improvement
> Affects Versions: 1.8.5, 1.8.6, 2.0.0
> Reporter: Tilman Hausherr
> Priority: Minor
>
> From [~msahyoun] in PDFBOX-1922:
> I'd think that instead of setting the version the current way (which is
> replacing the version information in the header) during the parsing the
> parsing should keep both version informations and getVersion within
> COSDocument is amended to return the correct information. What I'm suggesting
> is keeping both versions as this is inline with the spec and ensures that we
> do not override the current settings in a pdf when opening and saving out.
> From me:
> COSDocument.java has this:
> {code}
> public void setVersion( float versionValue )
> {
> // update header string
> if (versionValue != version)
> {
> headerString = headerString.replaceFirst(String.valueOf(version),
> String.valueOf(versionValue));
> }
> version = versionValue;
> }
> {code}
> So it does two things, set the version and set the headerString. My first
> Idea would be to remove the setting of the headerString, because this is 1. a
> side effect and 2. already done elsewhere. But this was inserted in 2011 by
> [~lehmi] as part of PDFBOX-879 so I wonder if I will break something by
> removing this.
> from [~lehmi]:
> As far as I can remember it, I wasn't aware of the fact that a pdf may have
> to versions (header + trailer). In the hindsight the change wasn't that good.
> I agree with Maruan Sahyoun, we have to overhaul the get/setVersion methods.
> Both must take both possible values into account following the pdf spec.
> My current thought:
> We may need two setters. One for "inside jobs" (i.e. parsing), that sets each
> version separately. One for "higher" applications (e.g. merging), that sets
> the version in the header and in the trailer at the same time.
> Whatever change will be done, it should not produce a regression in
> PDFBOX-879.
--
This message was sent by Atlassian JIRA
(v6.2#6252)