Hi,
This is in TilingPaint.java and PageDrawer.java . It's one of the
tricky parts in the code. No we can't draw them as vectors.
Tilman
On 06.01.2023 17:57, Rich Stafford wrote:
Which PDFBox module handles the patterns? Is there anyway to have PDFBox draw
the patterns as vectors?
Rich
At 11:40 AM 1/6/2023, Tilman Hausherr wrote:
Hi,
I can confirm the effect with my own conversion code (which may or may not be
the same). I looked at the SVG and there's one thing missing: PDFBox converts
patterns to bitmaps and then uses TexturePaint. So there should be some binary
content in the SVG but there isn't. Could it be that there is some option that
should be set?
Btw the PDF has some errors, like 0 255 0 sc (or rg), this should be 0 1 0 sc
(or rg). But this isn't the cause.
Tilman
On 06.01.2023 14:51, Rich Stafford wrote:
Tilman:
Thanks for your quick response. I've upgraded to PDFBox 2.0.27, with the same
results.
The PDF file can be downloaded here:
https://s3.amazonaws.com/webdl.equorum.com/misc/size2013.pdf
<https://s3.amazonaws.com/webdl.equorum.com/misc/size2013.pdf>Thanks for any
assistance. I'm going to start tracing thru Batik source code for the SVG error.
Rich Stafford
Chief Scientist
eQuorum Corporation
***
At 01:28 PM 1/5/2023, Tilman Hausherr wrote:
Hi,
Please try with 2.0.27 and upload the PDF somewhere, it didn't get through.
Tilman
On 05.01.2023 16:28, Rich Stafford wrote:
I am having an issue using PDFBox (pdfbox-app-2.0.21.jar) and SVGGraphics2d
(batik-1ll-1.16.jar) to generate SVG output from a small PDF file.
This file has about 9 vector lines, and a rectangle filled with horizontal
lines. Using the PDFBox PDFRenderer to JPG, I get the appropriate fill for
the rectangle:
screen capture:
Emacs!
However, using the PDFBox PDFRenderer with SVGGraphics2d, I get a black filled
rectangle.
screen capture:
Emacs!
The generator code fragment is as follows:
// setup instance of org.w3c.dom.Document
DOMImplementation oDom= GenericDOMImplementation./getDOMImplementation/();
String sSvgOrg= " http://www.w3.org/2000/svg";
Document oSvgDoc= oDom.createDocument(sSvgOrg, "svg", *null*);
SVGGeneratorContext oCtx= SVGGeneratorContext./createDefault/(oSvgDoc);
oCtx.setEmbeddedFontsOn(*true* );
// setup renderer object
PDFRenderer oRender= *new* PDFRenderer( oDoc);
// loop for all pages in the PDF
*for* ( *int* nPageNdx= 0; nPageNdx< oDoc.getNumberOfPages(); nPageNdx++ )
{
// setup output file
*if* ( sOutputMode.equalsIgnoreCase("svg") )
{// svg
String sSvgPageSpec= GenericUtil./PathMake/(sDestPath, "page-"+
nPageNdx+".svg");
( *new* File( sSvgPageSpec)).createNewFile();
// setup instance of SVG Generator
SVGGraphics2D oSvgGen= *new* SVGGraphics2D( oCtx, *false*);
// render the page to SVG
oRender .renderPageToGraphics( nPageNdx, oSvgGen);
// write to file
OutputStream oOutStream= *new* FileOutputStream( *new* File(sSvgPageSpec) );
Writer oOutWriter= *new* OutputStreamWriter( oOutStream, "UTF-8");
oSvgGen .stream( oOutWriter, *true*);
*continue* ;
}
*if* ( sOutputMode.equalsIgnoreCase("jpg") )
{// jpg output
String sJpgPageSpec= GenericUtil./PathMake/(sDestPath, "page-"+
nPageNdx+".jpg");
File oFileJpg= *new* File(sJpgPageSpec);
BufferedImage image= oRender.renderImageWithDPI(nPageNdx,
GenericUtil./parseInt/(sDpi, 300));
    ImageIO./write/(image, "JPEG", oFileJpg);
continue;
}
}
I've attached the input PDF file as well.
Thoughts?
Rich Stafford
Chief Scientist
eQuorum Corporation
---------------------------------------------------------------------
To unsubscribe, e-mail:
users-unsubscr...@pdfbox.apache.org
For additional commands, e-mail:
users-h...@pdfbox.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@pdfbox.apache.org
For additional commands, e-mail: users-h...@pdfbox.apache.org