У меня возникла следующая проблема. Я получаю файл PDF
, который содержит набор шрифтов. Эти шрифты не встроены в файл. Вот простой пример:Вставить не встроенные шрифты в PDF с помощью IText
Я хотел бы встроить эти шрифты внутри PDF
, так что они самодостаточны и всегда доступны. Но все не так просто. Я использую IText
для выполнения моей обработки PDF
.
Я прочитал и попытался следующие вопросы/ответы:
- how-to-create-pdf-with-font-information-and-embed-actual-font-when-merging-them
- embed-truetype-fonts-in-existing-pdf
- embed-font-into-pdf-file-by-using-itext
- how-to-check-that-all-used-fonts-are-embedded-in-pdf-with-java-itext
- Глава
16.1.4 Replacing a font
книгиiText in Action - 2nd Edition
- ...
Но то, что получило меня ближе, было следующим примером: EmbedFontPostFacto.java
(что вытекает из книги). Я смог встроить шрифт Arial
при предоставлении файла Arial.ttf
.
Но с этим, как и с другими примерами, мне нужен исходный файл шрифта, чтобы вставить ее. В моем случае у меня нет исходного файла. Но я мог бы использовать их в системе. Поэтому я хотел бы запросить доступные шрифты в системе и посмотреть, соответствует ли данный шрифт данному шрифту.
Что-то любит, как
GraphicsEnvironment e = GraphicsEnvironment.getLocalGraphicsEnvironment();
java.awt.Font[] fonts = e.getAllFonts();
for(java.awt.Font f : fonts){
System.out.println(f.getFontName());
}
Но я не могу преобразовать данный java.awt.Font
в RandomAccessFile
или byte[]
, которые будут использоваться для того, чтобы вставлять сам файл шрифта. Есть ли другой способ для встраивания шрифтов в PDF
без исходного файла самого шрифта?