[ https://issues.apache.org/jira/browse/FOP-2273?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13707010#comment-13707010 ]
Max Gilead commented on FOP-2273: --------------------------------- There should be two lines but Acrobat Reader shows only one. There is no error described above as I couldn't get it to display one with this simple example (the original PDF was generated using a 3rd party library). import org.apache.fop.svg.PDFDocumentGraphics2D; import org.apache.pdfbox.pdfwriter.COSWriter; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.common.PDRectangle; import org.apache.pdfbox.pdmodel.edit.PDPageContentStream; import org.apache.xmlgraphics.java2d.GraphicContext; import java.awt.BasicStroke; import java.io.BufferedOutputStream; import java.io.ByteArrayOutputStream; import java.io.FileOutputStream; import java.io.OutputStream; public class FopTest { public static void main(String[] args) throws Exception { final String[] content = new String[1]; PDFDocumentGraphics2D g = new PDFDocumentGraphics2D(false, new ByteArrayOutputStream(), 100, 100) { @Override protected void closePage() { content[0] = super.getString() + "Q\n"; super.closePage(); } }; g.setGraphicContext(new GraphicContext()); g.setStroke(new BasicStroke(1.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND, 1.0f)); g.drawLine(0, 100, 100, 0); g.setStroke(new BasicStroke(1.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND, 0.1f)); g.drawLine(0, 0, 100, 100); g.finish(); g.dispose(); final PDDocument document = new PDDocument(); PDPage page = new PDPage(new PDRectangle(100, 100)); document.addPage(page); PDPageContentStream writer = new PDPageContentStream(document, page); writer.appendRawCommands(content[0].getBytes()); writer.close(); OutputStream out = new BufferedOutputStream(new FileOutputStream("FOP_Test.pdf")); COSWriter coswriter = null; coswriter = new COSWriter(out); coswriter.write(document); coswriter.close(); document.close(); out.close(); } } > Stroke miter limit is not clamped when writing PDFs > --------------------------------------------------- > > Key: FOP-2273 > URL: https://issues.apache.org/jira/browse/FOP-2273 > Project: Fop > Issue Type: Bug > Components: pdf > Affects Versions: trunk > Reporter: Max Gilead > Labels: easyfix > > org.apache.fop.svg.PDFGraphics2D line 1240 (as of SVN revision 148001 [1]) is: > float ml = bs.getMiterLimit(); > but should be (or equivalent): > float ml = Math.max(1.0f, bs.getMiterLimit()); > Acrobat Reader (on all platforms) refuses to load graphics data after > encountering miter limit < 1.0 and reports an error. > I can't find a reference to the valid range in the PDF spec but Inkscape also > had a problem with values less than 1.0 [2] and SVG spec mandates values >= > 1.0 as well [3] so clamping the value to 1.0 or more seems like the right > thing to do. > [1] > http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/svg/PDFGraphics2D.java?revision=1480018&view=markup > [2] > http://webcache.googleusercontent.com/search?q=cache:RHSt5Wk7-uQJ:inkscape-forum.andreas-s.net/topic/71990+&cd=7&hl=en&ct=clnk&gl=uk&client=firefox-beta > [3] http://www.w3.org/TR/SVG11/painting.html#StrokeMiterlimitProperty -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira