[
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