Export PDF with different Font not finding new font
Export PDF with different Font not finding new font
Link to test case: Was unable to re-create un live.datatables.net
Debugger code (debug.datatables.net): ipagad
Error messages shown: Uncaught File 'CourierPrime-Regular.ttf' not found in virtual file system
Description of problem:
I am unable to create html5 buttons on live.datatables.net, but I may just be doing something wrong there.
My main issue is I cannot change the font family that the PDF export is using.
Within my DataTable Creation:
{
extend: 'pdfHtml5',
text: '<i class="far fa-file-pdf fa-lg text-primary"></i>',
titleAttr: 'Export to PDF',
className: 'btn-light',
exportOptions: {
columns: [7, 5, 6, 1, 2, 0, 3, 4],
orthogonal: 'export',
modifier: {
selected: false
}
},
customize: function(doc){
doc.defaultStyle.font = 'Courier'
}
}
Run at window load:
pdfMake.fonts = {
Courier: {
normal: 'CourierPrime-Regular.ttf',
bold: 'CourierPrime-Bold.ttf',
italics: 'CourierPrime-Italic.ttf',
bolditalics: 'CourierPrime-BoldItalic.ttf'
},
Roboto: {
normal: 'Roboto-Regular.ttf',
bold: 'Roboto-Medium.ttf',
italics: 'Roboto-Italic.ttf',
bolditalics: 'Roboto-MediumItalic.ttf'
}
}
My vfs_fonts.js file:
this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = {
"CourierPrime-Bold.ttf": "AAEAAAAQAQAABAAAR0RFRgRvCGUAAQx8AAAAPEdTVUL+f/UDAAEMuAAAA85PUy8ycfS...",
"CourierPrime-BoldItalic.ttf": "AAEAAAAQAQAABAAAR0RFRgRuBqoAASZ8AAAANEdTVUKLPZ4SAAEmsAAAB5ZPU...",
"CourierPrime-Italic.ttf": "AAEAAAAQAQAABAAAR0RFRgRuBqoAASMEAAAANEdTVUKLPZ4SAAEjOAAAB5ZPUy8yc...",
"CourierPrime-Regular.ttf": "AAEAAAAQAQAABAAAR0RFRgRvCHsAAQYUAAAAPEdTVUL+f/UDAAEGUAAAA85PUy8y...",
"Roboto-Italic.ttf": "AAEAAAARAQAABAAQR0RFRqNLn+AAAd9EAAACWEdQT1PBrAqiAAHhnAAAZdhHU1VCgv9Z+gA...",
"Roboto-Medium.ttf": "AAEAAAARAQAABAAQR0RFRqNLn+AAAcmUAAACWEdQT1MwpMVlAAHL7AAAZgxHU1VCgv9Z+gA...",
"Roboto-MediumItalic.ttf": "AAEAAAARAQAABAAQR0RFRqNLn+AAAd/MAAACWEdQT1MwpMVlAAHiJAAAZgxHU1VCg...",
"Roboto-Regular.ttf": "AAEAAAARAQAABAAQR0RFRqNLn+AAAclUAAACWEdQT1PBrAqiAAHLrAAAZdhHU1VCgv9Z+g...",
"sampleImage.jpg": "/9j/4RC5RXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUAAAABAAAAYgEbAAUAAAABA..."
};
I know this isn't exactly a DataTables related issue, more a pdfmake issue, but I followed all the steps found here and I'm still getting the error shown above.
This question has an accepted answers - jump to answer
Answers
This thread should help, it's asking the same thing.
Cheers,
Colin
That thread seems to highlight the issue that arises when vfs_fonts.js is included before pdfmake, my includes do not do this.
I am trying to add an additional font family to the pdfmake options, but it is not applying.
Is there anywhere in the DataTables library where it might be over-writing my font addition? Based on pdfmake's documentation I think I should have a valid Courier font option but DataTables won't export it.
The only thing I can thing of is that
pdfMake
might point to a different instance? If you run$.fn.DataTable.Buttons.pdfMake().vfs
on your console, does it show Courier there?Failing that, we'd need a link to a test case.
Allan
Yes!
Running
$.fn.DataTable.Buttons.pdfMake().vfs
gave me only the Roboto that automatically comes with pdfmake.I swapped the order of pdfmake and DataTables in my headers so that my vfs_fonts came after the DataTables js file:
My guess is somewhere within the datatables min file it is re-defining the pdfmake.fonts object; not an issue just something to note for anyone else trying to customize pdfmake font family.