This contribution is about TTF font merging and replacement, but it should help with the original font problem. It would also be possible to continue developing this code to remove embedded fonts and replace them with pdf document fonts. With this code you can remove other fonts and replace them with some TTF font.
Here's (itext_font_merging_patch.zip) some additional classes to com.lowagie.text.pdf . http://www.nabble.com/file/p15203186/itext_font_merging_patch.zip itext_font_merging_patch.zip The main class is FontReplacingPdfSmartCopy (extends PdfSmartCopy). This subclass of PdfSmartCopy will replace different subsets of the same font in the resulting pdf file with one font (same font name or replacement can be also done). It needs the TrueType font files (TTF) to do the job. This usually reduces the final PDF file size by 40%-60% compared to plain PdfSmartCopy when several single page pdfs are merged in to one big pdf file. The original motivation was to make it possible to print very large pdf files which have been concatenated of thousands of small pdf files containing the same fonts. Some printers just clog when they receive thounsands of embedded fonts in a single print job. Maybe the reason is that the resulting Postscript files are quite huge when there's thousands of embedded fonts. Having less fonts makes it more simple to print-process the concatenated pdf. It also uses less disk space. Merging/replacement currently works only with WinAnsiEncoding (iso-8859-1 / Cp1252 / latin1) Page resources are scanned while copying and it checks for a dictionary under FONT key. Possible FONT references in the font dictionary are replaced on demand. The new font will get a new indirect reference and the font will be written to the stream in the overridden PdfWriter.addSharedObjectsToBody() method. This class has to be in the com.lowagie.itext.pdf package because it needs access to some package private methods. I would like to contribute this implementation to the community and I hope this gets in to the itext release as soon as possible. Bruno or Paulo, can you add this to the itext release? There's also a helper class for concatenating pdfs. PdfConcator makes it easier to concatenate multiple PDF files in to a single PDF file. It uses FontReplacingPdfSmartCopy to reduce the number of fonts in the resulting PDF file. It's also possible to replace TTF fonts with other fonts. Sample usage: PdfConcator pdfConcator=new PdfConcator(); pdfConcator.setFontDir(new File("fonts")); // or pdfConcator.useDefaultSystemFonts(); Map fontNameMapping = new HashMap(); fontNameMapping.put("ComicSansMS", "Arial-Black"); pdfConcator.setFontNameMapping(fontNameMapping); List files = new ArrayList(); files.add("pdf1.pdf"); files.add("pdf2.pdf"); pdfConcator.concat(files, new File("concat.pdf")); Supports IoC/DI. Example Spring configuration xml: <beans xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> <bean id="pdfConcator" class="com.lowagie.text.pdf.PdfConcator"> <property name="fonts"> <bean factory-bean="fontArrayFactory" factory-method="getInstance"/> </property> <property name="fontNameMapping"> <map> <entry key="ComicSansMS" value="ArialMT"/> </map> </property> </bean> <bean id="fontArrayFactory" class="com.lowagie.text.pdf.BaseFontArrayFactory"> <property name="fontDirs"> <list> <value>C:/myfonts</value> <value>fonts</value> <value>/usr/share/fonts/truetype/msttcorefonts</value> <value>C:/WINDOWS/FONTS</value> </list> </property> <property name="extensions" value="ttf,otf"/> <property name="ignoreUnreadable" value="true"/> </bean> </beans> Regards, Lari Hotari Bruno Lowagie (iText) wrote: > > new2pdf wrote: >> Is there a better way of doing this? > > That's not a question I can answer in only a few lines. > Due to lack of time, I have to pass on this question for now. > Maybe somebody else can explain how to remove fonts > (although that's always a very delicate matter). > br, > Bruno > > > ------------------------------------------------------------------------- > SF.Net email is sponsored by: The Future of Linux Business White Paper > from Novell. From the desktop to the data center, Linux is going > mainstream. Let it simplify your IT future. > http://altfarm.mediaplex.com/ad/ck/8857-50307-18918-4 > _______________________________________________ > iText-questions mailing list > iText-questions@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/itext-questions > Buy the iText book: http://itext.ugent.be/itext-in-action/ > > -- View this message in context: http://www.nabble.com/How-to-remove-embedded-fonts-from-a-pdf-document-tp14033717p15203186.html Sent from the iText - General mailing list archive at Nabble.com. ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ iText-questions mailing list iText-questions@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/itext-questions Buy the iText book: http://itext.ugent.be/itext-in-action/