DefinitelyTyped/types/pdfkit/pdfkit-tests.ts

191 lines
4.0 KiB
TypeScript

import PDFGradient = require('pdfkit/js/gradient');
var PDFRadialGradiant = PDFGradient.PDFRadialGradiant;
var PDFLinearGradient = PDFGradient.PDFLinearGradient;
import mtext = require('pdfkit/js/mixins/text');
import PDFDocument = require('pdfkit');
import font = require('pdfkit/js/mixins/fonts');
import pdfData = require('pdfkit/js/data');
import text = require('pdfkit/js/mixins/text');
font.registerFont('Arial');
text.widthOfString('Kila', { ellipsis: true });
var doc = new PDFDocument({ compress: false, size: [526, 525], autoFirstPage: true });
doc.addPage({
margin: 50,
});
doc.addPage({
margins: {
top: 50,
bottom: 50,
left: 72,
right: 72,
},
});
doc.addPage({
layout: 'landscape',
});
doc.info.Title = 'Sample';
doc.info.Author = 'kila Mogrosso';
// Create basic shapes
doc.moveTo(0, 20)
.lineTo(100, 160)
.quadraticCurveTo(130, 200, 150, 120)
.lineTo(400, 90)
.strokeColor([255, 0, 0], 1)
.strokeColor([255, 0, 0])
.stroke();
//SVG Paths
doc.path('M 0,20 L 100,160 Q 130,200 150,120 C 190,-40 200,200 300,150 L 400,90').stroke();
//Rectangle shape helper sample
doc.rect(100, 200, 100, 100);
// Rounded rectangle
doc.roundedRect(150, 250, 150, 150, 10);
//polygon
doc.polygon([100, 0], [50, 100], [50, 100]);
doc.lineWidth(25);
doc.lineCap('butt')
.moveTo(50, 20)
.lineTo(100, 20)
.stroke();
doc.lineCap('round')
.moveTo(150, 20)
.lineTo(200, 20)
.stroke();
doc.lineCap('square')
.moveTo(250, 20)
.circle(275, 30, 15)
.stroke();
doc.lineJoin('miter')
.rect(50, 100, 50, 50)
.stroke();
doc.lineJoin('round')
.rect(150, 100, 50, 50)
.stroke();
doc.lineJoin('bevel')
.rect(250, 100, 50, 50)
.stroke();
doc.circle(100, 50, 50)
.lineWidth(3)
.fillOpacity(0.8)
.fillAndStroke('red', '#900');
var grad = doc
.linearGradient(50, 0, 150, 100)
.stop(0, 'green')
.stop(1, 'red');
doc.rect(50, 0, 100, 100).fill(grad);
doc.rect(150, 0, 25, 25).fill();
doc.circle(100, 50, 50)
.dash(5, {
space: 10,
})
.stroke();
var rgrad = doc.radialGradient(300, 50, 0, 300, 50, 50);
rgrad.stop(0, 'orange', 0).stop(1, 'orange', 1);
doc.circle(300, 50, 50).fill(rgrad);
doc.fillColor('red')
.translate(-100, -50)
.scale(0.8);
doc.path('M 250,75 L 323,301 131,161 369,161 177,301 z').fill('non-zero');
doc.translate(280, 0)
.path('M 250,75 L 323,301 131,161 369,161 177,301 z')
.fill('even-odd');
doc.circle(100, 100, 100).clip();
doc.fontSize(25)
.fillColor('blue')
.text('This is a link!', 20, 0);
var width = doc.widthOfString('This is a link!');
var height = doc.currentLineHeight();
doc.underline(20, 0, width, height, {
color: 'blue',
}).link(20, 0, width, height, 'http://google.com/');
doc.moveDown()
.fillColor('black')
.highlight(20, doc.y, doc.widthOfString('This text is highlighted!'), height)
.text('This text is highlighted!');
doc.moveDown()
.strike(20, doc.y, doc.widthOfString('STRIKE!'), height)
.text('STRIKE!');
doc.image('images/test.jpeg', 0, 15, {
width: 300,
}).text('Proprotional to width', 0, 0);
doc.image('images/test.jpeg', 320, 15, {
fit: [100, 100],
})
.rect(320, 15, 100, 100)
.stroke()
.text('Fit', 320, 0);
doc.image('images/test.jpeg', 320, 145, {
width: 200,
height: 100,
}).text('Stretch', 320, 130);
doc.image('images/test.jpeg', 320, 280, {
scale: 0.25,
}).text('Scale', 320, 265);
doc.image(
{
/* something like a buffer */
},
{
scale: 0.25,
},
).text('Scale', 320, 265);
doc.text('Scale', { align: 'justify' });
doc.text('Baseline - string literal', { baseline: 'alphabetic' });
doc.text('Baseline - numeric', { baseline: 10 });
doc.goTo(0, 0, 0, 0, 'lorem');
doc.image('path/to/image.png', {
fit: [250, 300],
align: 'center',
valign: 'center',
});
doc.image('path/to/image.png', {
cover: [250, 300],
});
doc.image('path/to/image.png', {
link: {},
goTo: {},
destination: 'lorem',
});