You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@pdfbox.apache.org by "John Hewson (JIRA)" <ji...@apache.org> on 2015/09/29 02:44:04 UTC

[jira] [Resolved] (PDFBOX-2967) OS font files with paths larger than 80 chars crash FileSystemFontProvider

     [ https://issues.apache.org/jira/browse/PDFBOX-2967?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

John Hewson resolved PDFBOX-2967.
---------------------------------
    Resolution: Unresolved

Thanks, I've opened PDFBOX-3001 to just re-write the caching code.

> OS font files with paths larger than 80 chars crash FileSystemFontProvider
> --------------------------------------------------------------------------
>
>                 Key: PDFBOX-2967
>                 URL: https://issues.apache.org/jira/browse/PDFBOX-2967
>             Project: PDFBox
>          Issue Type: Bug
>          Components: PDModel
>    Affects Versions: 2.0.0
>         Environment: Ubuntu Linux 12.04 amd64
> Apache PDFBOX 2.0.0-20150803.050251-1602
> java version "1.8.0_45"
> Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
> Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)
>            Reporter: Miguel GarcĂ­a
>
> The {{org.apache.pdfbox.pdmodel.font.FileSystemFontProvider::saveCache()}} method saves its cache in an instance of {{Preferences.userNodeForPackage(FileSystemFontProvider.class)}}. 
> This {{java.util.prefs.Preferences}} class has a {{MAX_KEY_LENGTH = 80;}} limit. The {{Preferences}} implementation we get for the {{userNodeForPackage(...)}} method turns out to be an instance of {{java.util.prefs.AbstractPreferences}}, which does respect this key length limit and throws an IllegalArgumentException otherwise. 
> In my Linux environment I have some fonts under {{/usr/share/fonts}} with file names longer than 80 characters. For example, those belonging to the {{fonts-johnsmith-induni}} debian package.
> Just by having these fonts installed, this problem happens and, for example, things like lazyly, statically initialising the {{org.apache.pdfbox.pdmodel.font.FontMapper.DefaultFontProvider.INSTANCE}} fails leading to class loading problems. 
> May I (humbly!) suggest some solutions for the {{org.apache.pdfbox.pdmodel.font.FileSystemFontProvider::saveCache()}} method.
> - Not using {{Preferences}} for storing the cache.
> - Avoiding to {{putByteArray(key, ...)}} into preferences anything with a key longer than 80 chars (and outputting a warn log).
> - Surrounding the {{putByteArray(key, ...)}} with a try-catch block for IllegalArgument exception. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@pdfbox.apache.org
For additional commands, e-mail: dev-help@pdfbox.apache.org