It was failing in our unit tests, where someone had wrapped our derived class 
instance in a Mockito spy().  With the spy, it breaks.  Without the spy, it 
works fine.  Not going to pretend I understand why, but I'll take that as a win 
and change our tests.

Totally unexpected, but sorry for the noise anyway.

Mark
-----Original Message-----
From: Mark Gibson <[email protected]> 
Sent: 27 November 2025 20:47
To: [email protected]
Cc: [email protected]
Subject: Re: Extending PDFTextStripper - Worked in v2, NullRefException in v3 

I’ll see if I can test later tonight.  Thanks for the quick response Tilman.

> On 27 Nov 2025, at 20:41, Tilman Hausherr <[email protected]> wrote:
> 
> [EXTERNAL]
> 
> In 3.0 the context is set in the constructor. But your problem is a 
> different one, that "resources" is null.
> It would be interesting to find out whether this happens in ordinary 
> text extraction. If not, please share minimal code that reproduces 
> this, and the PDF where it happens (or does it happen with any PDF?) 
> Tilman
> 
>> Am 27.11.2025 um 21:28 schrieb Mark Gibson:
>> Hi
>> 
>> We have some old code that extended PDFTextStripper using PDFBox v2.  
>> Recently tried to upgrade to PDFBox v3 (tried 3.03 and 3.06).  We get a Null 
>> exception thrown from SetFontAndSize operator.  It looks like "resources" is 
>> null.
>> 
>> PDFont font = context.getResources().getFont(fontName);
>> 
>> 
>> Tracing through the code in V2, I see that PDFStreamEngine.processOperator() 
>> used to call processor.setContext(this).  That sets the context.resources to 
>> a non null value.
>> 
>> In V3, there is no call to processor.SetContext(this).
>> 
>> Can anyone the context of why this was removed, and the expectations for 
>> user code to resolve the null reference?
>> 
>> Many thanks
>> 
>> Mark
>> 

Reply via email to