[ 
https://issues.apache.org/jira/browse/PDFBOX-5209?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17361042#comment-17361042
 ] 

Tilman Hausherr commented on PDFBOX-5209:
-----------------------------------------

I looked at this again by playing with the {{CreateSimpleFormWithEmbeddedFont}} 
example, and now my analysis is a different one:
- AppearanceGeneratorHelper gets the font from the default resources
- The font is created with {{PDType0Font(COSDictionary fontDictionary)}} which 
does not intend to subset
- later subsetting isn't possible ({{willBeSubset()}} is false), because 
{{embedder}} is null

1)
One solution might be to construct the appearances yourself by using a modified 
version of {{AppearanceGeneratorHelper.setAppearanceValue()}}. This one should 
then use the font directly (with {{PDType0Font.load()}} instead from the 
resources (see the line {{PDFont font = defaultAppearance.getFont()}}), or by 
getting the actual font stream from the font in the resources (depends on the 
font type).

It might be possible if it is "your" document, i.e. you know what fonts you 
want to use. The font object(s) should be constructed in advance so that 
it/they can be used for all fields.

The {{PDDocument}} object is available from 
{{field.getAcroForm().getDocument()}}.

2)
A second solution could be that PDField accepts a PDFont object. I tried this 
and it seems to work:

at the beginning of {{AppearanceGeneratorHelper.setAppearanceContent()}} add 
this code:
{code}
if (field instanceof PDTextField)
{
        PDTextField textField = (PDTextField) field;
        if (textField.font != null)
        {
                defaultAppearance.setFont(textField.font);
        }
} 
{code}          
in PDTextField, add a field {{font}} and a setter.

In your application, set the font for all your fields, and at the end of your 
application, call {{font.subset()}} and then 
{{resources.getCOSObject().getCOSDictionary(COSName.FONT).removeItem(COSName.getPDFName(fontName))}}
 to remove the non-subsetted font from the default resources. This is because 
of a flaw in this solution, that PDFBox still expects the font to be in the 
default resources.

> Using Chinese character make the file size increases 
> -----------------------------------------------------
>
>                 Key: PDFBOX-5209
>                 URL: https://issues.apache.org/jira/browse/PDFBOX-5209
>             Project: PDFBox
>          Issue Type: Improvement
>          Components: AcroForm
>    Affects Versions: 2.0.15
>         Environment: java jdk 1.8
>            Reporter: LI MING
>            Priority: Blocker
>              Labels: FileSize
>
> Like the title,we use Chinese Character to generate PDF form file ,it is 
> successed.but the file size is larger than 10mb.except change the font 
> file,Is there any other way we can solve this problem?



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to