You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-commits@xmlgraphics.apache.org by ss...@apache.org on 2017/06/20 08:06:24 UTC
svn commit: r1799314 - in /xmlgraphics/fop-pdf-images/trunk:
src/java/org/apache/fop/render/pdf/pdfbox/PDFWriter.java
test/java/org/apache/fop/render/pdf/PDFWriterTestCase.java
Author: ssteiner
Date: Tue Jun 20 08:06:24 2017
New Revision: 1799314
URL: http://svn.apache.org/viewvc?rev=1799314&view=rev
Log:
FOP-2715: Optimise PDFWriter writing out floats
Modified:
xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PDFWriter.java
xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFWriterTestCase.java
Modified: xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PDFWriter.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PDFWriter.java?rev=1799314&r1=1799313&r2=1799314&view=diff
==============================================================================
--- xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PDFWriter.java (original)
+++ xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PDFWriter.java Tue Jun 20 08:06:24 2017
@@ -21,6 +21,7 @@ import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
@@ -39,6 +40,8 @@ import org.apache.pdfbox.pdmodel.common.
public class PDFWriter {
+ private DecimalFormat df = new DecimalFormat("#.####", new DecimalFormatSymbols(Locale.US));
+ private Map<Float, String> floatCache = new HashMap<Float, String>();
protected StringBuilder s = new StringBuilder();
protected UniqueName key;
private int currentMCID;
@@ -88,8 +91,14 @@ public class PDFWriter {
s.append(" ");
} else if (c instanceof COSFloat) {
float f = ((COSFloat) c).floatValue();
- s.append(new DecimalFormat("#.####", new DecimalFormatSymbols(Locale.US)).format(f));
+ if (!floatCache.containsKey(f)) {
+ addCache(f);
+ }
+ s.append(floatCache.get(f));
s.append(" ");
+ if (floatCache.size() > 1024) {
+ floatCache.clear();
+ }
} else if (c instanceof COSName) {
COSName cn = (COSName)c;
s.append("/" + key.getName(cn));
@@ -127,6 +136,11 @@ public class PDFWriter {
}
}
+ protected void addCache(float f) {
+ String formatted = df.format(f);
+ floatCache.put(f, formatted);
+ }
+
private void updateMCID(Map.Entry<COSName, COSBase> cn, Collection<COSBase> dictArgs) {
COSBase cosMCID = cn.getValue();
assert cosMCID instanceof COSInteger;
Modified: xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFWriterTestCase.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFWriterTestCase.java?rev=1799314&r1=1799313&r2=1799314&view=diff
==============================================================================
--- xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFWriterTestCase.java (original)
+++ xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFWriterTestCase.java Tue Jun 20 08:06:24 2017
@@ -39,4 +39,26 @@ public class PDFWriterTestCase {
Assert.assertEquals(pdfWriter.writeText(pdStream), text + "\n");
Locale.setDefault(l);
}
+
+ @Test
+ public void testFloatCache() throws IOException {
+ String text = "[1.1 1.1] a";
+ PDStream pdStream = new PDStream(new PDDocument(), new ByteArrayInputStream(text.getBytes("UTF-8")));
+ MyPDFWriter pdfWriter = new MyPDFWriter();
+ pdfWriter.writeText(pdStream);
+ Assert.assertEquals(pdfWriter.i, 1);
+ }
+
+ private static class MyPDFWriter extends PDFWriter {
+ int i;
+
+ public MyPDFWriter() {
+ super(null, 0);
+ }
+
+ protected void addCache(float f) {
+ super.addCache(f);
+ i++;
+ }
+ };
}
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-commits-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-commits-help@xmlgraphics.apache.org