It's not forgotten but, as you said yourself, it solves your specific 
problem. I'll see if I can make it more generic but that takes time.

Paulo

----- Original Message ----- 
From: "Lari Hotari" <[EMAIL PROTECTED]>
To: <itext-questions@lists.sourceforge.net>
Sent: Tuesday, February 05, 2008 10:02 PM
Subject: Re: [iText-questions] contribution: FontReplacingPdfSmartCopy: 
duplicate TTF font subset merging and replacement (was: How to remove 
embedded fonts from a pdf document)


>
>
> Hi,
>
> Have you had a chance to check this out?
> (http://www.nabble.com/file/p15203186/itext_font_merging_patch.zip)
>
> Regards,
>
> Lari
>
>
>
> Paulo Soares wrote:
>>
>> I'll have a look.
>>
>> Paulo
>>
>>> -----Original Message-----
>>> From: [EMAIL PROTECTED]
>>> [mailto:[EMAIL PROTECTED] On
>>> Behalf Of Lari Hotari
>>> Sent: Thursday, January 31, 2008 12:03 PM
>>> To: itext-questions@lists.sourceforge.net
>>> Subject: [iText-questions] contribution:
>>> FontReplacingPdfSmartCopy: duplicate TTF font subset merging
>>> and replacement (was: How to remove embedded fonts from a pdf
>>> document)
>>>
>>>
>>> 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


-------------------------------------------------------------------------
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/

Reply via email to