MediaWiki:CardToDocx.js: mudanças entre as edições

De Wikincat
Ir para navegação Ir para pesquisar
Conteúdo deletado Conteúdo adicionado
Sem resumo de edição
Sem resumo de edição
 
(Uma revisão intermediária pelo mesmo usuário não está sendo mostrada)
Linha 1: Linha 1:
/* jshint esversion: 10 */
"use strict";
function Export2Docx() {
function Export2Docx() {
let decodeEntities = (function () {
const decodeEntities = (function () {
// https://stackoverflow.com/questions/5796718/html-entity-decode
// https://stackoverflow.com/questions/5796718/
// this prevents any overhead from creating the object each time
// this prevents any overhead from creating the object each time
let element = document.createElement("div");
const element = document.createElement('div');


function decodeHTMLEntities(str) {
function decodeHTMLEntities(str) {
if (str && typeof str === "string") {
let string = str;
if (str && typeof str === 'string') {
// strip script/html tags
str = str.replace(/<script[^>]*>([\S\s]*?)<\/script>/gmi, "");
// strip script/html tags
str = str.replace(/<\/?\w(?:[^"'>]|"[^"]*"|'[^']*')*>/gmi, "");
string = string.replace(/<script[^>]*>([\S\s]*?)<\/script>/gim, '');
string = string.replace(/<\/?\w(?:[^"'>]|"[^"]*"|'[^']*')*>/gim, '');
// add by jaideraf:
// add by jaideraf:
str = str.replace(/&nbsp;/g, String.fromCharCode(32));
string = str.replace(/&nbsp;/g, String.fromCharCode(32));
element.innerHTML = str;
str = element.textContent;
element.innerHTML = str;
element.textContent = "";
string = element.textContent;
}
element.textContent = '';
}


return str;
return string;
}
}


return decodeHTMLEntities;
return decodeHTMLEntities;
})();
})();


// Create document
// Create document
const doc = new Document({
const doc = new Document({
creator: "Wikincat",
creator: 'Wikincat',
title: "Ficha catalográfica",
title: 'Ficha catalográfica',
description: "Ficha catalográfica gerada pelo Wikincat"
description: 'Ficha catalográfica gerada pelo Wikincat',
});
});


let card = document.getElementById("card");
const card = document.getElementById('card');
let p = card.getElementsByTagName("p");
const p = card.getElementsByTagName('p');


doc
doc.createParagraph(document.getElementById("cipParagraph").textContent).center();
.createParagraph(document.getElementById('cipParagraph').textContent)
.center();


const borderParagraphStartCard = new Paragraph("").createBorder();
const borderParagraphStartCard = new Paragraph('').createBorder();
borderParagraphStartCard.Borders.addBottomBorder();
borderParagraphStartCard.Borders.addBottomBorder();
doc.addParagraph(borderParagraphStartCard);
doc.addParagraph(borderParagraphStartCard);


doc.createParagraph("");
doc.createParagraph('');


doc.createParagraph(decodeEntities(p[0].textContent)); // 1XX
doc.createParagraph(decodeEntities(p[0].textContent)); // 1XX
doc.createParagraph("");
doc.createParagraph('');


let arrayP1 = p[1].innerHTML.split("<br>"); // 24X
const arrayP1 = p[1].innerHTML.split('<br>'); // 24X
arrayP1.forEach((item) => {
arrayP1.forEach((item) => {
doc.createParagraph(decodeEntities(item));
doc.createParagraph(decodeEntities(item));
});
});


doc.createParagraph("");
doc.createParagraph('');


let arrayP2 = p[2].innerHTML.split("<br>");
const arrayP2 = p[2].innerHTML.split('<br>');
arrayP2.forEach((item) => {
arrayP2.forEach((item) => {
doc.createParagraph(decodeEntities(item));
doc.createParagraph(decodeEntities(item));
});
});


doc.createParagraph("");
doc.createParagraph('');
doc.createParagraph(decodeEntities(p[3].textContent)); // Track
doc.createParagraph(decodeEntities(p[3].textContent)); // Track
doc.createParagraph("");
doc.createParagraph('');


if (p[4] !== undefined) {
if (p[4] !== undefined) {
let arrayP4 = p[4].innerHTML.split("<br>");
const arrayP4 = p[4].innerHTML.split('<br>');
arrayP4.forEach((item) => {
arrayP4.forEach((item) => {
doc.createParagraph(decodeEntities(item)).right();
doc.createParagraph(decodeEntities(item)).right();
});
});
}
}


doc.createParagraph("");
doc.createParagraph('');


const borderParagraphEndCard = new Paragraph("").createBorder();
const borderParagraphEndCard = new Paragraph('').createBorder();
borderParagraphEndCard.Borders.addTopBorder();
borderParagraphEndCard.Borders.addTopBorder();
doc.addParagraph(borderParagraphEndCard);
doc.addParagraph(borderParagraphEndCard);


doc.createParagraph(document.getElementById("credit").textContent).center();
doc.createParagraph(document.getElementById('credit').textContent).center();


// Used to export the file into a .docx file
// Used to export the file into a .docx file
const packer = new Packer();
const packer = new Packer();


packer.toBlob(doc).then(blob => {
packer.toBlob(doc).then((blob) => {
console.log(blob);
saveAs(blob, 'Ficha.docx');
// console.log( "Documento criado com sucesso" );
saveAs(blob, "Ficha.docx");
});
//console.log( "Documento criado com sucesso" );
});
}
}

Edição atual tal como às 13h40min de 21 de abril de 2024

/* jshint esversion: 10 */
function Export2Docx() {
  const decodeEntities = (function () {
    // https://stackoverflow.com/questions/5796718/
    // this prevents any overhead from creating the object each time
    const element = document.createElement('div');

    function decodeHTMLEntities(str) {
      let string = str;
      if (str && typeof str === 'string') {
        // strip script/html tags
        string = string.replace(/<script[^>]*>([\S\s]*?)<\/script>/gim, '');
        string = string.replace(/<\/?\w(?:[^"'>]|"[^"]*"|'[^']*')*>/gim, '');
        // add by jaideraf:
        string = str.replace(/&nbsp;/g, String.fromCharCode(32));
        element.innerHTML = str;
        string = element.textContent;
        element.textContent = '';
      }

      return string;
    }

    return decodeHTMLEntities;
  })();

  // Create document
  const doc = new Document({
    creator: 'Wikincat',
    title: 'Ficha catalográfica',
    description: 'Ficha catalográfica gerada pelo Wikincat',
  });

  const card = document.getElementById('card');
  const p = card.getElementsByTagName('p');

  doc
    .createParagraph(document.getElementById('cipParagraph').textContent)
    .center();

  const borderParagraphStartCard = new Paragraph('').createBorder();
  borderParagraphStartCard.Borders.addBottomBorder();
  doc.addParagraph(borderParagraphStartCard);

  doc.createParagraph('');

  doc.createParagraph(decodeEntities(p[0].textContent)); // 1XX
  doc.createParagraph('');

  const arrayP1 = p[1].innerHTML.split('<br>'); // 24X
  arrayP1.forEach((item) => {
    doc.createParagraph(decodeEntities(item));
  });

  doc.createParagraph('');

  const arrayP2 = p[2].innerHTML.split('<br>');
  arrayP2.forEach((item) => {
    doc.createParagraph(decodeEntities(item));
  });

  doc.createParagraph('');
  doc.createParagraph(decodeEntities(p[3].textContent)); // Track
  doc.createParagraph('');

  if (p[4] !== undefined) {
    const arrayP4 = p[4].innerHTML.split('<br>');
    arrayP4.forEach((item) => {
      doc.createParagraph(decodeEntities(item)).right();
    });
  }

  doc.createParagraph('');

  const borderParagraphEndCard = new Paragraph('').createBorder();
  borderParagraphEndCard.Borders.addTopBorder();
  doc.addParagraph(borderParagraphEndCard);

  doc.createParagraph(document.getElementById('credit').textContent).center();

  // Used to export the file into a .docx file
  const packer = new Packer();

  packer.toBlob(doc).then((blob) => {
    saveAs(blob, 'Ficha.docx');
    // console.log( "Documento criado com sucesso" );
  });
}