I have a pdf file, and I want to know if I can embed/subset all its fonts into PDF file itself? Is there any tool supporting this operation?
4 Answers
Ghostscript can do that. One condition though: the font(s) referenced by the original PDF need to be present on the system where you run Ghostscript.
Here is an example command to run on Windows:
gswin32c.exe ^
-sFONTPATH=c:/windows/fonts;d:/some/dir/with/more/fonts ^
-dCompatibilityLevel=1.4 ^
-dPDFSETTINGS=/prepress ^
-dCompressFonts=true ^
-dSubsetFonts=true ^
-dNOPAUSE ^
-dBATCH ^
-sDEVICE=pdfwrite ^
-sOutputFile=output.pdf ^
-c ".setpdfwrite <</NeverEmbed [ ]>> setdistillerparams" ^
-f input.pdf
The resulting output.pdf should have all fonts embedded which input.pdf didn't have. Just make sure that -sFONTPATH=... contains (at least) one directory where the missing fonts are found by the gswin32c command.
- 12,621
You can export PDFs from InDesign with the fonts embedded, but that's assuming you have the fonts on your computer and can direct the program to those font files. I'd imagine Acrobat Pro supports this too. I'm not sure about editing the fonts in a PDF file that's already been generated, but if there's any tool that will let you do it, it's probably Acrobat Pro (not to be confused with Acrobat Reader).
Simply convert it to PDF/A. That's still a PDF but has the fonts embedded.
Many ways are described here: How to convert a PDF to a PDF/A?
One of the simplest ways is to use an online converter, for example https://pdf.online/pdf-to-pdfa
- 1,388
The documentation for your PDF generation tool will explain how to enable embedding of fonts where possible. Be sure to follow the license of all fonts embedded in this manner.
- 112,653
-c "...."is to hold a snippet of PostScript code. The quotes are there to work around spaces inside the snippet. That snippet could be divided into two snippets, but then each one should have its own-cand its own quotes, like-c "<< ... >>" -c "setdistillerparams". (So, yes, for the last-cthe quotes could go, because the argumentsetdistillerparamsdoes not include a space...) – Kurt Pfeifle Apr 13 '15 at 14:59setdistillerparamsis ignored, the whole first-c "<<...>>"is also void. Ghostscript may then still complete the command successfully, albeit not producing the intended, but a different output (i.e., fonts not embedded). – Kurt Pfeifle Apr 13 '15 at 15:44