Changes

Aggiunto pagina "Convertire una Fattura Elettronica in un File HTML Leggibile"
{{header_it|title=Convertire una Fattura Elettronica in HTML su Slackware Linux | keyword={{Template:keyword_it_electronic_invoice}} | description=Convertire una fattura elettronica in un file HTML leggibile con gli strumenti disponibili in Slackware o SlackwareARM Linux | link_page=convert_an_electronic_invoice_into_an_html_file}}

== '''Convertire una Fattura Elettronica in un File HTML Leggibile''' ==

Sono ormai alcuni anni che in Italia è stata introdotta la '''fatturazione elettronica''' e che è stato imposto ai contribuenti, sia organizzazioni che artigiani che liberi professionisti, il formato digitale per gestire l'aspetto fiscale di tutte le transazioni commerciali. Con la sua usuale magnanimità, il legislatore ha imposto, concedendo piena libertà agli utilizzatori finali di reperire quanto necessario per mettersi in regola. Il formato adottato per lo scambio dei file, un tracciato codificato in linguaggio '''XML''', risulta alquanto scomodo per la lettura da parte di un essere umano ed è pertanto consigliabile dotarsi di programmi per compilare le fatture da spedire e leggere quelle ricevute.

La '''[https://www.agenziaentrate.gov.it/portale/ Agenzia delle Entrate]''' fornisce un [https://www.agenziaentrate.gov.it/portale/schede/comunicazioni/fatture-e-corrispettivi/software-compilazione-fattura-elettronica programma gratuito per PC] per compilare le fatture che, con un po' di fatica, è possibile far funzionare su Linux. Per quanto riguarda la visualizzazione delle fatture ricevute via PEC o scaricate dallo SDI esistono solo programmi messi a disposizione a titolo gratuito da enti terzi; ad esempio:
* [https://www.assosoftware.it/servizi-offerti/assoinvoice/ AssoInvoice];
* [https://www.visualizzafatturaelettronica.it Visualizza Fattura Elettronica].
I miei problemi con i programmi citati sono:
* Non viene messo a disposizione il codice sorgente, ma solo file binari. Non è pertanto possibile correggere eventuali errori del software o personalizzarlo per adattarlo al proprio ciclo di lavoro;
* Non viene fornito alcun supporto per l'installazione oppure la risoluzione di eventuali problemi;
* Non riesco a farli funzionare su Linux.

Il secondo dei due programmi citati è fornito esclusivamente per la piattaforma Windows. In rete ho trovato testimonianze di utenti Linux che affermano sia possibile eseguirlo tramite '''[http://www.winehq.org WINE]'''. Ho eseguito alcuni test, ma sono riuscito solo ad installare ed avviare il programma. Ogni volta che trascino un documento elettronico nell'area preposta della schermata principale, il programma si blocca indefinitamente, occupando molte risorse computazionali senza produrre risultati evidenti.

Il primo programma menzionato nell'elenco dispone sia di una versione per piattaforma MicroSoft, che Apple e persino Linux. Ringrazio gli sviluppatori per la considerazione dimostrata per chi usa piattaforme alternative. Anche in questo caso però non sono riuscito a far funzionare l'applicazione. Il programma scritto in Java richiede che sia installata la '''versione 8 della macchina virtuale Java fornita da Oracle'''. Come molti altri utenti Linux da anni mi rivolgo ad altri fornitori per la JVM da installare sulle mie macchine onde evitare ogni contatto con Oracle e le sue licenze di distribuzione. Ho fatto una eccezione ed installato una macchina virtuale dotata di JVM 8 di Oracle appositamente, ma ancora una volta non sono riuscito ad andare oltre ad installazione ed avvio del programma.

In ultima analisi, tenuto anche conto del fatto che ricevo poche fatture elettroniche dai fornitori, mi irrita non poco dover installare, imparare ad usare ed aggiornare periodicamente un programma avente il solo scopo di formattare e rendere leggibili gli sporadici documenti che ricevo durante l'anno. Non ho mai preso in considerazione i molti servizi di conversione reperibili in rete ritenendoli una fonte di spam. Non so perchè, ma le promesse di confidenzialità cozzano sempre con il mio scetticismo e con il centinaio di e-mail che intasano quotidianamente la cassetta postale.

Ho bisogno di visualizzare poche fatture elettroniche ogni anno e non desidero sprecare tempo e risorse per installare / imparare / amministrare un programma per uno scopo che ritengo banale. Mi sono dedicato alla ricerca di una soluzione alternativa e, dopo aver spulciato in rete ed aver studiato il formato XML per i file, sono giunto alla conclusione che '''un programma sia di fatto superfluo'''. L'unica cosa realmente '''indispensabile''' è un '''foglio di stile''' per formattare in maniera leggibile i file inviati dal servizio di interscambio. '''La conversione può essere eseguita con i soli strumenti a riga di comando disponibili per qualsiasi distribuzione Linux'''. Fortunatamente [https://www.assosoftware.it AssoSoftware] fornisce separatamente al proprio programma un foglio di stile per uso esterno. Reperito il [https://www.assosoftware.it/wp-content/uploads/2025/03/FoglioStileAssoSoftware.zip un archivio contenente il file apposito], la conversione delle fatture diventa una operazione banale, eseguibile da qualsiasi utente in una manciata di minuti grazie alla versatile ed eterna riga di comando.

=== Conversione di File XML ===
Un foglio di stile è un file scritto nel linguaggio [https://it.wikipedia.org/wiki/XSL_Transformations XSLT (e'''X'''tensible '''S'''tylesheet '''L'''anguage '''T'''ransformations)]: un linguaggio utilizzato in informatica per trasformare un file [https://it.wikipedia.org/wiki/XML XML (e'''X'''tensible '''M'''arkup '''L'''anguage)] in un altro documento ad esempio una pagina [https://it.wikipedia.org/wiki/HTML HTML] visualizzabile su qualsiasi browser web. Il file contiene un insieme di modelli da applicare agli elementi di un foglio XML per formattarli secondo le regole impostate. Un foglio di stile può essere applicato ad un documento utilizzando il comando '''xsltproc''' che fa parte della libreria '''libxslt''' inclusa tra i pacchetti ufficiali di Slackware e di moltissime distribuzioni Linux.

Il comando è utilizzabile da qualsiasi utente, sia amministratore che standard. La sintassi è:
'''xsltproc''' <percorso del foglio di stile>/<file>.xslt <percorso della fattura elettronica>/<file_1>.xml ''-o'' ./<file_2>.html
Ove:
<file> &egrave; il nome del file "foglio di stile" contenente le regole di formattazione / trasformazione.
<file_1> &egrave; il nome del file contenente la fattura elettronica.
''-o'' Opzione che impone di creare un file. Omettendola il risultato della trasformazione verr&agrave; stampato a video come una sequenza di marcatori HTML.
<file_2> &egrave; il nome del file ottenuto dalla conversione della fattura in una pagina web.

Per semplicit&agrave; si potrebbe usare lo stesso nome per <file_1> e <file_2>, ma bisogna fare attenzione a '''non sovrascrivere accidentalmente il file originale'''.

Supponendo di usare il foglio di stile scaricato dal sito di AssoSoftware e di posizionare lo stesso e la fattura nella directory ''/tmp'', i comandi di trasformazione assumerebbero la forma:
'''cd''' /tmp
'''xsltproc''' ./FoglioStileAssoSoftware.xsl ./IT0XXXXXX07022023j_02Jd8.xml ''-o'' ./IT0XXXXXX07022023j_02Jd8.html

Il file IT0XXXXXX07022023j_02Jd8.html ottenuto consiste in una pagina web pura, esente da fogli CSS e JavaScript, che pu&ograve; essere aperta con un browser leggero, sicuro e veloce come '''[https://dillo-browser.github.io/ Dillo]''':

[[File:fattura_convertita.png|center|Fig. 1: Fattura Convertita]]

Il documento potrebbe essere convertito usando un foglio di stile diverso da quello dell'esempio. '''Chiunque conosca il linguaggio XML pu&ograve; creare il proprio insieme personalizzato di regole di formattazione'''. Essendo pigro, ho fatto ricorso a quanto reperito in rete, ma nessuno vi obbliga a fare altrettanto.

=== Conversione di File Firmato P7M ===
Capita che il documento elettronico ricevuto sia firmato digitalmente come evidenziato dall'estensione '''p7m''' del file e dal fatto che lo stesso sia cifrato e risulti pertanto illeggibile e sia impossibile la conversione. Anche in questo caso &egrave; possibile operare tramite riga di comando, con gli strumenti messi a disposizione dalla propria distribuzione Linux ed un po' di materia grigia. L'operazione dovr&agrave; essere eseguita in due passi consecutivi:
* Estrazione della fattura elettronica in formato XML dall'archivio cifrato ricevuto;
* Conversione del file XML in una pagina HTML.

==== Estrazione della Fattura Elettronica ====
Per gestire gli archivi cifrati in Linux &egrave; possibile far ricorso agli strumenti inclusi nel pacchetto '''openssl'''. La sintassi del comando sar&agrave;:
'''openssl''' smime ''-verify -noverify -in'' <percorso dell'archivio firmato>/<file_1>.xml.p7m ''-inform'' DER ''-out'' <percorso della fattura elettronica>/<file_2>.xml
Ove:
<file_1> &egrave; il nome dell'archivio cifrato contenente la fattura firmata.
<file_2> &egrave; il nome del file contenente la fattura elettronica.

Supponendo che sia l'archivio che la fattura debbano risiedere nella cartella ''/tmp'' ad esempio la riga di comando diventerebbe:
'''cd''' /tmp
'''openssl''' smime ''-verify -noverify -in'' ./IT0XXXXXX07022023j_02Jd8.xml.p7m ''-inform'' DER ''-out'' ./IT0XXXXXX07022023j_02Jd8.xml

Anche in questo caso bisogner&agrave; fare attenzione a '''non sovrascrivere accidentalmente il file di origine'''.

Una volta ottenuto il documento in formato XML si proceda con le istruzioni descritte nel paragrafo precedente per eseguire la conversione in formato HTML.


== CONCLUSIONI ==

Nel corso del presente articolo sono state illustrate due procedure per convertire documenti elettronici in pagine HTML leggibili da un essere umano. Sono stati presi in considerazione il tracciato XML utilizzato per la fatturazione elettronica ed il corrispondente formato su cui venga applicata la firma digitale. Per eseguire la conversione &egrave; necessario impiegare un foglio di stile. Chiunque pu&ograve; scrivere il proprio insieme di regole, ma in rete &egrave;, reperibile un file gi&agrave; pronto, messo a disposizione gratuitamente dalle anime buone di AssoSoftware. Le procedure di conversione non richiedono l'installazione di software o librerie specifiche, ma si basano esclusivamente sui comandi Linux.


Per commenti, consigli, domande inviate una e-mail all'indirizzo ''studiosg [chiocciola] giustetti [punto] net''.


Link esterni

----

* [https://www.assosoftware.it/servizi-offerti/assoinvoice/ AssoInvoice]: Programma gratuito per visualizzare le fatture elettroniche
* [https://www.assosoftware.it/wp-content/uploads/2025/03/FoglioStileAssoSoftware.zip Foglio di Stile] distribuito gratutamente da Assoftware (Aggiornamento del 10 Marzo 2025)
* [https://slacky.eu/ Sito italiano dedicato a Slackware]
* [http://www.slackware.com Home page di Slackware (En)]
* [http://arm.slackware.com Slackware Linux per piattaforma ARM (En)]

----

{{footer_it | link_page=convert_an_electronic_invoice_into_an_html_file}}