svn commit: r1749165 - /pdfbox/trunk/parent/pom.xml
Author: lehmi Date: Sun Jun 19 13:17:24 2016 New Revision: 1749165 URL: http://svn.apache.org/viewvc?rev=1749165=rev Log: PDFBOX-3386: added a comment on using an outdated plugin version Modified: pdfbox/trunk/parent/pom.xml Modified: pdfbox/trunk/parent/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/trunk/parent/pom.xml?rev=1749165=1749164=1749165=diff == --- pdfbox/trunk/parent/pom.xml (original) +++ pdfbox/trunk/parent/pom.xml Sun Jun 19 13:17:24 2016 @@ -232,6 +232,7 @@ org.apache.felix maven-bundle-plugin + 2.5.4
svn commit: r1749164 - in /pdfbox/branches/2.0: ./ parent/pom.xml
Author: lehmi Date: Sun Jun 19 13:11:57 2016 New Revision: 1749164 URL: http://svn.apache.org/viewvc?rev=1749164=rev Log: PDFBOX-3386: downgrade maven-bundle-plugin due to jdk6 compatibility Modified: pdfbox/branches/2.0/ (props changed) pdfbox/branches/2.0/parent/pom.xml Propchange: pdfbox/branches/2.0/ -- --- svn:mergeinfo (original) +++ svn:mergeinfo Sun Jun 19 13:11:57 2016 @@ -1,3 +1,3 @@ /pdfbox/branches/no-awt:1618517-1621410 /pdfbox/no-awt:1618514-1618516 -/pdfbox/trunk:1736223,1736227,1736615,1737043,1737130,1737599-1737600,1738755,1740160,1742437,1742442,1745595,1745606,1745772,1745774,1745776,1745779,1746032,1746151 +/pdfbox/trunk:1736223,1736227,1736615,1737043,1737130,1737599-1737600,1738755,1740160,1742437,1742442,1745595,1745606,1745772,1745774,1745776,1745779,1746032,1746151,1749162 Modified: pdfbox/branches/2.0/parent/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/parent/pom.xml?rev=1749164=1749163=1749164=diff == --- pdfbox/branches/2.0/parent/pom.xml (original) +++ pdfbox/branches/2.0/parent/pom.xml Sun Jun 19 13:11:57 2016 @@ -240,7 +240,7 @@ org.apache.felix maven-bundle-plugin -3.0.1 +2.5.4
svn commit: r1749162 - /pdfbox/trunk/parent/pom.xml
Author: lehmi Date: Sun Jun 19 13:09:21 2016 New Revision: 1749162 URL: http://svn.apache.org/viewvc?rev=1749162=rev Log: PDFBOX-3386: downgrade maven-bundle-plugin due to jdk6 compatibility Modified: pdfbox/trunk/parent/pom.xml Modified: pdfbox/trunk/parent/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/trunk/parent/pom.xml?rev=1749162=1749161=1749162=diff == --- pdfbox/trunk/parent/pom.xml (original) +++ pdfbox/trunk/parent/pom.xml Sun Jun 19 13:09:21 2016 @@ -232,7 +232,7 @@ org.apache.felix maven-bundle-plugin -3.0.1 +2.5.4
svn propchange: r1749156 - svn:log
Author: tilman Revision: 1749156 Modified property: svn:log Modified: svn:log at Sun Jun 19 12:00:59 2016 -- --- svn:log (original) +++ svn:log Sun Jun 19 12:00:59 2016 @@ -1 +1 @@ -PDFBOX-3280: remove test due to revert in 1741295 +PDFBOX-3280: remove test due to revert of 1741295
svn commit: r1749158 - /pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDDocument.java
Author: tilman Date: Sun Jun 19 11:59:13 2016 New Revision: 1749158 URL: http://svn.apache.org/viewvc?rev=1749158=rev Log: PDFBOX-3280: remove test due to revert of 1741294 Modified: pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDDocument.java Modified: pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDDocument.java URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDDocument.java?rev=1749158=1749157=1749158=diff == --- pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDDocument.java (original) +++ pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDDocument.java Sun Jun 19 11:59:13 2016 @@ -16,10 +16,6 @@ */ package org.apache.pdfbox.pdmodel; -import java.awt.Color; -import java.awt.Font; -import java.awt.Graphics; -import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; @@ -37,11 +33,6 @@ import junit.framework.TestCase; import static junit.framework.TestCase.assertNull; import static junit.framework.TestCase.assertTrue; import static junit.framework.TestCase.fail; -import org.apache.pdfbox.pdmodel.font.PDType1Font; -import org.apache.pdfbox.pdmodel.graphics.image.LosslessFactory; -import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject; -import org.apache.pdfbox.rendering.PDFRenderer; -import org.junit.Assert; /** * Testcase introduced with PDFBOX-1581. @@ -259,49 +250,4 @@ public class TestPDDocument extends Test boolean deleted = f.delete(); assertTrue("delete good file failed after successful load() and close()", deleted); } - -/** - * Test whether importPage does a deep copy (if not, the save would fail, see PDFBOX-3328) - * - * @throws java.io.IOException - */ -public void testImportPage() throws IOException -{ -PDDocument doc1 = new PDDocument(); -PDPage page = new PDPage(); -PDPageContentStream pageContentStream = new PDPageContentStream(doc1, page); -BufferedImage bim = new BufferedImage(100, 50, BufferedImage.TYPE_INT_RGB); -Graphics g = bim.getGraphics(); -Font font = new Font("Dialog", Font.PLAIN, 20); -g.setFont(font); -g.drawString("PDFBox", 10, 30); -g.dispose(); -PDImageXObject img = LosslessFactory.createFromImage(doc1, bim); -pageContentStream.drawImage(img, 200, 500); -pageContentStream.setFont(PDType1Font.HELVETICA, 20); -pageContentStream.beginText(); -pageContentStream.setNonStrokingColor(Color.blue); -pageContentStream.newLineAtOffset(200, 600); -pageContentStream.showText("PDFBox"); -pageContentStream.endText(); -pageContentStream.close(); -doc1.addPage(page); -BufferedImage bim1 = new PDFRenderer(doc1).renderImage(0); - -PDDocument doc2 = new PDDocument(); -doc2.importPage(doc1.getPage(0)); -doc1.close(); -BufferedImage bim2 = new PDFRenderer(doc2).renderImage(0); -doc2.save(new ByteArrayOutputStream()); -doc2.close(); - -assertEquals(bim1.getWidth(), bim2.getWidth()); -assertEquals(bim1.getHeight(), bim2.getHeight()); -int w = bim1.getWidth(); -int h = bim1.getHeight(); -int[] pixels1 = bim1.getRaster().getPixels(0, 0, w, h, (int[]) null); -int[] pixels2 = bim2.getRaster().getPixels(0, 0, w, h, (int[]) null); -assertEquals(w * h * 3, pixels1.length); -Assert.assertArrayEquals(pixels1, pixels2); -} }
svn commit: r1749157 - /pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java
Author: tilman Date: Sun Jun 19 11:57:27 2016 New Revision: 1749157 URL: http://svn.apache.org/viewvc?rev=1749157=rev Log: PDFBOX-3280: revert 1741294 because it resulted in split creating huge files Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java?rev=1749157=1749156=1749157=diff == --- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java (original) +++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java Sun Jun 19 11:57:27 2016 @@ -42,7 +42,6 @@ import org.apache.pdfbox.io.RandomAccess import org.apache.pdfbox.io.RandomAccessBufferedFileInputStream; import org.apache.pdfbox.io.RandomAccessRead; import org.apache.pdfbox.io.ScratchFile; -import org.apache.pdfbox.multipdf.PDFCloneUtility; import org.apache.pdfbox.pdfparser.PDFParser; import org.apache.pdfbox.pdfwriter.COSWriter; import org.apache.pdfbox.pdmodel.common.COSArrayList; @@ -505,26 +504,34 @@ public class PDDocument implements Close * document and want to copy the contents to this document's scratch file then use this method otherwise just use * the {@link #addPage} method. * - * Unlike {@link #addPage}, this method does a deep clone. This will be slower and have a larger - * memory footprint. However the deep clone is important to avoid resources getting lost if the - * source document is closed when the destination document is saved. - * - * If your page has annotations, and if these link to pages not in the target document, then the - * target document might become huge. What you need to do is to delete page references of such - * annotations. See + * Unlike {@link #addPage}, this method does a deep copy. If your page has annotations, and if + * these link to pages not in the target document, then the target document might become huge. + * What you need to do is to delete page references of such annotations. See * http://stackoverflow.com/a/35477351/535646;>here for how to do this. * * @param page The page to import. * @return The page that was imported. - * + * * @throws IOException If there is an error copying the page. */ public PDPage importPage(PDPage page) throws IOException { -PDFCloneUtility cloner = new PDFCloneUtility(this); -COSBase pageBase = cloner.cloneForNewDocument(page.getCOSObject()); -PDPage importedPage = new PDPage((COSDictionary) pageBase, resourceCache); -addPage(importedPage); +PDPage importedPage = new PDPage(new COSDictionary(page.getCOSObject()), resourceCache); +InputStream in = null; +try +{ +in = page.getContents(); +if (in != null) +{ +PDStream dest = new PDStream(this, in, COSName.FLATE_DECODE); +importedPage.setContents(dest); +} +addPage(importedPage); +} +catch (IOException e) +{ +IOUtils.closeQuietly(in); +} return importedPage; }
svn commit: r1749156 - /pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDDocument.java
Author: tilman Date: Sun Jun 19 11:55:23 2016 New Revision: 1749156 URL: http://svn.apache.org/viewvc?rev=1749156=rev Log: PDFBOX-3280: remove test due to revert in 1741295 Modified: pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDDocument.java Modified: pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDDocument.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDDocument.java?rev=1749156=1749155=1749156=diff == --- pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDDocument.java (original) +++ pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDDocument.java Sun Jun 19 11:55:23 2016 @@ -16,10 +16,6 @@ */ package org.apache.pdfbox.pdmodel; -import java.awt.Color; -import java.awt.Font; -import java.awt.Graphics; -import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; @@ -37,11 +33,6 @@ import junit.framework.TestCase; import static junit.framework.TestCase.assertNull; import static junit.framework.TestCase.assertTrue; import static junit.framework.TestCase.fail; -import org.apache.pdfbox.pdmodel.font.PDType1Font; -import org.apache.pdfbox.pdmodel.graphics.image.LosslessFactory; -import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject; -import org.apache.pdfbox.rendering.PDFRenderer; -import org.junit.Assert; /** * Testcase introduced with PDFBOX-1581. @@ -259,49 +250,4 @@ public class TestPDDocument extends Test boolean deleted = f.delete(); assertTrue("delete good file failed after successful load() and close()", deleted); } - -/** - * Test whether importPage does a deep copy (if not, the save would fail, see PDFBOX-3328) - * - * @throws java.io.IOException - */ -public void testImportPage() throws IOException -{ -PDDocument doc1 = new PDDocument(); -PDPage page = new PDPage(); -PDPageContentStream pageContentStream = new PDPageContentStream(doc1, page); -BufferedImage bim = new BufferedImage(100, 50, BufferedImage.TYPE_INT_RGB); -Graphics g = bim.getGraphics(); -Font font = new Font("Dialog", Font.PLAIN, 20); -g.setFont(font); -g.drawString("PDFBox", 10, 30); -g.dispose(); -PDImageXObject img = LosslessFactory.createFromImage(doc1, bim); -pageContentStream.drawImage(img, 200, 500); -pageContentStream.setFont(PDType1Font.HELVETICA, 20); -pageContentStream.beginText(); -pageContentStream.setNonStrokingColor(Color.blue); -pageContentStream.newLineAtOffset(200, 600); -pageContentStream.showText("PDFBox"); -pageContentStream.endText(); -pageContentStream.close(); -doc1.addPage(page); -BufferedImage bim1 = new PDFRenderer(doc1).renderImage(0); - -PDDocument doc2 = new PDDocument(); -doc2.importPage(doc1.getPage(0)); -doc1.close(); -BufferedImage bim2 = new PDFRenderer(doc2).renderImage(0); -doc2.save(new ByteArrayOutputStream()); -doc2.close(); - -assertEquals(bim1.getWidth(), bim2.getWidth()); -assertEquals(bim1.getHeight(), bim2.getHeight()); -int w = bim1.getWidth(); -int h = bim1.getHeight(); -int[] pixels1 = bim1.getRaster().getPixels(0, 0, w, h, (int[]) null); -int[] pixels2 = bim2.getRaster().getPixels(0, 0, w, h, (int[]) null); -assertEquals(w * h * 3, pixels1.length); -Assert.assertArrayEquals(pixels1, pixels2); -} }
svn commit: r1749155 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java
Author: tilman Date: Sun Jun 19 11:53:46 2016 New Revision: 1749155 URL: http://svn.apache.org/viewvc?rev=1749155=rev Log: PDFBOX-3280: revert 1741295 because it resulted in split creating huge files Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java?rev=1749155=1749154=1749155=diff == --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java Sun Jun 19 11:53:46 2016 @@ -42,11 +42,11 @@ import org.apache.pdfbox.io.RandomAccess import org.apache.pdfbox.io.RandomAccessBufferedFileInputStream; import org.apache.pdfbox.io.RandomAccessRead; import org.apache.pdfbox.io.ScratchFile; -import org.apache.pdfbox.multipdf.PDFCloneUtility; import org.apache.pdfbox.pdfparser.PDFParser; import org.apache.pdfbox.pdfwriter.COSWriter; import org.apache.pdfbox.pdmodel.common.COSArrayList; import org.apache.pdfbox.pdmodel.common.PDRectangle; +import org.apache.pdfbox.pdmodel.common.PDStream; import org.apache.pdfbox.pdmodel.encryption.AccessPermission; import org.apache.pdfbox.pdmodel.encryption.PDEncryption; import org.apache.pdfbox.pdmodel.encryption.ProtectionPolicy; @@ -504,26 +504,34 @@ public class PDDocument implements Close * document and want to copy the contents to this document's scratch file then use this method otherwise just use * the {@link #addPage} method. * - * Unlike {@link #addPage}, this method does a deep clone. This will be slower and have a larger - * memory footprint. However the deep clone is important to avoid resources getting lost if the - * source document is closed when the destination document is saved. - * - * If your page has annotations, and if these link to pages not in the target document, then the - * target document might become huge. What you need to do is to delete page references of such - * annotations. See + * Unlike {@link #addPage}, this method does a deep copy. If your page has annotations, and if + * these link to pages not in the target document, then the target document might become huge. + * What you need to do is to delete page references of such annotations. See * http://stackoverflow.com/a/35477351/535646;>here for how to do this. * * @param page The page to import. * @return The page that was imported. - * + * * @throws IOException If there is an error copying the page. */ public PDPage importPage(PDPage page) throws IOException { -PDFCloneUtility cloner = new PDFCloneUtility(this); -COSBase pageBase = cloner.cloneForNewDocument(page.getCOSObject()); -PDPage importedPage = new PDPage((COSDictionary) pageBase, resourceCache); -addPage(importedPage); +PDPage importedPage = new PDPage(new COSDictionary(page.getCOSObject()), resourceCache); +InputStream in = null; +try +{ +in = page.getContents(); +if (in != null) +{ +PDStream dest = new PDStream(this, in, COSName.FLATE_DECODE); +importedPage.setContents(dest); +} +addPage(importedPage); +} +catch (IOException e) +{ +IOUtils.closeQuietly(in); +} return importedPage; }
svn commit: r1749152 - /pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/PDFontTest.java
Author: tilman Date: Sun Jun 19 11:27:38 2016 New Revision: 1749152 URL: http://svn.apache.org/viewvc?rev=1749152=rev Log: PDFBOX-3337: added test code from Philip Helger Modified: pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/PDFontTest.java Modified: pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/PDFontTest.java URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/PDFontTest.java?rev=1749152=1749151=1749152=diff == --- pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/PDFontTest.java (original) +++ pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/PDFontTest.java Sun Jun 19 11:27:38 2016 @@ -23,6 +23,8 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import junit.framework.TestCase; +import org.apache.fontbox.ttf.TTFParser; +import org.apache.fontbox.ttf.TrueTypeFont; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.PDPageContentStream; @@ -68,6 +70,7 @@ public class PDFontTest extends TestCase { InputStream ttfStream = PDFontTest.class.getClassLoader().getResourceAsStream( "org/apache/pdfbox/ttf/LiberationSans-Regular.ttf"); +final TrueTypeFont ttf = new TTFParser ().parse (ttfStream); for (int i = 0; i < 2; ++i) { @@ -77,7 +80,7 @@ public class PDFontTest extends TestCase doc.addPage(page); PDPageContentStream cs = new PDPageContentStream(doc, page); -PDFont font = PDType0Font.load(doc, ttfStream); +PDFont font = PDType0Font.load(doc, ttf, true); cs.setFont(font, 10); cs.beginText(); cs.showText("PDFBOX");
svn commit: r1749146 - /pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/PDFontTest.java
Author: tilman Date: Sun Jun 19 10:21:07 2016 New Revision: 1749146 URL: http://svn.apache.org/viewvc?rev=1749146=rev Log: PDFBOX-3337: added test code from Philip Helger Modified: pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/PDFontTest.java Modified: pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/PDFontTest.java URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/PDFontTest.java?rev=1749146=1749145=1749146=diff == --- pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/PDFontTest.java (original) +++ pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/PDFontTest.java Sun Jun 19 10:21:07 2016 @@ -19,8 +19,14 @@ package org.apache.pdfbox.pdmodel.font; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; import junit.framework.TestCase; import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.pdmodel.PDPage; +import org.apache.pdfbox.pdmodel.PDPageContentStream; +import org.apache.pdfbox.pdmodel.common.PDRectangle; import org.apache.pdfbox.rendering.PDFRenderer; /** @@ -51,4 +57,34 @@ public class PDFontTest extends TestCase } } } + +/** + * PDFBOX-3337: Test ability to reuse a TrueTypeFont for several PDFs to avoid parsing it over + * and over again. + * + * @throws java.io.IOException + */ +public void testPDFBox3337() throws IOException +{ +InputStream ttfStream = PDFontTest.class.getClassLoader().getResourceAsStream( +"org/apache/pdfbox/ttf/LiberationSans-Regular.ttf"); + +for (int i = 0; i < 2; ++i) +{ +PDDocument doc = new PDDocument(); + +final PDPage page = new PDPage(PDRectangle.A4); +doc.addPage(page); + +PDPageContentStream cs = new PDPageContentStream(doc, page); +PDFont font = PDType0Font.load(doc, ttfStream); +cs.setFont(font, 10); +cs.beginText(); +cs.showText("PDFBOX"); +cs.endText(); +cs.close(); +doc.save(new ByteArrayOutputStream()); +doc.close(); +} +} }
svn commit: r1749145 - /pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/PDFontTest.java
Author: tilman Date: Sun Jun 19 10:20:42 2016 New Revision: 1749145 URL: http://svn.apache.org/viewvc?rev=1749145=rev Log: PDFBOX-3337: added test code from Philip Helger Modified: pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/PDFontTest.java Modified: pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/PDFontTest.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/PDFontTest.java?rev=1749145=1749144=1749145=diff == --- pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/PDFontTest.java (original) +++ pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/PDFontTest.java Sun Jun 19 10:20:42 2016 @@ -19,8 +19,16 @@ package org.apache.pdfbox.pdmodel.font; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; import junit.framework.TestCase; +import org.apache.fontbox.ttf.TTFParser; +import org.apache.fontbox.ttf.TrueTypeFont; import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.pdmodel.PDPage; +import org.apache.pdfbox.pdmodel.PDPageContentStream; +import org.apache.pdfbox.pdmodel.common.PDRectangle; import org.apache.pdfbox.rendering.PDFRenderer; /** @@ -51,4 +59,35 @@ public class PDFontTest extends TestCase } } } + +/** + * PDFBOX-3337: Test ability to reuse a TrueTypeFont for several PDFs to avoid parsing it over + * and over again. + * + * @throws java.io.IOException + */ +public void testPDFBox3337() throws IOException +{ +InputStream ttfStream = PDFontTest.class.getClassLoader().getResourceAsStream( +"org/apache/pdfbox/ttf/LiberationSans-Regular.ttf"); +final TrueTypeFont ttf = new TTFParser ().parse (ttfStream); + +for (int i = 0; i < 2; ++i) +{ +PDDocument doc = new PDDocument(); + +final PDPage page = new PDPage(PDRectangle.A4); +doc.addPage(page); + +PDPageContentStream cs = new PDPageContentStream(doc, page); +PDFont font = PDType0Font.load(doc, ttf, true); +cs.setFont(font, 10); +cs.beginText(); +cs.showText("PDFBOX"); +cs.endText(); +cs.close(); +doc.save(new ByteArrayOutputStream()); +doc.close(); +} +} }
svn commit: r1749143 - /pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java
Author: tilman Date: Sun Jun 19 10:04:57 2016 New Revision: 1749143 URL: http://svn.apache.org/viewvc?rev=1749143=rev Log: PDFBOX-3382: reorder modifier according to JLS suggestions Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java?rev=1749143=1749142=1749143=diff == --- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java (original) +++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java Sun Jun 19 10:04:57 2016 @@ -107,7 +107,7 @@ public class PDType1Font extends PDSimpl /** * to improve encoding speed. */ -final private MapcodeToBytesMap = new HashMap (); +private final Map codeToBytesMap = new HashMap (); /** * Creates a Type 1 standard 14 font for embedding.
svn commit: r1749142 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java
Author: tilman Date: Sun Jun 19 10:04:45 2016 New Revision: 1749142 URL: http://svn.apache.org/viewvc?rev=1749142=rev Log: PDFBOX-3382: reorder modifier according to JLS suggestions Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java?rev=1749142=1749141=1749142=diff == --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java Sun Jun 19 10:04:45 2016 @@ -107,7 +107,7 @@ public class PDType1Font extends PDSimpl /** * to improve encoding speed. */ -final private MapcodeToBytesMap = new HashMap (); +private final Map codeToBytesMap = new HashMap (); /** * Creates a Type 1 standard 14 font for embedding.
svn propchange: r1747966 - svn:log
Author: tilman Revision: 1747966 Modified property: svn:log Modified: svn:log at Sun Jun 19 09:40:20 2016 -- --- svn:log (original) +++ svn:log Sun Jun 19 09:40:20 2016 @@ -1 +1 @@ -PDFBOX-3381, PDFBOX-3359: copy from trunk +PDFBOX-3359: defactor and refactor code to separate clearing for both cases, i.e. render to graphics and render to image
svn commit: r1749136 - /pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/ttf/MemoryTTFDataStream.java
Author: jahewson Date: Sun Jun 19 07:31:56 2016 New Revision: 1749136 URL: http://svn.apache.org/viewvc?rev=1749136=rev Log: PDFBOX-3337: Don't clear data when closing an in-memory TTF stream Modified: pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/ttf/MemoryTTFDataStream.java Modified: pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/ttf/MemoryTTFDataStream.java URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/ttf/MemoryTTFDataStream.java?rev=1749136=1749135=1749136=diff == --- pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/ttf/MemoryTTFDataStream.java (original) +++ pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/ttf/MemoryTTFDataStream.java Sun Jun 19 07:31:56 2016 @@ -146,7 +146,6 @@ class MemoryTTFDataStream extends TTFDat */ public void close() throws IOException { -data = null; } /**
svn commit: r1749135 - /pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/MemoryTTFDataStream.java
Author: jahewson Date: Sun Jun 19 07:27:11 2016 New Revision: 1749135 URL: http://svn.apache.org/viewvc?rev=1749135=rev Log: PDFBOX-3337: Don't clear data when closing an in-memory TTF stream Modified: pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/MemoryTTFDataStream.java Modified: pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/MemoryTTFDataStream.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/MemoryTTFDataStream.java?rev=1749135=1749134=1749135=diff == --- pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/MemoryTTFDataStream.java (original) +++ pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/MemoryTTFDataStream.java Sun Jun 19 07:27:11 2016 @@ -146,7 +146,6 @@ class MemoryTTFDataStream extends TTFDat */ public void close() throws IOException { -data = null; } /**