[ 
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)

Reply via email to