您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Reader for the Italian Electronic Invoice (Fattura Elettronica) xml files
// ==UserScript== // @name FatturaElettronica Styling // @description Reader for the Italian Electronic Invoice (Fattura Elettronica) xml files // @namespace 3v1n0.net // @version 0.6 // @include /^[A-z0-9]+:\/\/.*\/(IT([0-9]{11}|[0-9A-z]{11,16})|[A-Z]{2}[0-9A-z]{2,28})_[0-9A-z]{5}(_(RC|NS|MC|MT|EC|SE|NE|DT|AT)__?[0-9]{3})?\.xml(\.p7m)?$/ // @include /^[A-z0-9]+:\/\/.*\/Canonical Invoice.*\.xml$/ // @inject-into auto // // @grant GM_getResourceText // @resource sdi_ordinaria https://www.fatturapa.gov.it/export/documenti/fatturapa/v1.2/fatturaordinaria_v1.2.xsl // @resource aruba_ordinaria https://webmail.pec.it/fatturapa/xsl/aruba/fatturapa_vFPR12.xsl?_v_=1.3 // @resource asso_software_ordinaria http://dev.3v1n0.net/scripts/unzip-remote-xsl.php?file=http://www.assosoftware.it/allegati/assoinvoice/FoglioStileAssoSoftware.zip // @resource ricevuta_RC https://www.agenziaentrate.gov.it/portale/documents/20143/288192/RC_v1.1_RC_v1.1.xsl // @resource ricevuta_NS https://www.agenziaentrate.gov.it/portale/documents/20143/288192/ST+Fatturazione+elettronica+-+ITHVQWPH73P42H501Y+00022+NS_001_ITHVQWPH73P42H501Y_00022_NS_001.xml // @resource ricevuta_MC https://www.agenziaentrate.gov.it/portale/documents/20143/288192/ST+Fatturazione+elettronica+-+ITHVQWPH73P42H501Y+00022+MC_001_ITHVQWPH73P42H501Y_00022_MC_001.xml // @resource ricevuta_MT https://www.agenziaentrate.gov.it/portale/documents/20143/288192/ST+Fatturazione+elettronica+-+ITHVQWPH73P42H501Y_00022_MT_001_ITHVQWPH73P42H501Y_00022_MT_001.xml // @resource ricevuta_EC https://raw.githubusercontent.com/link-it/govfat/master/web/commons/src/main/resources/xsl/EC_v1.0.xsl // @resource ricevuta_SE https://raw.githubusercontent.com/link-it/govfat/master/web/commons/src/main/resources/xsl/SE_v1.0.xsl // @resource ricevuta_NE https://raw.githubusercontent.com/link-it/govfat/master/web/commons/src/main/resources/xsl/NE_v1.0.xsl // @resource ricevuta_DT https://raw.githubusercontent.com/link-it/govfat/master/web/commons/src/main/resources/xsl/DT_v1.0.xsl // @resource ricevuta_AT https://raw.githubusercontent.com/link-it/govfat/master/web/commons/src/main/resources/xsl/AT_v1.1.xsl // ==/UserScript== // Tests at https://www.agenziaentrate.gov.it/wps/content/Nsilib/Nsi/Schede/Comunicazioni/Fatture+e+corrispettivi/Fatture+e+corrispettivi+ST/ST+invio+di+fatturazione+elettronica/?page=schedecomunicazioni // https://www.fatturapa.gov.it/export/fatturazione/it/a-3.htm // https://www.fatturapa.gov.it/export/fatturazione/it/normativa/f-3.htm let xslStyle = 'aruba'; // Valid values: aruba, asso_software, sdi function getXslSource(xslType) { let text = GM_getResourceText(xslType); if (text.charCodeAt(0) === 0xFEFF) return text.substr(1); return text; } let xmlSource = document; let webkitViewer = document.getElementById('webkit-xml-viewer-source-xml'); if (webkitViewer) { xmlSource = new DOMParser().parseFromString(webkitViewer.innerHTML, 'text/xml'); xslStyle = 'sdi'; } let xslType = `${xslStyle}_ordinaria`; let matchSubType = document.location.toString().match(/_(RC|NS|MC|MT|EC|SE|NE|DT|AT)__?[0-9]{3}?\.xml/); if (matchSubType) xslType = `ricevuta_${matchSubType[1]}` const xslSource = getXslSource(xslType); if (!xslSource || !xslSource.length) throw new Error('Invalid XSL URI provided') if (!matchSubType) { let fattura = xmlSource.getElementsByTagNameNS( 'http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2', 'FatturaElettronica'); if (!fattura.length) throw new Error('FatturaElettronica tag is missing from XML'); } let xsl = new DOMParser().parseFromString(xslSource, 'text/xml'); let parseError = xsl.getElementsByTagName('parsererror'); if (parseError.length > 0) throw new Error(`Can't parse the XSL file: ${parseError[0].innerText}`); try { let xsltProcessor = new XSLTProcessor(); xsltProcessor.importStylesheet(xsl); if (webkitViewer) { var nodeDocType = document.implementation.createDocumentType( 'html', '-//W3C//DTD XHTML 1.0 Transitional//EN', 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtdd' ); document.insertBefore(nodeDocType, document.childNodes[0]); } let newContent = xsltProcessor.transformToDocument(xmlSource); document.replaceChild( document.importNode(newContent.documentElement, true), document.documentElement); /**/ } catch (e) { throw new Error(`Impmossible to import stylesheet: ${e}`); }