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