{"id":534,"date":"2019-10-16T20:48:27","date_gmt":"2019-10-16T18:48:27","guid":{"rendered":"https:\/\/numa-bord.com\/miniblog\/?p=534"},"modified":"2019-10-16T20:48:59","modified_gmt":"2019-10-16T18:48:59","slug":"nodejs-et-expressjs-generer-des-pdf-contenant-des-tableaux-avec-pdfmake","status":"publish","type":"post","link":"https:\/\/numa-bord.com\/miniblog\/nodejs-et-expressjs-generer-des-pdf-contenant-des-tableaux-avec-pdfmake\/","title":{"rendered":"NodeJs et ExpressJs : G\u00e9n\u00e9rer des PDF contenant des tableaux avec pdfmake"},"content":{"rendered":"<p>Si l&rsquo;on souhaite g\u00e9n\u00e9rer des PDF \u00ab\u00a0riches\u00a0\u00bb sur un projet utilisant NodeJs et ExpressJs, en particulier des PDF affichant des tableaux, le plus simple est d&rsquo;utiliser <a href=\"http:\/\/pdfmake.org\">pdfmake<\/a>. On commence donc par installer la d\u00e9pendance :<\/p>\n<div class=\"codecolorer-container bash default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"bash codecolorer\">npm <span class=\"kw2\">install<\/span> pdfmake<\/div><\/div>\n<p>La suite est juste un exemple concret d&rsquo;utilisation sur une URL affichant directement le document PDF. Car je n&rsquo;ai pas trouv\u00e9 la documentation claire \u00e0 ce sujet. Une fois que vous avez cette base il devient simple de mettre en page les \u00e9l\u00e9ments comme on le souhaite en utilisant les <a href=\"http:\/\/pdfmake.org\/playground.html\">exemples de la documentation<\/a><\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\">router.<span class=\"kw1\">get<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'\/pdf'<\/span><span class=\"sy0\">,<\/span> <span class=\"kw1\">function<\/span> <span class=\"br0\">&#40;<\/span>req<span class=\"sy0\">,<\/span> res<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/on importe les font \u00e0 utiliser, voir https:\/\/pdfmake.github.io\/docs\/fonts\/standard-14-fonts\/ pour les font disponible par d\u00e9faut<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">var<\/span> fonts <span class=\"sy0\">=<\/span> <span class=\"br0\">&#123;<\/span>Helvetica<span class=\"sy0\">:<\/span> <span class=\"br0\">&#123;<\/span>normal<span class=\"sy0\">:<\/span> <span class=\"st0\">'Helvetica'<\/span><span class=\"sy0\">,<\/span> bold<span class=\"sy0\">:<\/span> <span class=\"st0\">'Helvetica-Bold'<\/span><span class=\"sy0\">,<\/span> italics<span class=\"sy0\">:<\/span> <span class=\"st0\">'Helvetica-Oblique'<\/span><span class=\"sy0\">,<\/span> bolditalics<span class=\"sy0\">:<\/span> <span class=\"st0\">'Helvetica-BoldOblique'<\/span><span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span> <span class=\"br0\">&#125;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/exemple de contenu du PDF<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">var<\/span> dd <span class=\"sy0\">=<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/les differents contenus<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; content<span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/en premier 2 colonnes contenant une imag et un texte<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; columns<span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#123;<\/span>image<span class=\"sy0\">:<\/span> <span class=\"st0\">'.\/chemin\/vers\/mon-image.jpg'<\/span><span class=\"sy0\">,<\/span> width<span class=\"sy0\">:<\/span> <span class=\"nu0\">100<\/span><span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><span class=\"co1\">\/\/attention si l'image n'existe pas \u00e7a plante<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/un texte avec diff\u00e9rents style<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#123;<\/span>text<span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">'MON TITRE '<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#123;<\/span>text<span class=\"sy0\">:<\/span> <span class=\"st0\">'N\u00b0 999'<\/span><span class=\"sy0\">,<\/span> color<span class=\"sy0\">:<\/span> <span class=\"st0\">'red'<\/span><span class=\"br0\">&#125;<\/span><span class=\"co1\">\/\/on indique directement la prori\u00e9t\u00e9 de style color<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; style<span class=\"sy0\">:<\/span> <span class=\"st0\">'titleStyle'<\/span><span class=\"co1\">\/\/style d\u00e9finis plus bas<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#93;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">'<span class=\"es0\">\\n<\/span><span class=\"es0\">\\n<\/span>'<\/span><span class=\"sy0\">,<\/span> <span class=\"co1\">\/\/sauts de ligne<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#123;<\/span>text<span class=\"sy0\">:<\/span> <span class=\"st0\">'titre du tableau'<\/span><span class=\"sy0\">,<\/span> style<span class=\"sy0\">:<\/span> <span class=\"st0\">'tableHeader'<\/span><span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#123;<\/span>style<span class=\"sy0\">:<\/span> <span class=\"st0\">'tableExample'<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; table<span class=\"sy0\">:<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; body<span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#91;<\/span><span class=\"br0\">&#123;<\/span>text<span class=\"sy0\">:<\/span> <span class=\"st0\">'titre de colonne 1'<\/span><span class=\"sy0\">,<\/span> style<span class=\"sy0\">:<\/span> <span class=\"st0\">'tableHeader'<\/span><span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span> <span class=\"br0\">&#123;<\/span>text<span class=\"sy0\">:<\/span> <span class=\"st0\">'titre de colonne 2'<\/span><span class=\"sy0\">,<\/span> style<span class=\"sy0\">:<\/span> <span class=\"st0\">'tableHeader'<\/span><span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span> <span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#91;<\/span><span class=\"st0\">'contenus de ma colonne'<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">'un autre contenu'<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#93;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/les diff\u00e9rents styles \u00e0 appliquer<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; styles<span class=\"sy0\">:<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; tableExample<span class=\"sy0\">:<\/span> <span class=\"br0\">&#123;<\/span>margin<span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><span class=\"nu0\">0<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">5<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">0<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">15<\/span><span class=\"br0\">&#93;<\/span><span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; tableHeader<span class=\"sy0\">:<\/span> <span class=\"br0\">&#123;<\/span>bold<span class=\"sy0\">:<\/span> <span class=\"kw2\">true<\/span><span class=\"sy0\">,<\/span> fontSize<span class=\"sy0\">:<\/span> <span class=\"nu0\">12<\/span><span class=\"sy0\">,<\/span> color<span class=\"sy0\">:<\/span> <span class=\"st0\">'black'<\/span><span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; titleStyle<span class=\"sy0\">:<\/span> <span class=\"br0\">&#123;<\/span>bold<span class=\"sy0\">:<\/span> <span class=\"kw2\">true<\/span><span class=\"sy0\">,<\/span> fontsize<span class=\"sy0\">:<\/span> <span class=\"nu0\">14<\/span><span class=\"sy0\">,<\/span> alignment<span class=\"sy0\">:<\/span> <span class=\"st0\">'right'<\/span><span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; defaultStyle<span class=\"sy0\">:<\/span> <span class=\"br0\">&#123;<\/span>font<span class=\"sy0\">:<\/span> <span class=\"st0\">'Helvetica'<\/span><span class=\"sy0\">,<\/span> columnGap<span class=\"sy0\">:<\/span> <span class=\"nu0\">20<\/span><span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/on apelle pdfmake<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">var<\/span> PdfPrinter <span class=\"sy0\">=<\/span> require<span class=\"br0\">&#40;<\/span><span class=\"st0\">'pdfmake\/src\/printer'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/avec les fonts \u00e0 utiliser<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">var<\/span> printer <span class=\"sy0\">=<\/span> <span class=\"kw1\">new<\/span> PdfPrinter<span class=\"br0\">&#40;<\/span>fonts<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/on passe notre contenu<\/span><br \/>\n&nbsp; &nbsp; let pdf <span class=\"sy0\">=<\/span> printer.<span class=\"me1\">createPdfKitDocument<\/span><span class=\"br0\">&#40;<\/span>dd<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/on termine et on envoie les bon headers<\/span><br \/>\n&nbsp; &nbsp; pdf.<span class=\"me1\">pipe<\/span><span class=\"br0\">&#40;<\/span>res<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; pdf.<span class=\"me1\">end<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; res.<span class=\"me1\">statusCode<\/span> <span class=\"sy0\">=<\/span> <span class=\"nu0\">200<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; res.<span class=\"me1\">setHeader<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'Content-type'<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">'application\/pdf'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Si l&rsquo;on souhaite g\u00e9n\u00e9rer des PDF \u00ab\u00a0riches\u00a0\u00bb sur un projet utilisant NodeJs et ExpressJs, en particulier des PDF affichant des tableaux, le plus simple est d&rsquo;utiliser pdfmake. On commence donc par installer la d\u00e9pendance : npm install pdfmake La suite est juste un exemple concret d&rsquo;utilisation sur une URL affichant directement le document PDF. Car [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[2,21,18],"tags":[],"class_list":["post-534","post","type-post","status-publish","format-standard","hentry","category-developpement","category-expressjs","category-nodejs"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>NodeJs et ExpressJs : G\u00e9n\u00e9rer des PDF contenant des tableaux avec pdfmake - Pense b\u00eate d&#039;un d\u00e9veloppeur web<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/numa-bord.com\/miniblog\/nodejs-et-expressjs-generer-des-pdf-contenant-des-tableaux-avec-pdfmake\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"NodeJs et ExpressJs : G\u00e9n\u00e9rer des PDF contenant des tableaux avec pdfmake - Pense b\u00eate d&#039;un d\u00e9veloppeur web\" \/>\n<meta property=\"og:description\" content=\"Si l&rsquo;on souhaite g\u00e9n\u00e9rer des PDF \u00ab\u00a0riches\u00a0\u00bb sur un projet utilisant NodeJs et ExpressJs, en particulier des PDF affichant des tableaux, le plus simple est d&rsquo;utiliser pdfmake. On commence donc par installer la d\u00e9pendance : npm install pdfmake La suite est juste un exemple concret d&rsquo;utilisation sur une URL affichant directement le document PDF. Car [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/numa-bord.com\/miniblog\/nodejs-et-expressjs-generer-des-pdf-contenant-des-tableaux-avec-pdfmake\/\" \/>\n<meta property=\"og:site_name\" content=\"Pense b\u00eate d&#039;un d\u00e9veloppeur web\" \/>\n<meta property=\"article:published_time\" content=\"2019-10-16T18:48:27+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-10-16T18:48:59+00:00\" \/>\n<meta name=\"author\" content=\"Numa\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Numa\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/numa-bord.com\/miniblog\/nodejs-et-expressjs-generer-des-pdf-contenant-des-tableaux-avec-pdfmake\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/numa-bord.com\/miniblog\/nodejs-et-expressjs-generer-des-pdf-contenant-des-tableaux-avec-pdfmake\/\"},\"author\":{\"name\":\"Numa\",\"@id\":\"https:\/\/numa-bord.com\/miniblog\/#\/schema\/person\/f9d00acd1703f17e5a6895283eb46a7e\"},\"headline\":\"NodeJs et ExpressJs : G\u00e9n\u00e9rer des PDF contenant des tableaux avec pdfmake\",\"datePublished\":\"2019-10-16T18:48:27+00:00\",\"dateModified\":\"2019-10-16T18:48:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/numa-bord.com\/miniblog\/nodejs-et-expressjs-generer-des-pdf-contenant-des-tableaux-avec-pdfmake\/\"},\"wordCount\":327,\"commentCount\":0,\"articleSection\":[\"D\u00e9veloppement\",\"ExpressJs\",\"NodeJs\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/numa-bord.com\/miniblog\/nodejs-et-expressjs-generer-des-pdf-contenant-des-tableaux-avec-pdfmake\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/numa-bord.com\/miniblog\/nodejs-et-expressjs-generer-des-pdf-contenant-des-tableaux-avec-pdfmake\/\",\"url\":\"https:\/\/numa-bord.com\/miniblog\/nodejs-et-expressjs-generer-des-pdf-contenant-des-tableaux-avec-pdfmake\/\",\"name\":\"NodeJs et ExpressJs : G\u00e9n\u00e9rer des PDF contenant des tableaux avec pdfmake - Pense b\u00eate d&#039;un d\u00e9veloppeur web\",\"isPartOf\":{\"@id\":\"https:\/\/numa-bord.com\/miniblog\/#website\"},\"datePublished\":\"2019-10-16T18:48:27+00:00\",\"dateModified\":\"2019-10-16T18:48:59+00:00\",\"author\":{\"@id\":\"https:\/\/numa-bord.com\/miniblog\/#\/schema\/person\/f9d00acd1703f17e5a6895283eb46a7e\"},\"breadcrumb\":{\"@id\":\"https:\/\/numa-bord.com\/miniblog\/nodejs-et-expressjs-generer-des-pdf-contenant-des-tableaux-avec-pdfmake\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/numa-bord.com\/miniblog\/nodejs-et-expressjs-generer-des-pdf-contenant-des-tableaux-avec-pdfmake\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/numa-bord.com\/miniblog\/nodejs-et-expressjs-generer-des-pdf-contenant-des-tableaux-avec-pdfmake\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/numa-bord.com\/miniblog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"NodeJs et ExpressJs : G\u00e9n\u00e9rer des PDF contenant des tableaux avec pdfmake\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/numa-bord.com\/miniblog\/#website\",\"url\":\"https:\/\/numa-bord.com\/miniblog\/\",\"name\":\"Pense b\u00eate d&#039;un d\u00e9veloppeur web\",\"description\":\"(php, javascript, Symfony, Wordpress....)\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/numa-bord.com\/miniblog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/numa-bord.com\/miniblog\/#\/schema\/person\/f9d00acd1703f17e5a6895283eb46a7e\",\"name\":\"Numa\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/f21d1af4658a7106211915940584534c1e0b3eef3f12eb67a697686cad70b64a?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f21d1af4658a7106211915940584534c1e0b3eef3f12eb67a697686cad70b64a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f21d1af4658a7106211915940584534c1e0b3eef3f12eb67a697686cad70b64a?s=96&d=mm&r=g\",\"caption\":\"Numa\"},\"url\":\"https:\/\/numa-bord.com\/miniblog\/author\/negonner\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"NodeJs et ExpressJs : G\u00e9n\u00e9rer des PDF contenant des tableaux avec pdfmake - Pense b\u00eate d&#039;un d\u00e9veloppeur web","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/numa-bord.com\/miniblog\/nodejs-et-expressjs-generer-des-pdf-contenant-des-tableaux-avec-pdfmake\/","og_locale":"fr_FR","og_type":"article","og_title":"NodeJs et ExpressJs : G\u00e9n\u00e9rer des PDF contenant des tableaux avec pdfmake - Pense b\u00eate d&#039;un d\u00e9veloppeur web","og_description":"Si l&rsquo;on souhaite g\u00e9n\u00e9rer des PDF \u00ab\u00a0riches\u00a0\u00bb sur un projet utilisant NodeJs et ExpressJs, en particulier des PDF affichant des tableaux, le plus simple est d&rsquo;utiliser pdfmake. On commence donc par installer la d\u00e9pendance : npm install pdfmake La suite est juste un exemple concret d&rsquo;utilisation sur une URL affichant directement le document PDF. Car [&hellip;]","og_url":"https:\/\/numa-bord.com\/miniblog\/nodejs-et-expressjs-generer-des-pdf-contenant-des-tableaux-avec-pdfmake\/","og_site_name":"Pense b\u00eate d&#039;un d\u00e9veloppeur web","article_published_time":"2019-10-16T18:48:27+00:00","article_modified_time":"2019-10-16T18:48:59+00:00","author":"Numa","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"Numa","Dur\u00e9e de lecture estim\u00e9e":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/numa-bord.com\/miniblog\/nodejs-et-expressjs-generer-des-pdf-contenant-des-tableaux-avec-pdfmake\/#article","isPartOf":{"@id":"https:\/\/numa-bord.com\/miniblog\/nodejs-et-expressjs-generer-des-pdf-contenant-des-tableaux-avec-pdfmake\/"},"author":{"name":"Numa","@id":"https:\/\/numa-bord.com\/miniblog\/#\/schema\/person\/f9d00acd1703f17e5a6895283eb46a7e"},"headline":"NodeJs et ExpressJs : G\u00e9n\u00e9rer des PDF contenant des tableaux avec pdfmake","datePublished":"2019-10-16T18:48:27+00:00","dateModified":"2019-10-16T18:48:59+00:00","mainEntityOfPage":{"@id":"https:\/\/numa-bord.com\/miniblog\/nodejs-et-expressjs-generer-des-pdf-contenant-des-tableaux-avec-pdfmake\/"},"wordCount":327,"commentCount":0,"articleSection":["D\u00e9veloppement","ExpressJs","NodeJs"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/numa-bord.com\/miniblog\/nodejs-et-expressjs-generer-des-pdf-contenant-des-tableaux-avec-pdfmake\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/numa-bord.com\/miniblog\/nodejs-et-expressjs-generer-des-pdf-contenant-des-tableaux-avec-pdfmake\/","url":"https:\/\/numa-bord.com\/miniblog\/nodejs-et-expressjs-generer-des-pdf-contenant-des-tableaux-avec-pdfmake\/","name":"NodeJs et ExpressJs : G\u00e9n\u00e9rer des PDF contenant des tableaux avec pdfmake - Pense b\u00eate d&#039;un d\u00e9veloppeur web","isPartOf":{"@id":"https:\/\/numa-bord.com\/miniblog\/#website"},"datePublished":"2019-10-16T18:48:27+00:00","dateModified":"2019-10-16T18:48:59+00:00","author":{"@id":"https:\/\/numa-bord.com\/miniblog\/#\/schema\/person\/f9d00acd1703f17e5a6895283eb46a7e"},"breadcrumb":{"@id":"https:\/\/numa-bord.com\/miniblog\/nodejs-et-expressjs-generer-des-pdf-contenant-des-tableaux-avec-pdfmake\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/numa-bord.com\/miniblog\/nodejs-et-expressjs-generer-des-pdf-contenant-des-tableaux-avec-pdfmake\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/numa-bord.com\/miniblog\/nodejs-et-expressjs-generer-des-pdf-contenant-des-tableaux-avec-pdfmake\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/numa-bord.com\/miniblog\/"},{"@type":"ListItem","position":2,"name":"NodeJs et ExpressJs : G\u00e9n\u00e9rer des PDF contenant des tableaux avec pdfmake"}]},{"@type":"WebSite","@id":"https:\/\/numa-bord.com\/miniblog\/#website","url":"https:\/\/numa-bord.com\/miniblog\/","name":"Pense b\u00eate d&#039;un d\u00e9veloppeur web","description":"(php, javascript, Symfony, Wordpress....)","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/numa-bord.com\/miniblog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Person","@id":"https:\/\/numa-bord.com\/miniblog\/#\/schema\/person\/f9d00acd1703f17e5a6895283eb46a7e","name":"Numa","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/secure.gravatar.com\/avatar\/f21d1af4658a7106211915940584534c1e0b3eef3f12eb67a697686cad70b64a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f21d1af4658a7106211915940584534c1e0b3eef3f12eb67a697686cad70b64a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f21d1af4658a7106211915940584534c1e0b3eef3f12eb67a697686cad70b64a?s=96&d=mm&r=g","caption":"Numa"},"url":"https:\/\/numa-bord.com\/miniblog\/author\/negonner\/"}]}},"_links":{"self":[{"href":"https:\/\/numa-bord.com\/miniblog\/wp-json\/wp\/v2\/posts\/534","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/numa-bord.com\/miniblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/numa-bord.com\/miniblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/numa-bord.com\/miniblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/numa-bord.com\/miniblog\/wp-json\/wp\/v2\/comments?post=534"}],"version-history":[{"count":3,"href":"https:\/\/numa-bord.com\/miniblog\/wp-json\/wp\/v2\/posts\/534\/revisions"}],"predecessor-version":[{"id":539,"href":"https:\/\/numa-bord.com\/miniblog\/wp-json\/wp\/v2\/posts\/534\/revisions\/539"}],"wp:attachment":[{"href":"https:\/\/numa-bord.com\/miniblog\/wp-json\/wp\/v2\/media?parent=534"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/numa-bord.com\/miniblog\/wp-json\/wp\/v2\/categories?post=534"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/numa-bord.com\/miniblog\/wp-json\/wp\/v2\/tags?post=534"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}