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

Ben Manes commented on PDFBOX-4774:
-----------------------------------

The final iteration of this workaround was to create a Lambda layer, which is 
the zip containing the fonts. This way they do not need to be packaged directly 
into the task itself. I also use a prebuilt cache file for a faster cold start, 
which has to reside in a writable path.
{code:java}
// Discover the extra fonts by hacking the search of $HOME/.fonts (PDFBOX-4774)
System.setProperty("user.home", "/opt/pdfbox");

try {
  // Use a prebuilt cache manifest
  System.setProperty("pdfbox.fontcache", System.getProperty("java.io.tmpdir"));
  Files.copy(Path.of("/opt/pdfbox/.pdfbox.cache"), 
tempDir().resolve(".pdfbox.cache"));
} catch (IOException e) {
  logger.error("Failed to copy prebuilt font cache", e);
}
{code}

> Add AWS Lambda support to FontFileFinder
> ----------------------------------------
>
>                 Key: PDFBOX-4774
>                 URL: https://issues.apache.org/jira/browse/PDFBOX-4774
>             Project: PDFBox
>          Issue Type: Improvement
>          Components: FontBox
>    Affects Versions: 2.0.18
>            Reporter: Ben Manes
>            Priority: Major
>         Attachments: fixed_page.jpg, original.pdf, rendered_page.jpg
>
>
> The font directory finder is hard coded based on the operating system and is 
> not directly extensible. Instead, if I understand correctly, the fonts have 
> to be explicitly declared in a {{PDFBox_External_Fonts.properties}} file.
> AWS Lambda includes only minimal fonts in its linux distribution. For some 
> documents this is too limiting, so on our EC2 instances we install 
> {{msttcorefonts}}, {{ttf-aenigma}}, and {{fonts-tuffy}}. These go into 
> {{/usr/share/fonts}} which the {{UnixFontDirFinder}} inspects.
> AWS Lambda will unzip the distribution into {{/var/task}}, will unzip layers 
> into {{/opt}} only allows tasks to otherwise write to {{/tmp}}. The common 
> recommendation for fonts is to include them in the lambda, reference them at 
> {{/var/task/fonts}}, and set {{FONTCONFIG_PATH}} to that path for headless 
> tasks like Chrome's print-to-pdf.
> Since PdfBox does not use font-config this solution does not work. Ideally it 
> would be nice if one could specify a custom {{FontDirFinder}} or add custom 
> directories (such as by a system property if not API). Alternatively, PdfBox 
> could include reasonable default locations if the environmental variable 
> {{LAMBDA_TASK_ROOT}} is set.



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