Używam PDFMake -library, aby wygenerować dokumenty PDF po stronie klienta w jednej z moich aplikacji. Moim głównym problemem podczas korzystania z biblioteki polega na tym, że opiera się na dostępnych czcionkach w wirtualnym systemie plików. Czcionki są zatem wysyłane do klienta w pliku JavaScript o nazwie VFS_Fonts.js
W przypadku ustawień domyślnych biblioteka korzysta z czcionki roboto i dlatego wysyła trochę więcej niż 800 KB tylko dla czcionek. Moja główna intuicja jest tutaj:
Dlaczego nie używa czcionek systemu i jako wynik oszczędza ruch?
Czy istnieje obejście, aby użyć czcionek systemu?
Moim obecnym podejściem do zmniejszenia ruchu jest usunięcie stylów czcionek z VFS_Fonts.js, które nie są używane w dokumentach, które tworzę. Na przykład. Usuwam styl kursywny, odważny i italiczny / odważny, gdy używasz regularnych stylów. Dzięki tej metodzie był przynajmniej w stanie zmniejszyć rozmiar pliku czcionki o 3/4.
3 odpowiedzi
Jako Bartekp, główny opiekun pdfmake wskazał, ta funkcja nie jest obecnie osiągalna ze względu na ograniczenia podstawowej biblioteki PDFKIT.
Dlatego w celu zmniejszenia rozmiaru pliku czcionki Najlepsza opcja w tym momencie może usunąć nieużywane czcionki i za pomocą kompresji GZIP dla serwera WebServer.
Używam również PDFMake i napotkałem podobny problem.
Musisz dodać nowe źródło przez odpowiedni klucz, w ten sposób:
pdfmake.fonts = {
'Roboto' : {
normal: 'Roboto-Regular.ttf',
bold: 'Roboto-Medium.ttf',
italics: 'Roboto-Italic.ttf',
bolditalics: 'Roboto-Italic.ttf'
},
'OpenSans' : {
normal: 'OpenSans-Regular.ttf',
bold: 'OpenSans-Medium.ttf',
italics: 'OpenSans-Italic.ttf',
bolditalics: 'OpenSans-Italic.ttf'
}
}
Następnie w treści PDF musisz dodać "czcionkę", którą zamierzasz użyć.
{
stack : [
{
text : this is a test text
font : 'OpenSans',
italic : true
}, {
text : this is another test text
font : 'Roboto',
bold : true
}
]
}
Mam nadzieję, że znajdziesz to dobre rozwiązanie dla osób, które szukają rozwiązania.
Źródło tutaj. dzięki Daniel Arbiol ( Darbiol ).
PDFKIT obsługuje teraz Standardowe czcionki.
# Using a standard PDF font
doc.font('Times-Roman')
.text('Hello from Times Roman!')
.moveDown(0.5)
Zobacz także to Przykład na żywo.