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/

Reply via email to