mirror of
https://github.com/foliojs/pdfkit.git
synced 2025-12-08 20:15:54 +00:00
146 lines
4.3 KiB
JavaScript
146 lines
4.3 KiB
JavaScript
import { runDocTest } from './helpers';
|
|
|
|
describe('text', function() {
|
|
test('simple text', function() {
|
|
return runDocTest(function(doc) {
|
|
doc.font('tests/fonts/Roboto-Regular.ttf');
|
|
doc.text('Really simple text', 100, 100);
|
|
});
|
|
});
|
|
|
|
test('alignment', function() {
|
|
return runDocTest(function(doc) {
|
|
doc.font('tests/fonts/Roboto-Regular.ttf');
|
|
doc.text('Left aligned text', { align: 'left' });
|
|
doc.text('Right aligned text', { align: 'right' });
|
|
doc.text(
|
|
'Justified aligned text - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam in suscipit purus.',
|
|
{ align: 'justify' }
|
|
);
|
|
});
|
|
});
|
|
|
|
test('soft hyphen', function() {
|
|
return runDocTest(function(doc) {
|
|
doc.font('tests/fonts/Roboto-Regular.ttf');
|
|
doc.text(
|
|
'Text with soft hyphen - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lo ip\u00ADsum',
|
|
{ align: 'justify' }
|
|
);
|
|
doc.text(
|
|
'Text with soft hyphen on the edge - ttttestttestttestttestttestttestttestttestttestttestttes\u00ADtt\u00ADt',
|
|
{ align: 'justify' }
|
|
);
|
|
});
|
|
});
|
|
|
|
test('decoration', function() {
|
|
return runDocTest(function(doc) {
|
|
doc.font('tests/fonts/Roboto-Regular.ttf');
|
|
doc.fillColor('blue').text('Here is a link!', 100, 100, {
|
|
link: 'http://google.com/',
|
|
underline: true
|
|
});
|
|
doc.text('Strike', 100, 130, {
|
|
strike: true
|
|
});
|
|
doc.text('Strike', 100, 160, {
|
|
underline: true,
|
|
strike: true
|
|
});
|
|
});
|
|
});
|
|
|
|
test('list', function() {
|
|
return runDocTest(function(doc) {
|
|
doc.font('tests/fonts/Roboto-Regular.ttf');
|
|
doc.fillColor('#000').list(['One', 'Two', 'Three'], 100, 150);
|
|
});
|
|
});
|
|
|
|
test('list with line breaks in items', function() {
|
|
return runDocTest(function(doc) {
|
|
doc.font('tests/fonts/Roboto-Regular.ttf');
|
|
doc.list(['Foo\nBar', 'Foo\rBar', 'Foo\r\nBar'], [100, 150]);
|
|
});
|
|
});
|
|
|
|
test('list (numbered)', function() {
|
|
return runDocTest(function(doc) {
|
|
doc.font('tests/fonts/Roboto-Regular.ttf');
|
|
doc.fillColor('#000').list(['One', 'Two', 'Three'], 100, 150, {listType: 'numbered'});
|
|
});
|
|
});
|
|
|
|
test('list (lettered)', function() {
|
|
return runDocTest(function(doc) {
|
|
doc.font('tests/fonts/Roboto-Regular.ttf');
|
|
doc.fillColor('#000').list(['One', 'Two', 'Three'], 100, 150, {listType: 'lettered'});
|
|
});
|
|
});
|
|
|
|
test('list with sub-list (unordered)', function() {
|
|
return runDocTest(function(doc) {
|
|
doc.font('tests/fonts/Roboto-Regular.ttf');
|
|
doc.fillColor('#000').list(['One', ['One.One', 'One.Two'], 'Three'], 100, 150);
|
|
})
|
|
})
|
|
|
|
test('list with sub-list (ordered)', function() {
|
|
return runDocTest(function(doc) {
|
|
doc.font('tests/fonts/Roboto-Regular.ttf');
|
|
doc.fillColor('#000').list(['One', ['One.One', 'One.Two'], 'Three'], 100, 150, {listType: 'numbered'});
|
|
})
|
|
})
|
|
|
|
test('continued text with OpenType features', function() {
|
|
return runDocTest(function(doc) {
|
|
doc.font('tests/fonts/Roboto-Regular.ttf');
|
|
doc.text('Really simple', 100, 100, {features: ['smcp'], continued: true, lineBreak: false})
|
|
doc.text(' text', {features: [], lineBreak: false});
|
|
});
|
|
});
|
|
|
|
test('rotated text', function () {
|
|
let i = 0;
|
|
const cols = [
|
|
'#292f56',
|
|
'#492d73',
|
|
'#8c2f94',
|
|
'#b62d78',
|
|
'#d82d31',
|
|
'#e69541',
|
|
'#ecf157',
|
|
'#acfa70',
|
|
];
|
|
function randColor() {
|
|
return cols[i++ % cols.length];
|
|
}
|
|
|
|
return runDocTest(function (doc) {
|
|
doc.font('tests/fonts/Roboto-Regular.ttf');
|
|
for (let i = -360; i < 360; i += 5) {
|
|
const withLabel = i % 45 === 0;
|
|
const margin = i < 0 ? ' ' : ' ';
|
|
let text = `—————————> ${withLabel ? `${margin}${i}` : ''}`;
|
|
|
|
if (withLabel) {
|
|
const bounds = doc.boundsOfString(text, 200, 200, { rotation: i });
|
|
doc
|
|
.save()
|
|
.rect(bounds.x, bounds.y, bounds.width, bounds.height)
|
|
.stroke(randColor())
|
|
.restore();
|
|
}
|
|
|
|
doc
|
|
.save()
|
|
.fill(withLabel ? 'red' : 'black')
|
|
.text(text, 200, 200, { rotation: i })
|
|
.restore();
|
|
}
|
|
doc.save().circle(200, 200, 1).fill('blue').restore();
|
|
});
|
|
});
|
|
});
|