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.

4
snrlx 13 sierpień 2014, 15:50

3 odpowiedzi

Najlepsza odpowiedź

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.

2
snrlx 25 październik 2014, 22:37

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

3
Víctor Vanaclocha Cebrián 16 styczeń 2018, 16:16

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.

-1
approxiblue 12 styczeń 2017, 01:55