Tilman, Others,

To avoid reflections about the original intentions, let's go for the interface approach. (Or can /John/ be consulted?)  I already typed the code so that does not feel as a waste for me.

That resolves some of the issues in my original mail. Lets recuperate:

 * Do you think introducing an interface is overkill? Simply making
   PDAbstractContentStream public would achieve the same thing for me.
   :: We go for the interface approach
 * I chose the name PDContentStream for the interface. Later on, I
   discovered it is an unfortunate name. :: I browsed ISO 32000-2:2020.
   In 7.8.2 (/Content streams/) It defines a content stream as a
   sequence of instructions. Would PDInstuctionStream be a good name
   for the interface?
 * I moved the JavaDoc comments from the abstract class to the
   interface. You agree? Or shall I also leave them in place? :: Agreed
   to move?
 * On which branch must I base my PR? (I see that the trunk already has
   a 4.0 version number) :: I am jumping to get this now! What can I do
   to get this in the next 3.something release? (As far as I can
   judge.. This widens the API interface and does not change anything
   functionally)

Greetings.. Mark. (Sorry for being pushy)

--
Mark de Does, Magdalenastraat 6, 3512 NH Utrecht, the Netherlands,
http://maps.google.nl/?q=52.08692,5.1271,
e:m...@mdedoes.xs4all.nl t: 030 2314150

On 28-02-2025 14:40, Tilman Hausherr wrote:
Making PDAbstractContentStream public seems to be the easier solution, but: It was created package-private. I don't know if (1) John had a specific reason for it or (2) this was just "best practice" to make stuff restricted until somebody requests it to be accessible. However he wrote "unless we want users to subclass PDAbstractContentStream" so he wanted to prevent that, so it would be (1). That makes me undecided.

See here: https://issues.apache.org/jira/browse/PDFBOX-4068

Amusingly not only this is still open but it was me who created it 🤦‍♂️

Tilman

On 28.02.2025 14:22, Mark de Does wrote:
In one of my projects, I convert (a subset of) SVG to PDF, using PdfBox.

In SVG, the contents of the main <svg> element, the <marker>, <symbol> and <pattern> definitions have the same syntax and structure. With PdfBox 2, I use a PDPageContentStream to record the content of all three. With PdfBox 3, that no longer works because I must use a PDPatternContentStream to record a pattern. Because the different kinds of content stream do not share a visible (public) ancestor, I cannot use the same code to record SVG content to a content stream.

This morning, I captured the public methods of PDAbstractContentStream in an interface and declared PDAbstractContentStream to implement that interface. I adapted my code to use the interface and everything works fine. (As expected).

Before I make a PR, I need some guidance.

 * Do you think introducing an interface is overkill? Simply making
   PDAbstractContentStream public would achieve the same thing for me.
   (The class, not the constructor)
 * I chose the name PDContentStream for the interface. Later on, I
   discovered that is an infortunate name: A different interface with
   that name already exists. What would be a better name?
 * I moved the JavaDoc comments from the abstract class to the
   interface. You agree? Or shall I also leave them in place?
 * On which branch must I base my PR? (I see that the trunk already has
   a 4.0 version number)

Thanks and Greetings.. Mark



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@pdfbox.apache.org
For additional commands, e-mail: users-h...@pdfbox.apache.org

Reply via email to