Yes, this was just mentioned in PDFBOX-1936, it is indeed 
processPattern(PDPattern)
which is in fact needed.

-- John

On 19 Mar 2014, at 10:39, Maruan Sahyoun <sahy...@fileaffairs.de> wrote:

> as an added note - initially you suggested
> 
> public void processTilingPattern(PDTilingPattern pattern) 
> 
> but as Patterns in general have their own matrix I think it applies to all 
> patterns, that’s why I wrote „… Form, Text, Image and Pattern maintain …“
> 
> BR
> Maruan
> 
> Am 19.03.2014 um 18:31 schrieb Maruan Sahyoun <sahy...@fileaffairs.de>:
> 
>> John,
>> 
>> Am 19.03.2014 um 18:15 schrieb John Hewson <j...@jahewson.com>:
>> 
>>> Maruan
>>> 
>>>> From how I understand the rendering in PDF Form, Text, Image and Pattern 
>>>> maintain their own matrix to map to user space which is then transformed 
>>>> by the CTM to device space so handling them specifically is fine and 
>>>> inline with the spec.
>>> 
>>> No, that’s not right, what I said was:
>>> 
>>>>> My problem is that tiling patterns are defined in their parent stream’s 
>>>>> initial coordinate space, rather than the
>>>>> coordinate space defined by the CTM.
>>> 
>>> So patterns should *not* be using the CTM, which is what I’m trying to 
>>> achieve.
>>> 
>> 
>> I think you misunderstood what I wrote - patterns have their own matrix - so 
>> I think we are on the same page here. IMHO according to the spec CTM 
>> transforms from user space to device space. So it’s pattern space -> user 
>> space -> device space.
>> 
>> 
>>>> I’d suggest that we make sure that the different ‚spaces‘ are defined 
>>>> properly within the code and refer to the PDF spec so that the code is 
>>>> easier to read if this is not already the case. With so many changes it’s 
>>>> a good opportunity to enhance the documentation within the source code. 
>>>> Some of the old code enjoys very little documentation.
>>> 
>>> 
>>> I disagree, in general I don’t think that references to the PDF spec are a 
>>> good form of documentation (there are some exceptions). References to the 
>>> spec are meaningless to the reader unless they take the time to look them 
>>> up in a 700 page PDF document. I would argue that by just linking back to 
>>> the spec, we have *failed* to document PDFBox, not succeeded.
>>> 
>>> References to the PDF spec have another major flaw: they go out-of-date. 
>>> For example a Pattern Colour Space will always be called “Pattern Colour 
>>> Space” in future versions of the PDF spec but it may not be described in 
>>> paragraph 8.6.6.2 or on page 156. The existing code contains many 
>>> references to the PDF 1.6 and 1.7 specs as well as the ISO PDF32000 spec, 
>>> which means that I need three 700 page PDF files open at all times in order 
>>> to look up PDFBox references. With the new version of the PDF spec due this 
>>> year, this situation is going to get worse.
>>> 
>> 
>> Didn’t mean to only reference to the spec but to use the same terms as 
>> described by the spec. Adding references to the spec is an add-on not a 
>> replacement.
>> 
>>> I agree that some of the existing code needs more documentation, and I 
>>> often add documentation to old files which I’m working on. However, my 
>>> approach is to just paste in a sentence or two from the PDF spec (fair 
>>> use). That way the reader does not ever need to look at the PDF spec. 
>>> Because we use the same terminology in PDFBox as in the spec, if someone 
>>> really wants to look something up, it’s as simple as Ctrl+F, no reference 
>>> needed, and it’s guaranteed not to go out-of-date.
>>> 
>>>> I wouldn’t remove processStream and processSubStream but deprecate them 
>>>> and remove them in the next major release though as to keep the changes to 
>>>> a minimum.
>>> 
>>> This isn’t possible, as I said it "will necessarily be a breaking change”. 
>>> This is because in 2.0 PDFStreamEngine needs to know the parent of each 
>>> stream, but processStream and processSubStream do not provide this 
>>> information. That’s why I’m discussing this on the mailing list.
>> 
>> I don’t understand why this is shouldn’t be possible. It’s more effort, 
>> agreed, but beneficial.
>> 
>>> 
>>>> For the rendering what might have been missed is taking the UserUnit entry 
>>>> in the page dictionary into account which might change the default user 
>>>> space. This was introduced in PDF 1.6. A good opportunity to read that 
>>>> entry and make sure that we handle it appropriately.
>>> 
>>> Yes, I have this as a “todo” in my working copy, however, if we put the 
>>> UserUnit in the matrix then we should also put the page Rotation into the 
>>> matrix, but that’a a significant change.
>>> 
>>> -- John
>> 
> 

Reply via email to