Skip to content

Instantly share code, notes, and snippets.

@nchaulet
Last active August 29, 2015 14:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nchaulet/a6d41c259d3a8048b49d to your computer and use it in GitHub Desktop.
Save nchaulet/a6d41c259d3a8048b49d to your computer and use it in GitHub Desktop.
Parse docx
{
"filename":"test.docx",
"content":"Tuto : des bouteilles en verre relookées en vases muraux design \n\n\n\nMon premier met des milliers d’années à se décomposer dans la nature, mon deuxième est particulièrement encombrant pour les ordures, je suis, je suis… Bon, d’accord, le titre de l’article a peut-être vendu la mèche un peu trop vite ! Aujourd’hui, c’est bien au verre que l’on va s’intéresser avec une idée très originale pour recycler ses bouteilles vides. \n\n\n\n<h2>Le matériel </h2>\n\n\n\n- un tasseau en bois de 50 cm de long et d’au moins 2 cm d’épaisseur (privilégiez du bois dur comme du hêtre) ;\n\n- deux bouteilles en verre ;\n\n- une scie ; \n\n- une perceuse électrique ;\n\n- des mèches à bois, béton et placo ; \n\n- un tournevis ;\n\n- deux pinces ressort en acier 23-29 mm ;\n\n- deux petites équerres de renfort en acier ;\n\n- 2 vis à bois d’environ 2 cm ;\n\n- 6 vis à bois d’environ 0,3 mm de moins que l’épaisseur du tasseau ;\n\n- 4 vis à bois d’environ 5 cm ;\n\n- 4 vis d’environ 5 cm avec des chevilles adaptées à votre mur ;\n\n- un crayon.\n\n\n\nBudget : environ 20 € pour le bois, les vis et les équerres. \n\n\n\n[[image:1.jpeg]]\n\n\n\n<h2>Les étapes </h2>\n\n\n\nEtape 1\n\n\n\nCommencez par découper le tasseau de bois en deux morceaux de 15 cm et deux morceaux de 8 cm à l’aide d’une scie. Ceux-ci vont servir à réaliser les appliques.\n\n\n\n[[image:2.jpeg]]\n\n\n\nEtape 2\n\n\n\nFormez deux lettres L à l’envers avec les tasseaux afin de créer des équerres auxquelles seront attachées les bouteilles. Positionnez la base horizontale sur le dessus et fixez-la à l’autre partie avec deux vis comme sur la photo ci-dessous. Si vous utilisez du bois dur comme du hêtre, pensez à percer un pré-trou avec une mèche très fine afin de faciliter le vissage et de ne pas fendre le bois. Si vous utilisez un bois tendre comme du pin, nous vous conseillons de solidifier la structure en ajoutant des petites équerres en acier comme sur la photo ci-dessous.\n\n\n\nNotre astuce : si les vis sont difficiles à visser, frottez-les sur une bougie avant de visser.\n\n\n\n[[image:3.jpeg]]\n\n\n\n[[image:4.jpeg]]\n\nEtape 3 \n\n\n\nPréparez le mur d’accueil de vos futures appliques en perçant des trous pour les chevilles avec une perceuse électrique. Appliquez ensuite les équerres en bois en veillant à ce qu’elles soient parfaitement parallèles. Attention à ne surtout pas trop serrer la vis entre les pinces ressorts et les équerres, au risque de les casser. En effet, il est indispensable de laisser un peu de jeu afin de ne pas augmenter la tension maximale lorsque vous fixerez les bouteilles. La base de la pince ressort ne doit pas être à plat mais doit garder la même forme que lorsqu’elle est détachée. \n\n\n\n[[image:5.jpeg]]\n\n\n\nEtape 4\n\n\n\nNous y sommes presque, il ne vous reste plus qu’à accrocher deux bouteilles en verre afin de leur donner une deuxième vie ! Ajoutez-y un fond d’eau et vous aurez deux beaux vases muraux très originaux. \n\n\n\n[[image:6.jpeg]]\n\n\n\n[[image:7.jpeg]]\n\n<h2>Au final </h2>\n\n\n\nEnfin, laissez libre court à votre imagination pour décorer vos nouveaux vases. Notre idée : ajoutez-leur un nœud de corde, les nuances se marient très bien avec le bois et la verdure. \n\n\n\n[[image:8.jpeg]]\n\n"
}
npm install mammoth
var docxReader = require("mammoth/lib/docx/docx-reader");
var path = require('path');
var fs = require('fs');
var os = require('os').EOL;
// Config to modify
var imageOutputDir = 'images';
var postOutputDir = '.';
if (!fs.existsSync(imageOutputDir)) {
fs.mkdirSync(imageOutputDir);
}
var docxConverter = {
fileIndex: 1,
imageIndex: 1,
convertDoc: function(docPath) {
docxReader.read({path: docPath})
.then(function(documentResult) {
return documentResult.map(docxConverter.convertElementToRawText);
})
.then(function(result) {
var doc = {
filename: docPath,
content: result.value
};
fs.writeFileSync(postOutputDir + '/article' + docxConverter.fileIndex.toString() + '.json', JSON.stringify(doc), {
flag: 'w'
});
docxConverter.fileIndex++;
});
},
convertElementToRawText: function(element) {
if (element.type === "text") {
return element.value;
} else if (element.type == 'image') {
var extension = element.contentType.split("/")[1];
var filename = docxConverter.imageIndex.toString() + "." + extension;
docxConverter.saveImage(element, filename);
docxConverter.imageIndex++;
return '[[image:' + filename + ']]';
} else {
var tail = element.type === "paragraph" ? "\n\n" : "";
return (element.children || []).map(docxConverter.convertElementToRawText).join("") + tail;
}
},
saveImage: function(element, filename) {
return element.read().then(function(imageBuffer) {
var imagePath = path.join(imageOutputDir, filename);
fs.writeFileSync(imagePath, imageBuffer);
});
}
};
// Launch conversion of test.docx file
docxConverter.convertDoc('test.docx');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment