UNPKG

spider-officegen

Version:

Office Open XML Generator using Node.js streams. Supporting Microsoft Office 2007 and later Word (docx), PowerPoint (pptx,ppsx) and Excel (xlsx). This module is for all frameworks and environments. No need for any commandline tool - this module is doing e

188 lines (139 loc) 4.49 kB
var async = require ( 'async' ); var officegen = require('../'); var fs = require('fs'); var path = require('path'); var themeXml = fs.readFileSync ( path.resolve ( __dirname, 'themes/testTheme.xml' ), 'utf8' ); var docx = officegen ( { type: 'docx', orientation: 'portrait', pageMargins: { top: 1000, left: 1000, bottom: 1000, right: 1000 } // The theme support is NOT working yet... // themeXml: themeXml } ); // Remove this comment in case of debugging Officegen: // officegen.setVerboseMode ( true ); docx.on ( 'error', function ( err ) { console.log ( err ); }); var pObj = docx.createP (); pObj.addText ( 'Simple' ); pObj.addText ( ' with color', { color: '000088' } ); pObj.addText ( ' and back color.', { color: '00ffff', back: '000088' } ); var pObj = docx.createP (); pObj.addText ( 'Since ' ); pObj.addText ( 'officegen 0.2.12', { back: '00ffff', shdType: 'pct12', shdColor: 'ff0000' } ); // Use pattern in the background. pObj.addText ( ' you can do ' ); pObj.addText ( 'more cool ', { highlight: true } ); // Highlight! pObj.addText ( 'stuff!', { highlight: 'darkGreen' } ); // Different highlight color. var pObj = docx.createP (); pObj.addText ('Even add '); pObj.addText ('external link', { link: 'https://github.com' }); pObj.addText ('!'); var pObj = docx.createP (); pObj.addText ( 'Bold + underline', { bold: true, underline: true } ); var pObj = docx.createP ( { align: 'center' } ); pObj.addText ( 'Center this text', { border: 'dotted', borderSize: 12, borderColor: '88CCFF' } ); var pObj = docx.createP (); pObj.options.align = 'right'; pObj.addText ( 'Align this text to the right.' ); var pObj = docx.createP (); pObj.addText ( 'Those two lines are in the same paragraph,' ); pObj.addLineBreak (); pObj.addText ( 'but they are separated by a line break.' ); docx.putPageBreak (); var pObj = docx.createP (); pObj.addText ( 'Fonts face only.', { font_face: 'Arial' } ); pObj.addText ( ' Fonts face and size.', { font_face: 'Arial', font_size: 40 } ); docx.putPageBreak (); var pObj = docx.createP (); pObj.addImage ( path.resolve(__dirname, 'images_for_examples/image3.png' ) ); docx.putPageBreak (); var pObj = docx.createP (); pObj.addImage ( path.resolve(__dirname, 'images_for_examples/image1.png' ) ); var pObj = docx.createP (); pObj.addImage ( path.resolve(__dirname, 'images_for_examples/sword_001.png' ) ); pObj.addImage ( path.resolve(__dirname, 'images_for_examples/sword_002.png' ) ); pObj.addImage ( path.resolve(__dirname, 'images_for_examples/sword_003.png' ) ); pObj.addText ( '... some text here ...', { font_face: 'Arial' } ); pObj.addImage ( path.resolve(__dirname, 'images_for_examples/sword_004.png' ) ); var pObj = docx.createP (); pObj.addImage ( path.resolve(__dirname, 'images_for_examples/image1.png' ) ); docx.putPageBreak (); var pObj = docx.createListOfNumbers (); pObj.addText ( 'Option 1' ); var pObj = docx.createListOfNumbers (); pObj.addText ( 'Option 2' ); pObj.addHorizontalLine (); var pObj = docx.createP ({ backline: 'E0E0E0' }); pObj.addText ( 'Backline text1' ); pObj.addText ( ' text2' ); var table = [ [{ val: "No.", opts: { cellColWidth: 4261, b:true, sz: '48', shd: { fill: "7F7F7F", themeFill: "text1", "themeFillTint": "80" }, fontFamily: "Avenir Book" } },{ val: "Title1", opts: { b:true, color: "A00000", align: "right", shd: { fill: "92CDDC", themeFill: "text1", "themeFillTint": "80" } } },{ val: "Title2", opts: { align: "center", cellColWidth: 42, b:true, sz: '48', shd: { fill: "92CDDC", themeFill: "text1", "themeFillTint": "80" } } }], [1,'All grown-ups were once children',''], [2,'there is no harm in putting off a piece of work until another day.',''], [3,'But when it is a matter of baobabs, that always means a catastrophe.',''], [4,'watch out for the baobabs!','END'], ] var tableStyle = { tableColWidth: 4261, tableSize: 24, tableColor: "ada", tableAlign: "left", tableFontFamily: "Comic Sans MS" } var pObj = docx.createTable (table, tableStyle); var out = fs.createWriteStream ( 'tmp/out.docx' ); out.on ( 'error', function ( err ) { console.log ( err ); }); async.parallel ([ function ( done ) { out.on ( 'close', function () { console.log ( 'Finish to create a DOCX file.' ); done ( null ); }); docx.generate ( out ); } ], function ( err ) { if ( err ) { console.log ( 'error: ' + err ); } // Endif. });