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

Reply via email to