Capitolo 11. Conversione di dati

Indice

11.1. Strumenti di conversione di dati testuali
11.1.1. Convertire un file di testo con iconv
11.1.2. Controllare se un file è in UTF-8 con iconv
11.1.3. Convertire nomi di file con iconv
11.1.4. Conversione del carattere di fine riga
11.1.5. Conversione di tabulazioni
11.1.6. Editor con auto-conversione
11.1.7. Estrazione del testo puro
11.1.8. Evidenziare e formattare dati in puro testo
11.2. dati XML
11.2.1. Suggerimenti base per XML
11.2.2. Elaborazione XML
11.2.3. Estrazione di dati XML
11.3. Dati stampabili
11.3.1. Ghostscript
11.3.2. Unire due file PS o PDF
11.3.3. Utilità per dati stampabili
11.3.4. Stampare con CUPS
11.4. Impaginazione
11.4.1. impaginazione roff
11.4.2. TeX/LaTeX
11.4.3. Fare una bella stampa di una pagina di manuale
11.4.4. Creare una pagina di manuale
11.5. Conversione dei dati di posta
11.5.1. Nozioni di base sui dati di posta
11.6. Strumenti per dati grafici
11.7. Conversioni di dati vari

In questo capitolo sono descritti strumenti e trucchi per convertire tra diversi formati di dati in un sistema Debian.

Gli strumenti standard sono eccellenti, ma il supporto per i formati proprietari per i dati è limitato.

11.1. Strumenti di conversione di dati testuali

Quelli che seguono sono pacchetti per la conversione dei dati testuali che hanno attirato la mia attenzione.

Tabella 11.1. Elenco di strumenti di conversione di dati testuali

pacchetto popcon dimensione parola chiave descrizione
libc6 V:95, I:99 9497 set di caratteri convertitore della codifica del testo tra localizzazioni usando iconv(1) (fondamentale)
recode V:1.0, I:5 768 set caratteri+carattere fine riga convertitore della codifica del testo tra localizzazioni (versatile, maggior numero di alias e funzionalità)
konwert V:0.4, I:5 192 set di caratteri convertitore della codifica tra localizzazioni (elegante)
nkf V:0.2, I:1.6 205 set di caratteri traduttore del set di caratteri per il giapponese
tcs V:0.02, I:0.10 544 set di caratteri traduttore del set di caratteri
unaccent V:0.02, I:0.10 76 set di caratteri sostituisce le lettere accentate con le equivalenti senza accento
tofrodos V:0.8, I:6 67 carattere fine riga convertitore del formato di testo tra DOS e Unix: fromdos(1) e todos(1)
macutils V:0.04, I:0.3 320 carattere fine riga convertitore del formato di testo tra Macintosh e Unix: frommac(1) e tomac(1)

11.1.1. Convertire un file di testo con iconv

[Suggerimento] Suggerimento

iconv(1) viene fornito come parte del pacchetto libc6 ed è sempre disponibile praticamente su tutti i sistemi, per fare la conversione della codifica dei caratteri.

Si può convertire la codifica di un file di testo con iconv(1) nel modo seguente.

$ iconv -f codifica1 -t codifica2 input.txt >output.txt

Nel trovare corrispondenze con i valori delle codifiche non viene tenuto conto delle lettere maiuscole o minuscole e vengono ignorati i caratteri "-" e "_". Si possono controllare le codifiche supportate con il comando "iconv -l".

Tabella 11.2. Elenco dei valori delle codifiche e loro uso

valore della codifica uso
ASCII. American Standard Code for Information Interchange, codifica americana standard per lo scambio di informazioni, codice a 7 bit senza caratteri accentati
UTF-8 attuale standard multilingua per tutti i sistemi operativi moderni
ISO-8859-1 vecchio standard per le lingue europee occidentali, ASCII + caratteri accentati
ISO-8859-2 vecchio standard per le lingue europee orientali, ASCII + caratteri accentati
ISO-8859-15 vecchio standard per le lingue europee occidentali, ISO-8859-1 con simbolo dell'euro
CP850 code page 850, caratteri Microsoft DOS con caratteri grafici per le lingue europee occidentali, variante di ISO-8859-1
CP932 code page 932, variante in stile Microsoft Windows di Shift-JIS per il giapponese
CP936 code page 936, variante in stile Microsoft Windows di GB2312, GBK o GB18030 per il cinese semplificato
CP949 code page 949, variante in stile Microsoft Windows di EUC-KR o Unified Hangul Code per il coreano
CP950 code page 950, variante in stile Microsoft Windows di Big5 per il cinese tradizionale
CP1251 code page 1251, codifica in stile Microsoft Windows per l'alfabeto cirillico
CP1252 code page 1252, variante in stile Microsoft Windows di ISO-8859-15 per le lingue europee occidentali
KOI8-R vecchio standard UNIX russo per l'alfabeto cirillico
ISO-2022-JP codifica standard per la posta elettronica in giapponese che usa solo codici a 7 bit
eucJP vecchio standard UNIX giapponese con codici a 8 bit completamente diverso da Shift-JIS
Shift-JIS standard JIS X 0208 Appendix 1 per il giapponese (vedere CP932)

[Nota] Nota

Alcune codifiche non sono gestite in fase di conversione dei dati e non sono utilizzate come valori di localizzazione (Sezione 8.3.1, «Nozioni base sulla codifica»).

Per i set di caratteri contenuti in un singolo byte, come i set di caratteri ASCII e ISO-8859, la codifica di carattere è quasi la stessa cosa del set di caratteri.

Per i set di caratteri con molti caratteri, come JIS X 0213 per il giapponese o Universal Character Set (UCS, Unicode, ISO-10646-1) per praticamente tutte le lingue, esistono molti schemi di codifica per inserirli nella sequenza dei byte dati.

In questi casi c'è una netta differenza tra il set di caratteri e la codifica di caratteri.

Il termine code page è usato come sinonimo di tabella di codifica dei caratteri per alcune tabelle specifiche di produttori.

[Nota] Nota

Notare che la maggior parte dei sistemi di codifica condividono con ASCII gli stessi codici per i caratteri a 7 bit. Ci sono però alcune eccezioni. Se si stanno convertendo dati di vecchi programmi C o URL in giapponese dal formato di codifica volgarmente chiamato Shift-JIS in formato UTF-8, usare "CP932" come nome di codifica invece di "shift-JIS" per ottenere i risultati attesi: 0x5C → "\" e 0x7E → "~". Altrimenti questi vengono convertiti nei caratteri sbagliati.

[Suggerimento] Suggerimento

Si può anche usare recode(1) che offre più della semplice combinazione delle funzionalità di iconv(1), fromdos(1), todos(1), frommac(1) e tomac(1). Per maggiori informazioni vedere "info recode".

11.1.2. Controllare se un file è in UTF-8 con iconv

Si può controllare se un file di testo è nella codifica UTF-8 usando iconv(1) nel modo seguente.

$ iconv -f utf8 -t utf8 input.txt >/dev/null || echo "trovato non-UTF-8"
[Suggerimento] Suggerimento

Usare l'opzione "--verbose" nell'esempio precedente per trovare il primo carattere non UTF-8.

11.1.3. Convertire nomi di file con iconv

Ecco uno script d'esempio per convertire in una directory la codifica dei nomi di file dai nomi creati in un vecchio sistema operativo a quelli UTF-8 moderni.

#!/bin/sh
ENCDN=iso-8859-1
for x in *;
 do
 mv "$x" $(echo "$x" | iconv -f $ENCDN -t utf-8)
done

La variabile "$ENCDN" deve essere impostata al valore della codifica appropriato Tabella 11.2, «Elenco dei valori delle codifiche e loro uso».

Per scenari più complessi, montare, usando come opzione di mount(8) la codifica appropriata (vedere Sezione 8.3.6, «Codifica per i nomi di file»), il file system (ad esempio una partizione in un disco fisso) contenente tali nomi di file e copiare usando il comando "cp-a" il suo intero contenuto in un altro file system montato come UTF-8.

11.1.4. Conversione del carattere di fine riga

Il formato dei file di testo e specificatamente il codice EOL (End of line, fine riga) è dipendente dalla piattaforma.

Tabella 11.3. Elenco di stili per EOL per differenti piattaforme

piattaforma codice EOL carattere di controllo decimale esadecimale
Debian (unix) LF ^J 10 0A
MSDOS e Windows CR-LF ^M^J 13 10 0D 0A
Macintosh di Apple CR ^M 13 0D

I programmi di conversione del formato di EOL, fromdos(1), todos(1), frommac(1) e tomac(1), sono piuttosto comodi. Anche recode(1) è utile.

[Nota] Nota

Alcuni dati nel sistema Debian, come i dati della pagina wiki per il pacchetto python-moinmoin, usano CR-LF in stile MSDOS come codice EOL. Perciò la regola sopra descritta è solamente una regola generale.

[Nota] Nota

La maggior parte degli editor (es. vim, emacs, gedit, …) può gestire file con EOL in stile MSDOS in modo trasparente.

[Suggerimento] Suggerimento

È meglio usare "sed -e '/\r$/!s/$/\r/'" invece di todos(1) quando si desidere unificare lo stile EOL allo stile MSDOS da uno stile misto MSDOS e Unix (ad esempio dopo la fusione di 2 file in stile MSDOS con diff3(1)). Questo perché todos aggiunge CR a tutte le righe.

11.1.5. Conversione di tabulazioni

Esistono alcuni programmi popolari specializzati nella conversione dei codici di tabulazione.

Tabella 11.4. Elenco di comandi di conversione di TAB dai pacchetti bsdmainutils e coreutils

funzione bsdmainutils coreutils
espande le tabulazioni in spazi "col -x" expand
de-espande gli spazi in tabulazioni "col -h" unexpand

indent(1) nel pacchetto indent riformatta completamente gli spazi bianchi nei programmi C.

Anche programmi editor come vim ed emacs possono essere usati per la conversione di TAB. Per esempio con vim, è possibile espandere i TAB con la sequenza di comandi ":set expandtab" e ":%retab". Si può annullare questa azione con la sequenza di comandi ":set noexpandtab" e ":%retab!".

11.1.6. Editor con auto-conversione

Gli editor moderni intelligenti come il programmavim sono piuttosto bravi e gestiscono bene qualsiasi sistema di codifica e formato di file. Per una migliore compatibilità questi editor andrebbero usati con la localizzazione UTF-8 in console con capacità UTF-8.

Un vecchio file di testo Unix in lingua europea occidentale, "u-file.txt" salvato nella codifica latin1 (iso-8859-1) può essere modificato con vim semplicemente con il comando seguente.

$ vim u-file.txt

Ciò è reso possibile dal fatto che il meccanismo di rivelazione automatica della codifica dei file di vim presuppone come prima cosa che la codifica sia UTF-8 e, se ciò fallisce, presuppone che sia latin1.

Un vecchio file di testo Unix in lingua polacca, "pu-file.txt" salvato nella codifica latin1 (iso-8859-1) può essere modificato con vim con il comando seguente.

$ vim '+e ++enc=latin2 pu-file.txt'

Un vecchio file di testo Unix in giapponese, "ju-file.txt" salvato nella codifica eucJP può essere modificato con vim con il comando seguente.

$ vim '+e ++enc=eucJP ju-file.txt'

Un vecchio file di testo MS-Windows in giapponese, "jw-file.txt" salvato nella cosiddetta codifica shift-JIS (più precisamente CP932) può essere modificato con vim con il comando seguente.

$ vim '+e ++enc=CP932 ++ff=dos jw-file.txt'

Quando un file viene aperto con le opzioni "++enc" e "++ff", l'uso di ":w" nella riga di comando di Vim lo salva nel formato originale sovrascrivendo il file originale. Si può anche specificare nella riga di comando di Vim il formato e il nome con cui salvare il file, ad esempio ":w ++enc=utf8 nuovo.txt".

Fare riferimento a mbyte.txt per il "supporto di testi multi-byte" nell'aiuto in linea di vim e a Tabella 11.2, «Elenco dei valori delle codifiche e loro uso» per i valori delle localizzazione usati con "++enc".

La famiglia di programmi emacs può svolgere funzioni equivalenti.

11.1.7. Estrazione del testo puro

Il comando seguente legge una pagina web mettendola in un file di testo. È molto utile quando si copiano configurazioni dal Web o per applicare strumenti di testo base Unix come grep(1) sulla pagina web.

$ w3m -dump http://www.sito-remoto.com/help-info.html >filetesto

In modo analogo, si possono estrarre dati in testo puro da altri formati con gli strumenti seguenti.

Tabella 11.5. Elenco di strumenti per estrarre dati in testo puro

pacchetto popcon dimensione parola chiave funzione
w3m V:30, I:86 1924 html→testo puro conversione da HTML a testo semplice con il comando "w3m -dump"
html2text V:15, I:33 248 html→testo puro convertitore avanzato da HTML a testo semplice (ISO 8859-1)
lynx I:18 242 html→testo puro conversione da HTML a testo semplice con il comando "lynx -dump"
elinks V:2, I:5 1364 html→testo puro conversione da HTML a testo semplice con il comando "elinks -dump"
links V:2, I:7 1225 html→testo puro conversione da HTML a testo semplice con il comando "links -dump"
links2 V:0.6, I:3 3036 html→testo puro conversione da HTML a testo semplice con il comando "links2 -dump"
antiword V:1.1, I:2 560 MSWord→testo puro, ps converte file MSWord in testo puro o ps
catdoc V:0.9, I:1.7 2668 MSWord→testo puro, TeX converte file MSWord in testo puro o TeX
pstotext V:0.7, I:1.0 148 ps/pdf→testo puro estrae testo da file PostScript e PDF
unhtml V:0.02, I:0.12 76 html→testo puro rimuove i tag marcatori da file HTML
odt2txt V:0.7, I:1.2 73 odt→testo puro converte da OpenDocument Text in testo puro

11.1.8. Evidenziare e formattare dati in puro testo

È possibile evidenziare e formattare dati in testo puro usando gli strumenti seguenti.

Tabella 11.6. Elenco di strumenti per evidenziare dati in testo puro

pacchetto popcon dimensione parola chiave descrizione
vim-runtime V:3, I:43 22298 evidenziare MACRO Vim per convertire codice sorgente in HTML con ":source $VIMRUNTIME/syntax/html.vim"
cxref V:0.04, I:0.2 1113 c→html convertitore per programmi C in latex e HTML (linguaggio C)
src2tex V:0.02, I:0.18 1968 evidenziare converte molti codici sorgenti in TeX (linguaggio C)
source-highlight V:0.17, I:1.0 1939 evidenziare converte molti codici sorgenti in file HTML, XHTML, LaTeX, Texinfo, sequenze di escape per colori ANSI e DocBook con evidenziazione (C++)
highlight V:0.2, I:1.6 762 evidenziare converte molti codici sorgenti in file HTML, XHTML, RTF, LaTeX, TeX o XSL-FO con evidenziazione (C++)
grc V:0.05, I:0.13 232 testo→colori colorazione generica per tutto (Python)
txt2html V:0.07, I:0.4 296 testo→html convertitore da testo semplice in HTML (Perl)
markdown V:0.07, I:0.4 96 testo→html formattatore markdown di documenti di testo in (X)HTML (Perl)
asciidoc V:0.17, I:1.2 3133 testo→tutto formattatore AsciiDoc di documenti di testo in XML/HTML (Python)
python-docutils V:0.3, I:3 1548 testo→tutto formattatore di documenti ReStructured Text in XML (Python)
txt2tags V:0.05, I:0.2 1152 testo→tutto conversione di documenti da testo semplice a HTML, SGML, LaTeX, pagine man, MoinMoin, Magic Point e PageMaker (Python)
udo V:0.00, I:0.05 556 testo→tutto utilità universale di elaborazione di documenti - testo (linguaggio C)
stx2any V:0.00, I:0.04 484 testo→tutto convertitore di documenti da testo semplice strutturato in altri formati (m4)
rest2web V:0.00, I:0.06 576 testo→html convertitore di documenti da ReStructured Text in HTML (Python)
aft V:0.00, I:0.04 259 testo→tutto sistema di preparazione di documenti a "modello libero" (Perl)
yodl V:0.01, I:0.04 409 testo→tutto pre-linguaggio per documenti e strumenti per elaborarlo (linguaggio C)
sdf V:0.01, I:0.07 1414 testo→tutto semplice analizzatore di documenti (Perl)
sisu V:0.02, I:0.10 9132 testo→tutto infrastruttura per strutturazione, pubblicazione e ricerca di documenti (Ruby)

11.2. dati XML

XML (Extensible Markup Language) è un linguaggio a marcatori per documenti contenenti informazioni strutturate.

Vedere informazioni introduttive su XML.COM.

11.2.1. Suggerimenti base per XML

I testi XML hanno un aspetto simile all'HTML. Permettono di gestire formati di output multipli per un documento. Un facile sistema per XML è il pacchetto docbook-xsl che è stato usato per questo documento.

Ogni file XML inizia con una dichiarazione XML standard come la seguente.

<?xml version="1.0" encoding="UTF-8"?>

La sintassi di base per un elemento XML usa un marcatore come il seguente.

<nome attributo="valore">contenuto</nome>

Gli elementi XML senza contenuto sono indicati nella seguente forma breve.

<nome attributo="valore"/>

La parte "attributo="valore"" negli esempi precedenti è opzionale.

In XML una sezione di commento è marcata nel modo seguente.

<!-- commento -->

A parte l'aggiunta dei marcatori, XML richiede solo una minima conversione dei contenuti usando entità predefinite per i caratteri seguenti.

Tabella 11.7. Elenco di entità predefinite per XML

entità predefinita carattere da convertire
&quot; " : virgolette
&apos; ' : apostrofo
&lt; < : minore-di
&gt; > : maggiore-di
&amp; & : e-commerciale

[Attenzione] Attenzione

"<" e "&" non possono essere usati in attributi o elementi.

[Nota] Nota

Quando vengono usate entità definite in stile SGML, ad esempio "&qualche-tag:", la prima definizione prevale su tutte le altre. La definizione di entità è espressa nella forma "<!ENTITY qualche-tag "valore entità">".

[Nota] Nota

Fintanto che i marcatori XML sono usati in modo coerente con un certo set dei nomi di tag (qualche dato usato come contenuto o valore di attributo), la conversione in un altro XML è un compito banale usando XSLT (Extensible Stylesheet Language Trasformations.

11.2.2. Elaborazione XML

Sono disponibili molti strumenti per elaborare file XML, come l'XSL (Extensible Stylesheet Language).

Fondamentalmente, una volta creato un file XML ben formato, lo si può convertire in qualsiasi formato usando XSLT (Extensible Stylesheet Language Transformation).

XSL-FO (Extensible Stylesheet Language for Formatting Object), linguaggio per fogli di stile estensibile per la formattazione di oggetti, è pensato per essere una soluzione per la formattazione. Il pacchetto fop è ancora nell'archivio Debian contrib (non in main). Perciò il codice LaTeX è solitamente generato dall'XML usando XSLT ed il sistema LaTeX viene usato per creare file adatti alla stampa come DVI, PostScript e PDF.

Tabella 11.8. Elenco di strumenti XML

pacchetto popcon dimensione parola chiave descrizione
docbook-xml I:48 2488 xml DTD (Document Type Definition) XML per DocBook
xsltproc V:3, I:41 180 xslt elaboratore a riga di comando XSLT (XML→ XML, HTML, testo semplice, ecc.)
docbook-xsl I:13 11589 xml/xslt fogli di stile XSL per elaborare XML DocBook con XSLT in vari formati di output
xmlto V:0.2, I:2 134 xml/xslt convertitore da-XML-a-tutto con XSLT
dblatex V:0.3, I:2 7264 xml/xslt converte file DocBook con XSLT in documenti DVI, PostScript, PDF
fop V:0.6, I:4 90 xml/xsl-fo converte file XML DocBook in PDF

Dato che XML è un sottoinsieme di SGML (Standard Generalized Markup Language), può essere elaborato dagli strumenti completi disponibili per SGML, come DSSSL (Document Style Semantics and Specification Language).

Tabella 11.9. Elenco di strumenti DSSSL

pacchetto popcon dimensione parola chiave descrizione
openjade V:0.3, I:2 1180 dsssl elaboratore standard DSSSL ISO/IEC 10179:1996 (più recente)
openjade1.3 V:0.01, I:0.10 2226 dsssl elaboratore standard DSSSL ISO/IEC 10179:1996 (serie 1.3.x)
jade V:0.2, I:2 872 dsssl elaboratore DSSSL originale di James Clark (serie 1.2.x)
docbook-dsssl V:0.4, I:3 3100 xml/dsssl fogli di stile DSSSL per elaborare XML DocBook con DSSSL in vari formati di output
docbook-utils V:0.2, I:1.7 440 xml/dsssl utilità per file DocBook, inclusa la conversione in altri formati (HTML, RTF, PS, man, PDF) con comandi docbook2* con DSSSL
sgml2x V:0.00, I:0.05 216 SGML/dsssl convertitore da SGML e XML che usa fogli di stile DSSSL

[Suggerimento] Suggerimento

A volte yelp di GNOME è utile per leggere file XML DocBook direttamente dato che li visualizza in modo decente in X.

11.2.3. Estrazione di dati XML

Si possono esstrarre dati HTML o XML da altri formati usando gli strumenti seguenti.

Tabella 11.10. Elenco di strumenti di estrazione di dati XML

pacchetto popcon dimensione parola chiave descrizione
wv V:0.8, I:1.7 351 MSWord→tutto convertitore di documenti da Microsoft Word a HTML, LaTeX, ecc.
texi2html V:0.2, I:2 2076 texi→html convertitore da texinfo a HTML
man2html V:0.14, I:0.7 180 pagine man→html convertitore da pagine man a HTML (supporto CGI)
tex4ht V:0.3, I:3 924 tex↔html convertitore tra (La)TeX e HTML
xlhtml V:0.4, I:0.8 184 MSExcel→html convertitore da .xls di MSExcel in HTML
ppthtml V:0.3, I:0.8 120 MSPowerPoint→html convertitore da MSPowerPoint a HTML
unrtf V:0.4, I:0.8 224 rtf→html convertitore di documenti da RTF a HTML, ecc.
info2www V:0.6, I:0.9 156 info→html convertitore da GNU info a HTML (supporto CGI)
ooo2dbk V:0.01, I:0.08 941 sxw→xml convertitore da documenti SXW OpenOffice.org in XML DocBook
wp2x V:0.00, I:0.06 116 WordPerfect→tutto da file WordPerfect 5.0 e 5.1 a TeX, LaTeX, troff, GML e HTML
doclifter V:0.00, I:0.03 460 troff→xml convertitore da troff a XML DocBook

I file HTML non-XML possono essere convertiti in XHTML che è un'istanza di XML ben strutturato. XHTML può essere elaborato con strumenti XML.

Tabella 11.11. Elenco di strumenti per belle stampe XML

pacchetto popcon dimensione parola chiave descrizione
libxml2-utils V:4, I:49 138 xml↔html↔xhtml strumento XML a riga di comando con xmllint(1) (controllo di sintassi, riformattazione, eliminazione sporcizia, …)
tidy V:0.5, I:4 82 xml↔html↔xhtml controllore della sintassi e riformattatore per HTML

Una volta che è stato generato codice XML corretto, si può usare la tecnologia XSLT per estrarre dati in base al contesto dei marcatori

11.3. Dati stampabili

In un sistema Debian i dati stampabili sono presentati in formato PostScript. CUPS (Common Unix Printing System) usa Ghostscript come suo programma backend per la rasterizzazione per le stampanti non-PostScript.

11.3.1. Ghostscript

Il cuore centrale della manipolazione dei dati da stampare è l'interprete PostScript (PS) Ghostscript che genera immagini raster.

La licenza dell'ultima versione a monte di Ghostscript di Artifex è passata da AFPL a GPL e sono state fuse in un rilascio unificato tutte le più recenti modifiche alle versioni ESP, come quelle relative a CUPS nel rilascio 8.60.

Tabella 11.12. Elenco di interpreti PostScript Ghostscript

pacchetto popcon dimensione descrizione
ghostscript V:17, I:62 198 interprete PostScript/PDF GPL Ghostscript
ghostscript-x V:6, I:15 193 interprete PostScript/PDF GPL Ghostscript - supporto per display X
gs-cjk-resource V:4, I:17 4528 file risorsa per gs-cjk, estensione Ghostscript per CJK-TrueType
cmap-adobe-cns1 V:0.04, I:0.2 1572 CMaps per Adobe-CNS1 (per supporto per cinese tradizionale)
cmap-adobe-gb1 V:0.04, I:0.2 1552 CMaps per Adobe-GB1 (per supporto per cinese semplificato)
cmap-adobe-japan1 V:2, I:15 2428 CMaps per Adobe-Japan1 (per supporto per giapponese standard)
cmap-adobe-japan2 I:0.3 416 CMaps per Adobe-Japan2 (per supporto per giapponese extra)
cmap-adobe-korea1 V:0.15, I:1.0 872 CMaps per Adobe-Korea1 (per supporto per coreano)
libpoppler13 V:7, I:17 2377 libreria di rendering per PDF basata sul visualizzatore di PDF xpdf
libpoppler-glib6 V:6, I:15 577 libreria di rendering per PDF (libreria condivisa basata su GLib)
poppler-data I:20 12240 CMaps per la libreria di rendering per PDF (per supporto CJK: Adobe-*)

[Suggerimento] Suggerimento

La configurazione di Ghostscript può essere visualizzata con "gs -h".

11.3.2. Unire due file PS o PDF

È possibile unire due file PostScript (PS) o PDF (Portable Document Format) usando gs(1) di Ghostscript.

$ gs -q -dNOPAUSE -dBATCH -sDEVICE=pswrite -sOutputFile=bla.ps -f pippo1.ps pippo2.ps
$ gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=bla.pdf -f pippo1.pdf pippo2.pdf
[Nota] Nota

Il formato PDF che è ampiamente usato per dati stampabili multipiattaforma, è essenzialmente il formato PS compresso con alcune funzionalità ed estensioni aggiuntive.

[Suggerimento] Suggerimento

Per manipolare dalla riga di comando documenti PostScript sono utili psmerge(1) e altri comandi nel pacchetto psutils. I comandi nel pacchetto pdfjam lavorano in modo simile per manipolare documenti PDF. Anche pdftk(1), nel pacchetto pdftk, è utile per manipolare documenti PDF.

11.3.3. Utilità per dati stampabili

Quello che segue è un elenco di pacchetti con utilità per dati stampabili che hanno attirato la mia attenzione.

Tabella 11.13. Elenco di utilità per dati stampabili

pacchetto popcon dimensione parola chiave descrizione
poppler-utils V:9, I:54 542 pdf→ps,testo,… utilità PDF: pdftops, pdfinfo, pdfimages, pdftotext, pdffonts
psutils V:2, I:19 243 ps→ps strumenti di conversione di documenti PostScript
poster V:0.4, I:3 80 ps→ps crea grandi poster da pagine PostScript
enscript V:0.8, I:8 2147 testo→ps, html, rtf converte testo ASCII in PostScript, HTML, RTF o Pretty-Print
a2ps V:1.4, I:8 4292 testo→ps convertitore e creatore di belle stampe "Da tutto a PostScript"
pdftk V:1.0, I:5 3039 pdf→pdf strumento di conversione di documenti PDF: pdftk
mpage V:0.13, I:0.9 224 testo,ps→ps stampa più pagine in un foglio
html2ps V:0.2, I:1.4 320 html→ps converte da HTML aPostScript
pdfjam V:0.2, I:1.5 228 pdf→pdf strumenti di conversione di documenti PDF: pdf90, pdfjoin e pdfnup
gnuhtml2latex V:0.05, I:0.4 53 html→latex convertitore da HTML a latex
latex2rtf V:0.13, I:0.9 508 latex→rtf converte documenti da LaTeX a RTF leggibili da MS Word
ps2eps V:1.3, I:12 136 ps→eps converte da PostScript a EPS (Encapsulated PostScript)
e2ps V:0.00, I:0.09 188 testo→ps convertitore da testo a PostScript con supporto per la codifica giapponese
impose+ V:0.02, I:0.18 180 ps→ps Utilità PostScript
trueprint V:0.01, I:0.09 188 testo→ps belle stampe di molti tipi di codice sorgente (C, C++, Java, Pascal, Perl, Pike, Sh e Verilog) in PostScript. (linguaggio C)
pdf2svg V:0.10, I:0.6 60 ps→svg convertitore da PDF al formato SVG (Scalable Vector Graphics)
pdftoipe V:0.01, I:0.14 91 ps→ipe convertitore da PDF al formato XML di IPE

11.3.4. Stampare con CUPS

Entrambi i comandi lp(1) e lpr(1) forniti da CUPS (Common Unix Printing System) forniscono opzioni per stampe personalizzate dei dati stampabili.

Si possono stampare 3 copie fascicolate di un file usando uno dei comandi seguenti.

$ lp -n 3 -o Collate=True nomefile
$ lpr -#3 -o Collate=True nomefile

Si può personalizzare ulteriormente l'operazione di stampa usando opzioni come "-o number-up=2", "-o page-set=even", "-o page-set=odd", "-o scaling=200", "-o natural-scaling=200", ecc., documentate in Stampa dalla riga di comando ed opzioni relative.

11.4. Impaginazione

Per semplici impaginazioni si può usare il programma Unix troff sviluppato da AT&T. Viene di solito usato per creare pagine man.

TeX, creato da Donald Knuth è uno strumento di impaginazione molto potente ed è lo standard di fatto. LaTeX, scritto originariamente da Leslie Lamport, permette un accesso alla potenza di TeX a più alto livello.

Tabella 11.14. Elenco di strumenti per impaginazione

pacchetto popcon dimensione parola chiave descrizione
texlive I:8 102 (La)TeX sistema TeX per impaginazione, anteprima e stampa
groff V:1.1, I:9 9388 troff sistema di formattazione di testi GNU troff

11.4.1. impaginazione roff

Tradizionalmente il sistema di elaborazione di testi Unix principale è roff. Vedere roff(7), groff(7), groff(1), grotty(1), troff(1), groff_mdoc(7), groff_man(7), groff_ms(7), groff_me(7), groff_mm(7) e "info groff".

Si può leggere o stampare un buon tutorial e documento di consultazione sulla macro "-me" in "/usr/share/doc/groff/", dopo aver installato il pacchetto groff.

[Suggerimento] Suggerimento

"groff -Tascii -me -" produce output in puro testo con codici di escape ANSI. Se si desidera produrre un output in stile pagine man con molti "^H" e "_", usare invece "GROFF_NO_SGR=1 groff -Tascii -me -".

[Suggerimento] Suggerimento

Per rimuovere i "^H" e "_" da un file di testo generato con groff, filtrarlo con "col -b -x".

11.4.2. TeX/LaTeX

La distribuzione software TeX Live offre un sistema TeX completo. Il metapacchetto texlive fornisce una buona selezione dei pacchetti TeX Live che dovrebbe essere sufficiente per la maggior parte dei compiti più comuni.

Ci sono molti documenti consultabili disponibili per TeX e LaTeX.

  • teTeX HOWTO: The Linux-teTeX Local Guide

  • tex(1)

  • latex(1)

  • "The TeXbook", di Donald E. Knuth, (Addison-Wesley)

  • "LaTeX - A Document Preparation System", di Leslie Lamport, (Addison-Wesley)

  • "The LaTeX Companion", di Goossens, Mittelbach, Samarin, (Addison-Wesley)

Questo è l'ambiente di impaginazione più potente. Molti elaboratori SGML lo usano come backend per l'elaborazione del testo. Lyx, fornito dal pacchetto lyx, e GNUTeXmacs, fornito dal pacchetto texmacs, offrono un bell'ambiente WYSIWYG per LaTeX; inoltre molti usano Emacs e Vim come scelta di editor per i sorgenti.

Sono disponibili molte risorse in rete.

Quando i documenti crescono di dimensioni, a volte TeX può generare errori. Per risolvere queto problema si deve aumentare la dimensione di pool in "/etc/texmf/texmf.cnf" (o in modo più corretto, modificare "/etc/texmf/texmf.d/95NonPath" ed eseguire update-texmf(8)).

[Nota] Nota

Il sorgenti TeX di "The TeXbook" sono disponibili all'indirizzo http://tug.ctan.org/tex-archive/systems/knuth/dist/tex/texbook.tex.

Questo file contiene la maggior parte delle macro necessarie. Mi è stato detto che si può elaborare questo documento con tex(1) dopo aver commentato le righe da 7 a 10 ed aggiungendo "\input manmac \proofmodefalse". È caldamente raccomandabile comprare questo libro (e tutti gli altri libri di Donald E. Knuth) invece di usare le versioni in rete, ma il sorgente è un meraviglioso esempio di input TeX!

11.4.3. Fare una bella stampa di una pagina di manuale

Si può stampare una pagina di manuale in PostScript in un bel modo usando uno dei comandi seguenti.

$ man -Tps una_qualche_paginaman | lpr
$ man -Tps una_qualche_paginaman | mpage -2 | lpr

Il secondo esempio stampa 2 pagine in un foglio.

11.4.4. Creare una pagina di manuale

Benché sia possibile scrivere una pagina di manuale (pagina man) in formato troff semplice, ci sono alcuni pacchetti di aiuto per farlo.

Tabella 11.15. Elenco di pacchetti che aiutano a creare una pagina man

pacchetto popcon dimensione parola chiave descrizione
docbook-to-man V:0.2, I:2 175 SGML→paginaman convertitore da SGML DocDook in macro roff man
help2man V:0.12, I:0.9 481 testo→paginaman generatore automatico di pagine man da --help
info2man V:0.02, I:0.10 161 info→paginaman convertitore da GNU info a POD o pagine man
txt2man V:0.03, I:0.2 88 testo→paginaman converte testo in puro ASCII nel formato delle pagine man

11.5. Conversione dei dati di posta

Quelli che seguono sono pacchetti per la conversione dei dati di posta che hanno attirato la mia attenzione.

Tabella 11.16. Elenco di pacchetto che aiutano a convertire dati di posta

pacchetto popcon dimensione parola chiave descrizione
sharutils V:1.7, I:17 1408 posta shar(1), unshar(1), uuencode(1), uudecode(1)
mpack V:0.9, I:11 109 MIME codificatore e decodificatore di messaggiMIME: mpack(1) e munpack(1)
tnef V:0.6, I:1.3 164 ms-tnef spacchettamento di allegati MIME di tipo "application/ms-tnef" che è un formato esclusivo di Microsoft
uudeview V:0.14, I:0.8 132 posta codificatore e decodificatore per i seguenti formati: uuencode, xxencode, BASE64, quoted printable e BinHex
readpst V:0.04, I:0.2 228 PST converte file PST di Outlook di Microsoft nel formato mbox

[Suggerimento] Suggerimento

Se il software del programma di posta può essere configurato per usarlo, anche il server IMAP4 (Internet Message Access Protocol, versione 4) (vedere Sezione 6.7, «Server POP3/IMAP4») può essere usato per spostare la posta da sistemi proprietari.

11.5.1. Nozioni di base sui dati di posta

I dati di posta (SMTP) dovrebbero essere limitati ai dati a 7 bit. Perciò dati binari e testi a 8 bit sono codificati in un formato a 7 bit con MIME (Multipurpose Internet Mail Extensions) e la selezione del set di caratteri (vedere Sezione 8.3.1, «Nozioni base sulla codifica»).

Il formato standard per l'archiviazione della posta è mbox strutturato seguendo la RFC2822 (che aggiorna RFC822). Vedere mbox(5) (fornito dal pacchetto mutt).

Per le lingue europee, per la posta viene di solito usato "Content-Transfer-Encoding: quoted-printable" con il set di caratteri ISO-8859-1 dato che non ci sono molti caratteri a 8 bit. Se il testo europeo è codificato in UTF-8, è probabile venga usato "Content-Transfer-Encoding: quoted-printable" dato che sono per la maggior parte dati a 7 bit.

Per il giapponese, per la posta viene tradizionalmente usato "Content-Type: text/plain; charset=ISO-2022-JP" per mantenere il testo a 7 bit. Ma sistemi Microsoft più vecchi possono inviare dati di posta in Shift-JIS senza una dichiarazione appropriata. Se il testo giapponese è codificato in UTF-8, è probabile venga usato Base64 dato che contiene molti dati a 8 bit. La situazione delle altre lingue asiatiche è simile.

[Nota] Nota

Se i dati di posta non-Unix sono accessibili da un software di posta non-Debian che può comunicare con il server IMAP4, potrebbe essere possibile spostarli eseguendo un proprio server IMAP4 (vedere Sezione 6.7, «Server POP3/IMAP4»).

[Nota] Nota

Se si usano altri formati di archiviazione, spostarli nel formato mbox è un buon primo passo. Un versatile programma client come mutt(1) può essere di aiuto in questo caso.

Si può suddividere il contenuto di una casella di posta nei singoli messaggi usando procmail(1) e formail(1).

Ciascun messaggio di posta può essere spachettato usando munpack(1), dal pacchetto mpack, (o con altri strumenti specializzati) per ottenere i contenuti codificati MIME.

11.6. Strumenti per dati grafici

Quelli che seguono sono pacchetti per la conversione, la modifica e l'organizzazione di dati grafici che hanno attirato la mia attenzione.

Tabella 11.17. Elenco di strumenti per dati grafici

pacchetto popcon dimensione parola chiave descrizione
gimp V:9, I:46 13086 immagine(bitmap) GNU Image Manipulation Program, programma GNU di manipolazione di immagini
imagemagick V:20, I:48 200 immagine(bitmap) programmi di manipolazione immagini
graphicsmagick V:1.1, I:2 4394 immagine(bitmap) programmi di manipolazione di immagini (fork di imagemagick)
xsane V:5, I:34 1368 immagine(bitmap) frontend X11 basato su GTK+ per SANE (Scanner Access Now Easy)
netpbm V:5, I:46 4564 immagine(bitmap) strumenti di conversione di dati grafici
icoutils V:0.4, I:2 160 png↔ico(bitmap) converte icone e puntatori MS Windows da e verso il formato PNG (favicon.ico)
scribus V:1.2, I:3 54492 ps/pdf/SVG/… editor DTP Scribus
openoffice.org-draw V:13, I:29 164 immagine(vettoriale) suite per ufficio OpenOffice.org - disegno
inkscape V:18, I:37 80264 immagine(vettoriale) editor SVG (Scalable Vector Graphics)
dia-gnome V:1.1, I:2 617 immagine(vettoriale) editor di diagrammi (GNOME)
dia V:2, I:4 617 immagine(vettoriale) editor di diagrammi (Gtk)
xfig V:1.9, I:3 1597 immagine(vettoriale) strumento per la generazione interattiva di figure in X11
pstoedit V:2, I:35 679 ps/pdf→immagine(vettoriale) convertitore di file PostScript e PDF in grafica vettoriale modificabile (SVG)
libwmf-bin V:2, I:31 118 Windows/immagine(vettoriale) strumenti di conversione di metafile windows (dati di grafica vettoriale)
fig2sxd V:0.02, I:0.16 200 fig→sxd(vettoriale) converte file XFig nel formato di Draw di OpenOffice.org
unpaper V:0.2, I:1.6 736 immagine→immagine strumento di post-elaborazione per pagine scansionate per OCR
tesseract-ocr V:0.5, I:3 435 immagine→testo software OCR libero basato sul motore OCR commerciale di HP
tesseract-ocr-eng I:3 58870 immagine→testo dati per motore OCR: file di lingua tesseract-ocr per testi in inglese
gocr V:0.6, I:4 473 immagine→testo software OCR libero
ocrad V:0.2, I:2 254 immagine→testo software OCR libero
gtkam V:0.19, I:1.2 1255 immagine(Exif) manipola file da fotocamere digitali (GNOME) - interfaccia utente grafica
gphoto2 V:0.3, I:2 844 immagine(Exif) manipola file da fotocamere digitali (GNOME) - interfaccia a riga di comando
kamera V:0.3, I:7 245 immagine(Exif) manipola file da fotocamere digitali (KDE)
jhead V:0.4, I:2 126 immagine(Exif) manipola la parte non-immagine di file JPEG (fotografie digitali) aderenti conformi ad Exif
exif V:0.2, I:1.6 212 immagine(Exif) utilità a riga di comando per mostrare informazioni EXIF in file JPEG
exiftags V:0.10, I:0.8 198 immagine(Exif) utilità per leggere i tag EXIF da un file JPEG di una fotocamera digitale
exiftran V:0.5, I:3 91 immagine(Exif) trasforma immagini JPEG di fotocamere digitali
exifprobe V:0.06, I:0.4 484 immagine(Exif) legge metadati da immagini digitali
dcraw V:0.7, I:4 424 immagine(Raw)→ppm decodifica immagini raw di fotocamere digitali
findimagedupes V:0.04, I:0.2 123 immagine→fingerprint trova immagini simili visivamente o duplicati
ale V:0.02, I:0.12 757 immagine→immagine fonde immagini per migliorarne la fedeltà o creare mosaici
imageindex V:0.03, I:0.15 192 immagine(Exif)→html genera gallerie HTML statiche da immagini
f-spot V:0.3, I:1.2 8219 immagine(Exif) applicazione per la gestione di fotografie personali (GNOME)
bins V:0.01, I:0.10 2008 immagine(Exif)→html genera album fotografici HTML statici usando XML e i tag EXIF
gallery2 V:0.11, I:0.2 62548 immagine(Exif)→html genera album fotografici HTML navigabili con miniature
outguess V:0.02, I:0.11 252 jpeg,png strumento steganografico universale
qcad V:0.7, I:1.9 31 DXF editor di dati CAD (KDE)
blender V:0.5, I:2 54560 blend, TIFF, VRML, … editor di contenuti 3D per animazioni, ecc.
mm3d V:0.03, I:0.18 4465 ms3d, obj, dxf, … editor di modelli 3D basato su OpenGL
open-font-design-toolkit I:0.06 27 ttf, ps, … metapacchetto per creazione di tipi di caratteri open
fontforge V:0.2, I:1.4 6696 ttf, ps, … editor di tipi di carattere per caratteri PS, TrueType e OpenType
xgridfit V:0.01, I:0.10 1060 ttf programa per il gridfitting e l'hinting di tipi di carattere TrueType

[Suggerimento] Suggerimento

Cercare ulteriori strumenti per le immagini usando l'espressione regolare "~Gworks-with::image" in aptitude(8) (vedere Sezione 2.2.6, «Opzioni per i metodi di ricerca in aptitude»).

Sebbene programmi con interfaccia utente grafica come gimp(1) siano molto potenti, strumenti a riga di comando come imagemagick(1) sono piuttosto utili per manipolare in modo automatico immagini con script.

Il formato standard di fatto per i file immagini delle fotocamere digitali è EXIF (Exchangeable Image File Format) che è il formato per file immagine JPEG con tag aggiuntivi con metadati. Può contenere informazioni come la data, l'orario e le impostazioni della fotocamera.

I diritti sulla compressione senza perdita di dati Lempel-Ziv-Welch (LZW) sono scaduti. Le utilità GIF (Graphics Interchange Format) che usano il metodo di compressione LZW sono ora disponibili liberamente sul sistema Debian.

[Suggerimento] Suggerimento

Qualsiasi fotocamera digitale o scanner con un supporto di archiviazione removibile funziona in Linux attraverso i lettori di archiviazione USB dato che segue le regole progettuali per i file system delle fotocamere e usa il file system FAT. Vedere Sezione 10.1.10, «Supporti di archiviazione removibili».

11.7. Conversioni di dati vari

Ci sono molti altri programmi per convertire dati. I pacchetti seguenti, trovati usando l'espressione regolare "~Guse::converting" in aptitude(8) (vedere Sezione 2.2.6, «Opzioni per i metodi di ricerca in aptitude»), hanno catturato la mia attenzione.

Tabella 11.18. Elenco di strumenti di conversione di dati vari

pacchetto popcon dimensione parola chiave descrizione
alien V:1.3, I:11 208 rpm/tgz→deb convertitore di pacchetti estranei in pacchetti Debian
freepwing V:0.00, I:0.02 568 EB→EPWING convertitore da "Electric Book" (popolare in Giappone) in un singolo formato JIS X 4081 (un sottoinsieme di EPWING V1)

Si possono estrarre i dati dal formato RPM anche nel modo seguente.

$ rpm2cpio file.src.rpm | cpio --extract