anybody know why this happens? Seems "wrong" to see the same font embedded multiple times yet end up with a smaller document. Short of Document Props > Fonts scrolling forever, is there any harm in letting it embed the subset. My main goal was to reduce file size after concat'ing several (~30,000) PDFs.
Jason -----Original Message----- From: Jason Berk [mailto:jb...@purdueefcu.com] Sent: Fri 4/23/2010 5:14 PM To: Post all your questions about iText here Subject: [iText-questions] iText 5.0.1 embedded fonts and smartcopy I have three fonts which each contain 1 glyph. I created 100 identical pdfs that uses this font and then used smartcopy to merge all 100 pages. The resulting PDF is 184KB and when I look at the document properties, it shows the font 100 times (presumably because it was an embedded subset). I added "myFont.setSubset(false);" and reran the test. Now when I view the properties of the merged pdf, I only see my font once (as expected), yet the size of my merged PDF grew to 327KB! (not expected) As I understood it, SmartCopy didn't reuse fonts that were subsets. public class Fonts { public static final Font VISA; public static final Font SCORECARD; public static final Font MICR; static { BaseFont _visa = null; BaseFont _scorecard = null; BaseFont _micr = null; try { _visa = BaseFont.createFont("/fonts/CREDITCARD.ttf", BaseFont.WINANSI, BaseFont.EMBEDDED); _visa.setSubset(false); // INCREASES FILE SIZE?!?! _scorecard = BaseFont.createFont("/fonts/SCORECARD.ttf", BaseFont.WINANSI, BaseFont.EMBEDDED); _scorecard.setSubset(false); // INCREASES FILE SIZE?!?! _micr = BaseFont.createFont("/fonts/OCRAEXT.ttf", BaseFont.WINANSI, BaseFont.EMBEDDED); _micr.setSubset(false); // INCREASES FILE SIZE?!?! } catch (Exception e) { e.printStackTrace(); System.exit(1); } VISA = new Font(_visa, 12); SCORECARD = new Font(_scorecard, 12); MICR = new Font(_micr, 12); } } private void generateStatements() { try { log.info("begin generating statements"); Document d = new Document(); PdfSmartCopy copy = new PdfSmartCopy(d, new FileOutputStream("C:/temp/aMerged.pdf")); d.open(); for (int i = 1; i <= 100; i++) { Document document = new Document(); PdfWriter.getInstance(document, new FileOutputStream("C:/temp/test" + i + ".pdf")); document.open(); document.add(new Paragraph("LARGE FONTS", Fonts.NORMAL)); document.add(new Paragraph("testing our font class", Fonts.LARGE_NORMAL)); document.add(new Paragraph("testing our font class", Fonts.LARGE_BOLD)); document.add(new Paragraph("testing our font class", Fonts.LARGE_UNDERLINE)); document.add(new Paragraph("testing our font class", Fonts.LARGE_ITALIC)); document.add(new Paragraph("\n\nNORMAL FONTS", Fonts.NORMAL)); document.add(new Paragraph("testing our font class", Fonts.NORMAL)); document.add(new Paragraph("testing our font class", Fonts.BOLD)); document.add(new Paragraph("testing our font class", Fonts.UNDERLINE)); document.add(new Paragraph("testing our font class", Fonts.ITALIC)); document.add(new Paragraph("\n\nSMALL FONTS", Fonts.NORMAL)); document.add(new Paragraph("testing our font class", Fonts.SMALL_NORMAL)); document.add(new Paragraph("testing our font class", Fonts.SMALL_BOLD)); document.add(new Paragraph("testing our font class", Fonts.SMALL_UNDERLINE)); document.add(new Paragraph("testing our font class", Fonts.SMALL_ITALIC)); document.add(new Paragraph("\n\nCOLORED FONTS", Fonts.NORMAL)); document.add(new Paragraph("testing our font class", Fonts.PEFCU_RED_NORMAL)); document.add(new Paragraph("\n\nWHITE FONTS", Fonts.NORMAL)); Chunk chunk = new Chunk("testing our font class", Fonts.WHITE_NORMAL); chunk.setBackground(Colors.BLACK); document.add(new Paragraph(chunk)); Chunk chunk2 = new Chunk("testing our font class", Fonts.WHITE_BOLD); chunk2.setBackground(Colors.BLACK); document.add(new Paragraph(chunk2)); document.add(new Paragraph("\n\nSPECIAL FONTS", Fonts.NORMAL)); document.add(new Paragraph("A", Fonts.VISA)); document.add(new Paragraph("A", Fonts.SCORECARD)); document.add(new Paragraph("1 2 3 4 5 6 7 8 9 0", Fonts.MICR)); document.close(); log.info("merging C:/temp/test" + i + ".pdf"); PdfReader reader = new PdfReader("C:/temp/test" + i + ".pdf"); ByteArrayOutputStream baos = new ByteArrayOutputStream(); PdfStamper stamper = new PdfStamper(reader, baos); stamper.close(); reader = new PdfReader(baos.toByteArray()); copy.addPage(copy.getImportedPage(reader, 1)); } d.close(); log.info("finished generating statements"); } catch (Exception e) { log.fatal(e.getMessage(), e); } } ***This is a transmission from Purdue Employees Federal Credit Union (PEFCU) and is intended solely for its authorized recipient(s), and may contain information that is confidential and or legally privileged. If you are not an addressee, or the employee or agent responsible for delivering it to an addressee, you are hereby notified that any use, dissemination, distribution, publication or copying of the information contained in this email is strictly prohibited. If you have received this transmission in error, please notify us by telephoning (765) 497-3328 or returning the email. You are then instructed to delete the information from your computer. Thank you for your cooperation.*** ***This is a transmission from Purdue Employees Federal Credit Union (PEFCU) and is intended solely for its authorized recipient(s), and may contain information that is confidential and or legally privileged. If you are not an addressee, or the employee or agent responsible for delivering it to an addressee, you are hereby notified that any use, dissemination, distribution, publication or copying of the information contained in this email is strictly prohibited. If you have received this transmission in error, please notify us by telephoning (765) 497-3328 or returning the email. You are then instructed to delete the information from your computer. Thank you for your cooperation.***
<<winmail.dat>>
------------------------------------------------------------------------------
_______________________________________________ iText-questions mailing list iText-questions@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/itext-questions Buy the iText book: http://www.itextpdf.com/book/ Check the site with examples before you ask questions: http://www.1t3xt.info/examples/ You can also search the keywords list: http://1t3xt.info/tutorials/keywords/