Skip to content

Commit

Permalink
support passing headers to request for loading font files and images …
Browse files Browse the repository at this point in the history
…via URL adresses #2071
  • Loading branch information
liborm85 committed Mar 27, 2022
1 parent 0695645 commit e2e44be
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 8 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# Changelog

## Unreleased

- Support passing headers to request for loading font files and images via URL adresses

## 0.2.4 - 2021-11-10

- Fixed destination path argument in VFS build script.
Expand Down
9 changes: 6 additions & 3 deletions src/browser-extensions/URLBrowserResolver.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,13 @@ if (typeof window !== 'undefined' && !window.Promise) {
}
require('core-js/es/object/values');

var fetchUrl = function (url) {
var fetchUrl = function (url, headers) {
return new Promise(function (resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
for (var headerName in headers) {
xhr.setRequestHeader(headerName, headers[headerName]);
}
xhr.responseType = 'arraybuffer';

xhr.onreadystatechange = function () {
Expand Down Expand Up @@ -53,12 +56,12 @@ function URLBrowserResolver(fs) {
this.resolving = {};
}

URLBrowserResolver.prototype.resolve = function (url) {
URLBrowserResolver.prototype.resolve = function (url, headers) {
if (!this.resolving[url]) {
var _this = this;
this.resolving[url] = new Promise(function (resolve, reject) {
if (url.toLowerCase().indexOf('https://') === 0 || url.toLowerCase().indexOf('http://') === 0) {
fetchUrl(url).then(function (buffer) {
fetchUrl(url, headers).then(function (buffer) {
_this.fs.writeFileSync(url, buffer);
resolve();
}, function (result) {
Expand Down
28 changes: 23 additions & 5 deletions src/browser-extensions/pdfMake.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,14 @@ function canCreatePdf() {
}

Document.prototype._createDoc = function (options, cb) {
var getExtendedUrl = function (url) {
if (typeof url === 'object') {
return { url: url.url, headers: url.headers };
}

return { url: url, headers: {} };
};

options = options || {};
if (this.tableLayouts) {
options.tableLayouts = this.tableLayouts;
Expand All @@ -58,24 +66,34 @@ Document.prototype._createDoc = function (options, cb) {
for (var font in this.fonts) {
if (this.fonts.hasOwnProperty(font)) {
if (this.fonts[font].normal) {
urlResolver.resolve(this.fonts[font].normal);
var url = getExtendedUrl(this.fonts[font].normal);
urlResolver.resolve(url.url, url.headers);
this.fonts[font].normal = url.url;
}
if (this.fonts[font].bold) {
urlResolver.resolve(this.fonts[font].bold);
var url = getExtendedUrl(this.fonts[font].bold);
urlResolver.resolve(url.url, url.headers);
this.fonts[font].bold = url.url;
}
if (this.fonts[font].italics) {
urlResolver.resolve(this.fonts[font].italics);
var url = getExtendedUrl(this.fonts[font].italics);
urlResolver.resolve(url.url, url.headers);
this.fonts[font].italics = url.url;
}
if (this.fonts[font].bolditalics) {
urlResolver.resolve(this.fonts[font].bolditalics);
var url = getExtendedUrl(this.fonts[font].bolditalics);
urlResolver.resolve(url.url, url.headers);
this.fonts[font].bolditalics = url.url;
}
}
}

if (this.docDefinition.images) {
for (var image in this.docDefinition.images) {
if (this.docDefinition.images.hasOwnProperty(image)) {
urlResolver.resolve(this.docDefinition.images[image]);
var url = getExtendedUrl(this.docDefinition.images[image]);
urlResolver.resolve(url.url, url.headers);
this.docDefinition.images[image] = url.url;
}
}
}
Expand Down

0 comments on commit e2e44be

Please sign in to comment.