Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .babelrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"presets": [["env", {"modules": false, "targets": {"node": "6.10"}}]],
"env": {
"test": {
"presets": [["env", {"targets": {"node": "6.10"}}]]
}
}
}
28 changes: 14 additions & 14 deletions lib/font/standard.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,20 @@ import fs from 'fs';

// This insanity is so bundlers can inline the font files
const STANDARD_FONTS = {
"Courier"() { return fs.readFileSync(__dirname + "/font/data/Courier.afm", 'utf8'); },
"Courier-Bold"() { return fs.readFileSync(__dirname + "/font/data/Courier-Bold.afm", 'utf8'); },
"Courier-Oblique"() { return fs.readFileSync(__dirname + "/font/data/Courier-Oblique.afm", 'utf8'); },
"Courier-BoldOblique"() { return fs.readFileSync(__dirname + "/font/data/Courier-BoldOblique.afm", 'utf8'); },
"Helvetica"() { return fs.readFileSync(__dirname + "/font/data/Helvetica.afm", 'utf8'); },
"Helvetica-Bold"() { return fs.readFileSync(__dirname + "/font/data/Helvetica-Bold.afm", 'utf8'); },
"Helvetica-Oblique"() { return fs.readFileSync(__dirname + "/font/data/Helvetica-Oblique.afm", 'utf8'); },
"Helvetica-BoldOblique"() { return fs.readFileSync(__dirname + "/font/data/Helvetica-BoldOblique.afm", 'utf8'); },
"Times-Roman"() { return fs.readFileSync(__dirname + "/font/data/Times-Roman.afm", 'utf8'); },
"Times-Bold"() { return fs.readFileSync(__dirname + "/font/data/Times-Bold.afm", 'utf8'); },
"Times-Italic"() { return fs.readFileSync(__dirname + "/font/data/Times-Italic.afm", 'utf8'); },
"Times-BoldItalic"() { return fs.readFileSync(__dirname + "/font/data/Times-BoldItalic.afm", 'utf8'); },
"Symbol"() { return fs.readFileSync(__dirname + "/font/data/Symbol.afm", 'utf8'); },
"ZapfDingbats"() { return fs.readFileSync(__dirname + "/font/data/ZapfDingbats.afm", 'utf8'); }
"Courier"() { return fs.readFileSync(__dirname + "/data/Courier.afm", 'utf8'); },
"Courier-Bold"() { return fs.readFileSync(__dirname + "/data/Courier-Bold.afm", 'utf8'); },
"Courier-Oblique"() { return fs.readFileSync(__dirname + "/data/Courier-Oblique.afm", 'utf8'); },
"Courier-BoldOblique"() { return fs.readFileSync(__dirname + "/data/Courier-BoldOblique.afm", 'utf8'); },
"Helvetica"() { return fs.readFileSync(__dirname + "/data/Helvetica.afm", 'utf8'); },
"Helvetica-Bold"() { return fs.readFileSync(__dirname + "/data/Helvetica-Bold.afm", 'utf8'); },
"Helvetica-Oblique"() { return fs.readFileSync(__dirname + "/data/Helvetica-Oblique.afm", 'utf8'); },
"Helvetica-BoldOblique"() { return fs.readFileSync(__dirname + "/data/Helvetica-BoldOblique.afm", 'utf8'); },
"Times-Roman"() { return fs.readFileSync(__dirname + "/data/Times-Roman.afm", 'utf8'); },
"Times-Bold"() { return fs.readFileSync(__dirname + "/data/Times-Bold.afm", 'utf8'); },
"Times-Italic"() { return fs.readFileSync(__dirname + "/data/Times-Italic.afm", 'utf8'); },
"Times-BoldItalic"() { return fs.readFileSync(__dirname + "/data/Times-BoldItalic.afm", 'utf8'); },
"Symbol"() { return fs.readFileSync(__dirname + "/data/Symbol.afm", 'utf8'); },
"ZapfDingbats"() { return fs.readFileSync(__dirname + "/data/ZapfDingbats.afm", 'utf8'); }
};

class StandardFont extends PDFFont {
Expand Down
2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
"bugs": "http://github.com/devongovett/pdfkit/issues",
"devDependencies": {
"babel-core": "^6.26.3",
"babel-jest": "^23.6.0",
"babel-plugin-external-helpers": "^6.22.0",
"babel-preset-env": "^1.7.0",
"blob-stream": "^0.1.2",
Expand Down Expand Up @@ -54,6 +55,7 @@
"website": "node docs/generate_website.js",
"docs": "npm run pdf-guide && npm run website && npm run browser-demo",
"test": "jest -i",
"test:integration": "jest integration/ -i",
"test:unit": "jest unit/ -i"
},
"main": "js/pdfkit.js",
Expand Down
2 changes: 1 addition & 1 deletion rollup.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ export default [
}),
copy({
files: ['lib/font/data/*.afm'],
dest: 'js/font/data'
dest: 'js/data'
}),
stripFSInterop()
]
Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File renamed without changes.
17 changes: 16 additions & 1 deletion tests/helpers.js → tests/integration/helpers.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,22 @@
var PDFDocument = require('../');
var PDFDocument = require('../../lib/document').default;
var PDFSecurity = require('../../lib/security').default;
var CryptoJS = require('crypto-js');
var path = require('path');
var fs = require('fs');

// manual mock for PDFSecurity to ensure stored id will be the same accross different systems
PDFSecurity.generateFileID = () => {
return new Buffer('mocked-pdf-id');
}

PDFSecurity.generateRandomWordArray = (bytes) => {
const words = [];
for (let i = 0; i < bytes; i++) {
words.push(0x00010203);
}
return new CryptoJS.lib.WordArray.init(words, bytes);
}

function updatePdf (pdfData, testState, snapshotChanges) {
const pdfDir = path.join(path.dirname(testState.testPath), '__pdfs__');
if (!fs.existsSync(pdfDir)) {
Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
var {runDocTest} = require('../helpers');
var {jpeg: bee} = require('../images/bee')
var {jpeg: bee} = require('../../images/bee')

describe('pdfmake', function () {
// somehow the generated pdf changes at each run
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
var {runDocTest} = require('../helpers');
var {jpeg: bee} = require('../images/bee')
var {jpeg: bee} = require('../../images/bee')

describe('pdfmake', function () {
// somehow the generated pdf changes at each run
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
var {runDocTest} = require('../helpers');
var {jpeg: bee} = require('../images/bee');
var {jpeg: bee} = require('../../images/bee');

describe('pdfmake', function () {
test('images', function () {
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
var {runDocTest} = require('../helpers');
var PDFDocument = require('../..');
var {runDocTest} = require('./helpers');
var PDFDocument = require('../../lib/document').default;
var CryptoJS = require('crypto-js');

describe('pdfmake', function () {
Expand Down
File renamed without changes.
2 changes: 1 addition & 1 deletion tests/vector.spec.js → tests/integration/vector.spec.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
var {runDocTest} = require('./helpers');
var tiger = require('../demo/tiger')
var tiger = require('../../demo/tiger')

describe('vector', function () {
test('simple shapes', function () {
Expand Down
4 changes: 2 additions & 2 deletions tests/unit/color.spec.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
var PDFDocument = require("../../");
const PDFDocument = require("../../lib/document").default;

describe("color", function() {
test("normalize", function() {
var doc = new PDFDocument();
const doc = new PDFDocument();

expect(doc._normalizeColor("#FFF")).toEqual([1, 1, 1]);
expect(doc._normalizeColor("#FFFFFF")).toEqual([1, 1, 1]);
Expand Down
21 changes: 11 additions & 10 deletions tests/unit/reference.spec.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
const PDFDocument = require('../../')
const PDFReference = require("../../lib/reference").default;
const PDFDocument = require("../../lib/document").default;
const zlib = require('zlib')

describe('PDFReference', () => {
Expand All @@ -8,7 +9,7 @@ describe('PDFReference', () => {
})

test('instantiated without data', () => {
const ref = document.ref()
const ref = new PDFReference(document, 1);

expect(ref.id).toBeDefined()
expect(ref.data).toBeDefined()
Expand All @@ -17,20 +18,20 @@ describe('PDFReference', () => {

test('instantiated with data', () => {
const refData = {Pages: 0}
const ref = document.ref(refData)
const ref = new PDFReference(document, 1, refData);

expect(ref.id).toBeDefined()
expect(ref.id).toBe(1)
expect(ref.data).toBe(refData)
})

test('written data of empty reference', (done) => {
const dataLog = []
const expected = [
'7 0 obj',
'1 0 obj',
'<<\n>>',
'endobj'
]
const ref = document.ref()
const ref = new PDFReference(document, 1);
document._write = function(data) {
dataLog.push(data)
}
Expand All @@ -45,7 +46,7 @@ describe('PDFReference', () => {
const dataLog = []
const chunk = new Buffer('test')
const expected = [
'7 0 obj',
'1 0 obj',
`<<
/Length ${chunk.length}
>>`,
Expand All @@ -54,7 +55,7 @@ describe('PDFReference', () => {
'\nendstream',
'endobj'
]
const ref = document.ref()
const ref = new PDFReference(document, 1);
ref.compress = false
ref.write(chunk)
document._write = function(data) {
Expand All @@ -72,7 +73,7 @@ describe('PDFReference', () => {
const chunk = new Buffer('test')
const compressed = zlib.deflateSync(chunk);
const expected = [
'7 0 obj',
'1 0 obj',
`<<
/Length ${compressed.length}
/Filter /FlateDecode
Expand All @@ -82,7 +83,7 @@ describe('PDFReference', () => {
'\nendstream',
'endobj'
]
const ref = document.ref()
const ref = new PDFReference(document, 1);
ref.write(chunk)
document._write = function(data) {
dataLog.push(data)
Expand Down
10 changes: 8 additions & 2 deletions tests/unit/trailer.spec.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
const PDFDocument = require('../../');
const PDFDocument = require('../../lib/document').default;
const PDFSecurity = require('../../lib/security').default;

// manual mock for PDFSecurity to ensure stored id will be the same accross different systems
PDFSecurity.generateFileID = () => {
return new Buffer('mocked-pdf-id');
}

describe('Document trailer', () => {
let document;
Expand Down Expand Up @@ -28,7 +34,7 @@ describe('Document trailer', () => {
],
[
'trailer',
`<<\n/Size 11\n/Root 2 0 R\n/Info 7 0 R\n/ID [<8c72cf48ff87daac57e26bf1550e6979> <8c72cf48ff87daac57e26bf1550e6979>]\n>>`
`<<\n/Size 11\n/Root 2 0 R\n/Info 7 0 R\n/ID [<6d6f636b65642d7064662d6964> <6d6f636b65642d7064662d6964>]\n>>`
]
];
document._write = function(data) {
Expand Down