Capítulo 11. Conversão de dados

Índice

11.1. Ferramentas de conversão de dados em texto
11.1.1. Converter um ficheiro de texto com o iconv
11.1.2. Verifica ficheiro se é UTF-8 com o iconv
11.1.3. Converter os nomes dos ficheiros com o iconv
11.1.4. conversão EOL
11.1.5. Conversão de TAB
11.1.6. Editores com auto-conversão
11.1.7. Extracção de texto simples
11.1.8. Destacar e formatar dados de texto simples
11.2. Dados XML
11.2.1. Dicas básicas para XML
11.2.2. Processamento de XML
11.2.3. A extracção de dados de XML
11.3. Dados imprimíveis
11.3.1. Ghostscript
11.3.2. Fundir dois ficheiros PS ou PDF
11.3.3. Utilitários de dados imprimíveis
11.3.4. Imprimir com o CUPS
11.4. Formatação de texto
11.4.1. formatação de texto roff
11.4.2. TeX/LaTeX
11.4.3. Impressão bonita de um manual
11.4.4. Criar um manual
11.5. A conversão de dados de mail
11.5.1. Noções básicas de dados de mail
11.6. Ferramentas de dados gráficos
11.7. Conversão de dados variados

São descritas ferramentas e dicas para converter formatos de dados no sistema Debian.

As ferramentas baseadas em standards são muitos boas mas o suporte para formatos proprietários de dados é limitado.

11.1. Ferramentas de conversão de dados em texto

Os seguinte pacotes para a conversão de dados de texto saltaram-me à vista.

Tabela 11.1. Lista de ferramentas de conversão de dados em texto

pacote popcon tamanho palavra chave descrição
libc6 * V:96, I:99 10060 conjunto e caracteres (charset) converter codificação de texto entre locales por iconv(1) (fundamental)
recode * V:1.2, I:6 768 charset+eol conversor de codificação de texto entre locales (versátil, com mais nomes alternativos (alias) e funcionalidades)
konwert * V:0.4, I:5 192 conjunto e caracteres (charset) conversor de codificação de texto entre locales (imaginativo)
nkf * V:0.2, I:1.7 205 conjunto e caracteres (charset) tradutor de conjunto de caracteres para Japonês
tcs * V:0.02, I:0.11 544 conjunto e caracteres (charset) tradutor de conjunto de caracteres
unaccent * V:0.02, I:0.09 76 conjunto e caracteres (charset) substitui letras acentuadas pelo seu equivalente não acentuado
tofrodos * V:0.8, I:6 67 eol conversor de formato de texto entre DOS e Unix: de dos(1) e para dos(1)
macutils * V:0.04, I:0.3 320 eol conversor de formato de texto entre Macintosh e Unix: de mac(1) e para mac(1)

11.1.1. Converter um ficheiro de texto com o iconv

[Dica] Dica

iconv(1) é disponibilizado como parte do pacote libc6 e está sempre disponível em praticamente todos os sistemas para converter a codificação de caracteres.

Você pode converter a codificação de um ficheiro de texto com o iconv(1) com o seguinte.

$ iconv -f codificação1 -t codificação2 entrada.txt >saída.txt

Os valores de codificação são sensíveis a maiúsculas/minúsculas e ignoram "-" e "_" para correspondência. As codificações suportadas podem ser verificadas pelo comando "iconv -l"

Tabela 11.2. Lista de valores de codificação e a sua utilização

valor de codificação utilização
ASCII. American Standard Code for Information Interchange, código de 7 bits sem caracteres acentuados
UTF-8 standard multilingue actual para todos os sistemas operativos modernos
ISO-8859-1 antigo standard para linguagens da Europa ocidental, ASCII + caracteres acentuados
ISO-8859-2 antigo standard para linguagens da Europa oriental, ASCII + caracteres acentuados
ISO-8859-15 antigo standard para linguagens da Europa ocidental, o ISO-8859-1 com o símbolo do euro
CP850 página de código 850, caracteres DOS da Microsoft com gráficos para linguagens da Europa ocidental, variante ISO-8859-1
CP932 página de código 932, variante Shift-JIS do estilo Microsoft Windows para Japonês
CP936 página de código 936, variantes GB2312, GBK ou GB18030 do estilo Microsoft Windows para Chinês Simplificado
CP949 página de código 949, variante EUC-KR ou or Unified Hangul Code de estilo Microsoft Windows para Coreano
CP950 página de código 950, variante Big5 de estilo Microsoft Windows para Chinês Tradicional
CP1251 página de código 1251, codificação estilo Microsoft Windows para o alfabeto Cyrillic
CP1252 página de código 1252, variante ISO-8859-15 de estilo Microsoft Windows para linguagens de Europeu ocidental.
KOI8-R antigo standard Russo de UNIX para o alfabeto Cyrillic
ISO-2022-JP codificação standard para email Japonês que usar apenas códigos de 7 bits
eucJP antigo standard Unix de Japonês de código de 8 bits e completamente diferente do Shift-JIS
Shift-JIS JIS X 0208 Appendix 1 standard para Japonês (veja CP932)

[Nota] Nota

Algumas codificações são apenas suportadas para conversão de dados e não são usados como valores do locale (Secção 8.3.1, “Bases de codificação”).

Para os conjuntos de caracteres que cabem num byte único como os conjuntos de caracteres ASCII e ISO-8859, a codificação de caracteres significa quase o mesmo que o conjunto de caracteres.

Para conjuntos de caracteres com muitos caracteres como o JIS X 0213 para Japonês ou Universal Character Set (UCS, Unicode, ISO-10646-1) para praticamente todas as linguagens, existem muitos esquemas de codificação para os colocar na sequência dos dados do byte.

Para estes, existem diferenciações claras entre o conjunto de caracteres e a codificação de caracteres.

A página de código é usada para como o sinónimo para as tabelas de codificação de caracteres para alguns específicos de marcas.

[Nota] Nota

Por favor note que a maioria dos sistemas de codificação partilham o mesmo código com o ASCII para os caracteres de 7 bits. Mas há algumas excepções Se você está a converter programas C antigos Japoneses e dados de URLs a partir do casualmente chamado formato de codificação shift-JIS para o formato UTF-8, use "CP932" como o nome de codificação em vez de "shift-JIS" para obter os resultados esperados: 0x5C → "\" e 0x7E → "~" . Caso contrário, estes são convertidos para caracteres errados.

[Dica] Dica

O recode(1) também pode ser usado e oferece mais do que as funcionalidades combinadas do iconv(1), fromdos(1), todos(1), frommac(1), e tomac(1). Para mais, veja "info recode".

11.1.2. Verifica ficheiro se é UTF-8 com o iconv

Você pode verificar se um ficheiro de texto está codificado em UTF-8 com o iconv(1) com o seguinte.

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

Use a opção "--verbose" no exemplo em cima para encontrar o primeiro caractere não-UTF-8.

11.1.3. Converter os nomes dos ficheiros com o iconv

Aqui está um script exemplo para converter a codificação dos nomes de ficheiros daqueles criados sob sistemas operativos antigos para os modernos de UTF-8 num único directório.

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

A variável "$ENCDN" deve ser definida pelo valor de codificação em Tabela 11.2, “Lista de valores de codificação e a sua utilização”.

Para um caso mais complicado, por favor monte um sistema de ficheiros (ex. uma partição de uma unidade de disco) que contenha tais nomes de ficheiros com a codificação apropriada como opção do mount(8) (veja Secção 8.3.6, “Codificação de nomes de ficheiros”) e copie o seu conteúdo inteiro para outro sistema de ficheiros montado como UTF-8 com o comando "cp -a".

11.1.4. conversão EOL

O formato de ficheiro de texto, especificamente o código de fim de linha (EOL), é dependente da plataforma.

Tabela 11.3. Lista de estilos EOL para diferentes plataformas

plataforma código EOL controle decimal hexadecimal
Debian (unix) LF ^J 10 0A
MSDOS e Windows CR-LF ^M^J 13 10 0D 0A
Macintosh da Apple CR ^M 13 0D

Os programas de conversão de formato EOL, fromdos(1), todos(1), frommac(1), e tomac(1), são muito habilidosos. O recode(1) também é útil.

[Nota] Nota

Alguns dados no sistema Debian, como os dados da página wiki para o pacote python-moinmoin, usam o estilo MSDOS (CR-LF) como o código de EOL. Então a regra em cima é apenas uma regra geral.

[Nota] Nota

A maioria dos editores (ex. vim, emacs, gedit, …) podem lidar com ficheiros em estilo EOL de MSDOS transparentemente.

[Dica] Dica

O uso de "sed -e '/\r$/!s/$/\r/'" em vez de todos(1) é melhor quando pretende unificar o estilo de EOL para o estilo do MSDOS a partir da mistura de estilos de MSDOS e Unix. (ex. após fundir 2 ficheiros de estilo MSDOS com o diff3(1).) Isto porque o todos adiciona CR a todas as linhas.

11.1.5. Conversão de TAB

Existem alguns programas populares especializados para converter os códigos de tab.

Tabela 11.4. Lista de comandos de conversão de TAB dos pacotes bsdmainutils e coreutils

função bsdmainutils coreutils
expande tab para espaços "col -x" expand
contrai tab a partir de espaços "col -h" unexpand

indent(1) do pacote indent reformata completamente os espaços em branco no programa C.

Os programas editores como o vim e o emacs também podem ser usados para conversão de TAB. Por exemplo com o vim, você pode expandir a TAB com a sequência de comandos ":set expandtab" e ":%retab". Você pode reverter isto com a sequência de comandos ":set noexpandtab" e ":%retab!".

11.1.6. Editores com auto-conversão

Os editores modernos inteligentes como o programa vim são bastante inteligentes e lidam bem com quaisquer sistemas de codificação e quaisquer formatos de ficheiro. Você deve usar estes editores sob o locale UTF-8 numa consola com capacidades de UTF-8 para melhor compatibilidade.

Um antigo ficheiro de texto Unix em Europeu ocidental, "u-file.txt", armazenado com a codificação latin1 (iso-8859-1) pode ser editado com o vim com o seguinte.

$ vim u-file.txt

Isto é possível porque o mecanismo de auto detecção da codificação do ficheiro no vim assume primeiro a codificação UTF-8 e, se falhar, assume que é latin1.

Um antigo ficheiro de texto Unix em Polaco, "pu-file.txt", armazenado com a codificação latin2 (iso-8859-2) pode ser editado com o vim com o seguinte.

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

Um antigo ficheiro de texto unix em Japonês, "ju-file.txt", armazenado com a codificação eucJP pode ser editado com o vim com o seguinte.

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

Um antigo ficheiro de texto do MS Windows em Japonês, "jw-file.txt", armazenado na chamada codificação shift-JIS (mais precisamente: CP932) pode ser editado com o vim com o seguinte.

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

Quando um ficheiro é aberto com as opções "++enc" e "++ff", o ":w" na linha de comandos do Vim guarda-o no formato original e sobrescreve o ficheiro original. Você também pode especificar o formato de gravação e o nome do ficheiro na linha de comandos do Vim, ex., ":w ++enc=utf8 new.txt".

Por favor consulte o mbyte.txt "suporte a texto multi-byte" na ajuda on-line do vim e Tabela 11.2, “Lista de valores de codificação e a sua utilização” para os valores de locale usados com "++enc".

A família de programas emacs pode executar as funções equivalentes.

11.1.7. Extracção de texto simples

O seguinte lê uma página web para um ficheiro de texto. Isto é muito útil quando se copia as configurações da Web ou se aplica ferramentas de texto básicas do Unix como o grep(1) numa página web.

$ w3m -dump http://www.remote-site.com/help-info.html >ficheiro_de_texto

De modo semelhante, você pode extrair dados de texto simples a partir de outros formatos usando o seguinte.

Tabela 11.5. Lista de ferramentas para extracção de dados de texto simples

pacote popcon tamanho palavra chave função
w3m * V:24, I:86 1911 html→texto Conversor de HTML para texto com o comando "w3m -dump"
html2text * V:12, I:34 248 html→texto Conversor de HTML para texto avançado (ISO 8859-1)
lynx * I:19 252 html→texto Conversor de HTML para texto com o comando "lynx -dump"
elinks * V:1.9, I:5 1365 html→texto Conversor de HTML para texto com o comando "elinks -dump"
links * V:2, I:7 1165 html→texto Conversor de HTML para texto com o comando "links -dump"
links2 * V:0.6, I:3 2972 html→texto Conversor de HTML para texto com o comando "links2 -dump"
antiword * V:1.0, I:2 796 MSWord→texto,ps converte ficheiros do MSWord para texto simples ou ps
catdoc * V:0.8, I:1.7 2668 MSWord→texto,TeX converte ficheiros do MSWord para texto simples ou TeX
pstotext * V:0.6, I:1.0 148 ps/pdf→texto extrai texto de ficheiros PostScript e PDF
unhtml * V:0.01, I:0.12 76 html→texto remove as etiquetas de marcas de um ficheiro HTML
odt2txt * V:0.7, I:1.2 100 odt→texto conversor de texto do OpenDocument para texto
wpd2sxw * V:0.01, I:0.09 NOT_FOUND WordPerfect→sxw Conversor de documentos do WordPerfect para OpenOffice.org/StarOffice writer

11.1.8. Destacar e formatar dados de texto simples

Você pode destacar e formatar dados de texto simples com o seguinte.

Tabela 11.6. Lista de ferramentas para destacar dados em texto simples

pacote popcon tamanho palavra chave descrição
vim-runtime * V:3, I:42 22239 destaque MACRO do Vim para converter código fonte em HTML com ":source $VIMRUNTIME/syntax/html.vim"
cxref * V:0.04, I:0.2 1252 c→html conversor de programa C para latex e HTML (linguagem C)
src2tex * V:0.02, I:0.19 1968 destaque converte muitos códigos fonte para TeX (linguagem C)
source-highlight * V:0.14, I:0.9 1868 destaque converte muitos códigos fonte para HTML, XHTML, LaTeX, Texinfo, sequências de escape do cores ANSI e ficheiros do DocBook com destaques (C++)
highlight * V:0.2, I:1.5 725 destaque converte muitos códigos fonte para HTML, XHTML, RTF, LaTeX, TeX ou ficheiros XSL-FO com destaques (C++)
grc * V:0.04, I:0.13 232 texto→cor colorizador genérico para tudo (Python)
txt2html * V:0.08, I:0.4 296 texto→html conversor de texto para HTML (Perl)
markdown * V:0.07, I:0.4 96 texto→html formatador de documentos de texto markdown para (X)HTML (Perl)
asciidoc * V:0.14, I:1.1 3133 texto→qualquer formatador de documentos de texto AsciiDoc para XML/HTML (Python)
python-docutils * V:0.4, I:3 1548 texto→qualquer Formatador de documento de Texto Re-Estruturado para XML (Python)
txt2tags * V:0.06, I:0.3 1152 texto→qualquer conversão de documentos de texto para HTML, SGML, LaTeX, man page, MoinMoin, Magic Point e PageMaker (Python)
udo * V:0.00, I:0.05 556 texto→qualquer documento universal - utilitário de processamento de texto (linguagem C)
stx2any * V:0.00, I:0.04 484 texto→qualquer conversor de documentos de texto simples estruturado para outros formatos (m4)
rest2web * V:0.01, I:0.07 576 texto→html conversor de documentos de Texto Re-Estruturado para html (Python)
aft * V:0.00, I:0.04 259 texto→qualquer sistema de preparação de documentos de "formato livre" (Perl)
yodl * V:0.00, I:0.05 409 texto→qualquer linguagem de pré-documento e ferramentas para a processar (linguagem C)
sdf * V:0.01, I:0.07 1414 texto→qualquer analisador de documentos simples (Perl)
sisu * V:0.01, I:0.08 9083 texto→qualquer infraestrutura de estruturação de documentos, publicação e busca (Ruby)

11.2. Dados XML

A The Extensible Markup Language (XML) é uma linguagem de marcação para documentos que contêm informação estruturada.

Veja informação de introdução em XML.COM.

11.2.1. Dicas básicas para XML

O texto em XML parece-se com HTML. Permite-nos gerir múltiplos formatos de saída de um documento. Um sistema XML fácil é o pacote docbook-xsl, o qual é usado aqui.

Cada ficheiro XML começa com a declaração XML standard como o seguinte.

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

A sintaxe básica para um elemento XML é marcado como se segue.

<nome atributo="valor">conteúdo</nome>

O elemento XML com conteúdo vazio é marcado no seguinte formato curto.

<nome atributo="valor"/>

O "atributo="valor"" nos exemplos em cima é opcional.

A secção de comentários em XML está marcada como se segue.

<!-- comment -->

Em vez de adicionar marcações, o XML requer conversão menor ao conteúdo usando entidades predefinidas para os seguintes caracteres.

Tabela 11.7. Lista de entidades predefinidas para XML

entidade predefinida caractere a ser convertido de
&quot; " : cotação
&apos; ' : apostrofe
&lt; < : menor-que
&gt; > : maior-que
&amp; & : ampersand

[Cuidado] Cuidado

"<" ou "&" não podem ser usados em atributos ou elementos.

[Nota] Nota

Quando são usadas entidades definidas pelo utilizador de estilos SGML, ex. "&some-tag:", a primeira definição ganha sobre as outras. A definição de entidade é expressa em "<!ENTITY alguma-etiqueta "valor da entidade">".

[Nota] Nota

Desde que as marcações de XML sejam feitas de modo consistente com um certo conjunto de nomes de etiquetas (em vez de alguns dados como conteúdo ou valor de atributo), a conversão para outro XML é uma tarefa trivial usando Extensible Stylesheet Language Transformations (XSLT).

11.2.2. Processamento de XML

Existem muitas ferramentas disponíveis para processar ficheiros XML como o Extensible Stylesheet Language (XSL).

Basicamente, após você criar um ficheiro XML bem formado, pode convertê-lo para qualquer formato usando o Extensible Stylesheet Language Transformations (XSLT).

A Extensible Stylesheet Language for Formatting Object (XSL-FO) é suposto ser a solução para formatação. O pacote fop ainda está no arquivo contrib (não no main) do Debian. Portanto o código LaTeX é geralmente gerado a partir de XML usando XSLT e o sistema LaTeX é usado para criar ficheiros imprimíveis como o DVI, PostScript, e PDF.

Tabela 11.8. Lista de ferramentas XML

pacote popcon tamanho palavra chave descrição
docbook-xml * I:49 2488 xml definição de tipo de documento XML (DTD) para DocBook
xsltproc * V:4, I:44 180 xslt processador de linha de comandos XSLT (XML→ XML, HTML, texto simples, etc.)
docbook-xsl * I:12 11589 xml/xslt folhas de estilo XSL para processar XML do DocBook para vários formatos de saída com XSLT
xmlto * V:0.2, I:2 268 xml/xslt conversor de XML-para-qualquer com XSLT
dblatex * V:0.3, I:2 7264 xml/xslt converte ficheiros do Docbook para documentos DVI, PostScript, PDF com o XSLT
fop * V:0.5, I:3 3088 xml/xsl-fo converter ficheiros Docbook XML para PDF

Como o XML é um sub-conjunto da Standard Generalized Markup Language (SGML), pode ser processado pelas ferramentas extensivas disponíveis para SGML, como o Document Style Semantics and Specification Language (DSSSL).

Tabela 11.9. Lista de ferramentas DSSL

pacote popcon tamanho palavra chave descrição
openjade * V:0.3, I:2 1180 dsssl ISO/IEC 10179:1996 processador DSSSL standard (mais recente)
openjade1.3 * V:0.02, I:0.11 2288 dsssl ISO/IEC 10179:1996 processador DSSSL standard (série 1.3.x)
jade * V:0.3, I:2 872 dsssl processador DSSSL original de James Clark (série 1.2.x)
docbook-dsssl * V:0.4, I:3 3100 xml/dsssl folhas de estilo DSSSL para processar XML do DocBook para vários formatos de saída com DSSSL
docbook-utils * V:0.2, I:1.7 440 xml/dsssl utilitários para ficheiros do DocBook incluindo a conversão para outros formatos (HTML, RTF, PS, man, PDF) com comandos docbook2* com DSSSL
sgml2x * V:0.00, I:0.06 216 SGML/dsssl conversor de SGML e XML que usa folhas de estilo DSSSL

[Dica] Dica

O yelp do GNOME por vezes é jeitoso para ler ficheiros XML do DocBook directamente pois ele renderiza directamente no X.

11.2.3. A extracção de dados de XML

Você pode extrair dados de HTML ou XML a partir de outros formatos usando os seguintes.

Tabela 11.10. Lista de ferramentas de extracção de dados de XML

pacote popcon tamanho palavra chave descrição
wv * V:0.7, I:1.7 391 MSWord→qualquer conversor de documentos Microsoft Word para HTML, LaTeX, etc.
texi2html * V:0.2, I:2 2076 texi→html conversor de Texinfo para HTML
man2html * V:0.16, I:0.8 180 manpage→html conversor de manual (manpage) para HTML (suporte a CGI)
tex4ht * V:0.3, I:3 924 tex↔html conversor entre (La)TeX e HTML
xlhtml * V:0.3, I:0.9 184 MSExcel→html conversor de .xls do MSExcel para HTML
ppthtml * V:0.3, I:0.8 120 MSPowerPoint→html conversor de MSPowerPoint para HTML
unrtf * V:0.4, I:0.8 224 rtf→html conversor de documentos de RTF para HTML, etc
info2www * V:0.6, I:1.0 156 info→html conversor de info do GNU para HTML (suporte a CGI)
ooo2dbk * V:0.03, I:0.10 941 sxw→xml conversor de documentos SXW do OpenOffice.org para documentos XML do DocBook
wp2x * V:0.01, I:0.06 240 WordPerfect→qualquer Ficheiros do WordPerfect 5.0 e 5.1 para TeX, LaTeX, troff, GML e HTML
doclifter * V:0.00, I:0.03 460 troff→xml conversor de troff para DocBook XML

Para ficheiros HTML não-XML, você pode convertê-los para XHTML o que é uma instância de XML bem formado. O XHTML pode ser processado por ferramentas de XML.

Tabela 11.11. Lista de ferramentas de impressão bonita de XML

pacote popcon tamanho palavra chave descrição
libxml2-utils * V:4, I:50 171 xml↔html↔xhtml ferramenta de XML de linha de comandos com xmllint(1) (verificação de sintaxe, reformatação, lint, …)
tidy * V:0.6, I:5 108 xml↔html↔xhtml Verificador e reformatador de sintaxe HTML

Após o XML apropriado ser gerado, você pode usar a tecnologia XSLT para extrair dados baseados no contexto de marcações e etc.

11.3. Dados imprimíveis

Os dados imprimíveis são expressos no formato PostScript no sistema Debian. O Common Unix Printing System (CUPS) usa o Ghostscript como o seu programa backend de rasterização para as impressoras não-PostScript.

11.3.1. Ghostscript

O núcleo da manipulação de dados imprimíveis é o interpretador PostScript (PS) Ghostscript o qual gera imagem em rasterização.

O Ghostscript original mais recente da Artifex foi re-licenciado de AFPL para GPL e fundiu todas as alterações da versão ESP mais recente como as relacionadas com o CUPS no lançamento 8.60 como um lançamento unificado.

Tabela 11.12. Lista de interpretadores PostScript Ghostscript

pacote popcon tamanho descrição
ghostscript * V:17, I:61 198 O interpretador de PostScript/PDF Ghostscript GPL
ghostscript-x * V:7, I:17 195 Interpretador de PostScript/PDF Ghostscript GPL - suporte a ecrã X
gs-cjk-resource * V:2, I:15 4528 ficheiros de recurso para gs-cjk, a extensão TrueType CJK do Ghostscript
cmap-adobe-cns1 * V:0.04, I:0.2 1572 CMaps para Adobe-CNS1 (para suporte a Chinês tradicional)
cmap-adobe-gb1 * V:0.04, I:0.2 1552 CMaps para Adobe-GB1 (para suporte a Chinês simplificado)
cmap-adobe-japan1 * V:1.7, I:13 2428 CMaps para Adobe-Japan1 (para suporte standard a Japonês)
cmap-adobe-japan2 * I:0.3 416 CMaps para Adobe-Japan2 (para suporte extra a Japonês)
cmap-adobe-korea1 * V:0.18, I:1.2 872 CMaps para Adobe-Korea1 (para suporte a Coreano)
libpoppler5 * I:34 NOT_FOUND Biblioteca de renderização de PDF baseada no visualizador de PDF xpdf
libpoppler-glib4 * I:30 NOT_FOUND Biblioteca de renderização de PDF (biblioteca de partilha baseada em GLib)
poppler-data * I:17 12240 CMaps para suporte à biblioteca de renderização de PDF (para CJK: Adobe-*)

[Dica] Dica

"gs -h" pode mostrar a configuração do Ghostscript.

11.3.2. Fundir dois ficheiros PS ou PDF

você pode unir dois ficheiros PostScript (PS) ou Portable Document Format (PDF) usando o gs(1) do Ghostscript.

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

O PDF, que é um formato de dados imprimíveis amplamente usado em várias plataformas, é essencialmente o formato PS comprimido com algumas funcionalidades e extensões adicionais.

[Dica] Dica

Para a linha de comandos, o psmerge(1) e outros comandos do pacote psutils são úteis para manipular documentos em PostScript. Os comandos no pacote pdfjam funcionam de modo semelhante para manipular documentos em PDF. O pdftk(1) do pacote pdftk também é útil para manipular documentos em PDF.

11.3.3. Utilitários de dados imprimíveis

Os seguintes pacotes para utilitários de dados imprimíveis chamaram a minha atenção.

Tabela 11.13. Lista de utilitários de dados imprimíveis

pacote popcon tamanho palavra chave descrição
poppler-utils * V:10, I:53 556 pdf→ps,text,… Utilitários de PDF: pdftops, pdfinfo, pdfimages, pdftotext, pdffonts
psutils * V:2, I:19 380 ps→ps Ferramentas de conversão de documentos PostScript
poster * V:0.5, I:4 80 ps→ps criar grandes posters de páginas PostScript
xpdf-utils * V:0.2, I:2 NOT_FOUND pdf→ps,text,… Utilitários de PDF: pdftops, pdfinfo, pdfimages, pdftotext, pdffonts
enscript * V:0.9, I:9 2460 text→ps, html, rtf converter texto ASCII para PostScript, HTML, RTF ou Pretty-Print
a2ps * V:1.5, I:7 4292 text→ps Conversor de 'Qualquer coisa para PostScript' e pretty-printer
pdftk * V:1.0, I:5 3038 pdf→pdf Ferramenta de conversão de documentos PDF: pdftk
mpage * V:0.14, I:1.0 224 text,ps→ps imprimir múltiplas páginas por folha
html2ps * V:0.2, I:1.4 320 html→ps conversor de HTML para PostScript
pdfjam * V:0.2, I:1.5 228 pdf→pdf Ferramentas de conversão de documentos PDF: pdf90, pdfjoin, e pdfnup
gnuhtml2latex * V:0.05, I:0.4 60 html→latex conversor de html para latex
latex2rtf * V:0.13, I:0.9 508 latex→rtf conversor de documentos LaTeX para RTF que podem ser lidos pelo MS Word
ps2eps * V:1.3, I:12 136 ps→eps conversor de PostScript para EPS (PostScript Encapsulado)
e2ps * V:0.01, I:0.09 188 text→ps Conversor de texto para PostScript com suporte a codificação Japonesa
impose+ * V:0.02, I:0.2 180 ps→ps Utilitários do PostScript
trueprint * V:0.01, I:0.10 188 text→ps impressão bonita de muitos códigos fonte (C, C++, Java, Pascal, Perl, Pike, Sh, e Verilog) para PostScript. (linguagem C)
pdf2svg * V:0.11, I:0.6 60 ps→svg conversor de PDF para formato Gráficos vectoriais escaláveis
pdftoipe * V:0.02, I:0.14 88 ps→ipe conversor de PDF para formato XML de IPE

11.3.4. Imprimir com o CUPS

Ambos comandos lp(1) e lpr(1) oferecidos pelo Common Unix Printing System (CUPS) disponibilizam opções para impressão personalizada dos dados a imprimir.

Você pode imprimir 3 cópias coligidas de um ficheiro usando um dos seguintes comandos.

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

Você pode personalizar ainda mais as operações da impressora ao usar opções da impressão como "-o number-up=2", "-o page-set=even", "-o page-set=odd", "-o scaling=200", "-o natural-scaling=200", etc., documentadas em Impressão em Linha de Comandos e Opções.

11.4. Formatação de texto

O programa troff do Unix desenvolvido originalmente pela AT&T pode ser usado para formatação de texto simples. É geralmente usado para criar as páginas de manual (manpages).

O TeX criado por Donald Knuth é uma ferramenta de formatação de texto muito poderosa e é o standard de facto. O LaTeX originalmente escrito por Leslie Lamport permite um acesso de alto nível ao poder do TeX.

Tabela 11.14. Lista de ferramentas de formatação de texto

pacote popcon tamanho palavra chave descrição
texlive * I:8 94 (La)TeX sistema TeX para formatação de texto, pre-visualização e impressão
groff * V:1.1, I:9 9388 troff O sistema de formato de texto troff do GNU

11.4.1. formatação de texto roff

Tradicionalmente, o roff é o sistema de processamento de texto principal do Unix. Veja 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".

Você pode ler ou imprimir um bom tutorial e referência à macro "-me" em "/usr/share/doc/groff/" ao instalar o pacote groff.

[Dica] Dica

"groff -Tascii -me -" produz resultados em texto simples com código de escape ANSI. Se você deseja obter resultados tipo manpage com muitos "^H" e "_", então use "GROFF_NO_SGR=1 groff -Tascii -me -".

[Dica] Dica

Para remover "^H" e "_" de um ficheiro de texto gerado pelo groff, filtre-o com "col -b -x".

11.4.2. TeX/LaTeX

A distribuição de software TeX Live oferece um sistema TeX completo. O meta-pacote texlive disponibiliza uma selecção decente dos pacotes TeX Live que deverão ser suficientes para as tarefas mais comuns.

Existem muitas referências disponíveis para TeX e LaTeX.

  • O HOWTO do The teTeX: O Guia Local de Linux-teTeX

  • tex(1)

  • latex(1)

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

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

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

Este é o ambiente de formatação de texto mais poderoso. Muitos processadores SGML usam isto como processador de texto em backend. O Lyx disponibilizado pelo pacote lyx e o GNU TeXmacs disponibilizado pelo pacote texmacs oferecem um bom ambiente de edição OQVEOQT para o LaTeX enquanto muitos usam o Emacs e o Vim como a sua escolha para editor de código fonte.

Existem muitos recursos online disponíveis.

Quando os documentos ficam maiores, por vezes o TeX pode causar erros. Você tem de aumentar o tamanho do pool em "/etc/texmf/texmf.cnf" (ou mais apropriadamente editar o "/etc/texmf/texmf.d/95NonPath" e correr update-texmf(8)) para corrigir isto.

[Nota] Nota

A fonte TeX de "The TeXbook" está disponível em http://tug.ctan.org/tex-archive/systems/knuth/dist/tex/texbook.tex.

Este ficheiro contém a maioria das macros necessárias. Eu ouvi que você pode processar este documento com o tex(1) após comentar as linhas 7 a 10 e adicionando "\input manmac \proofmodefalse". É fortemente recomendo comprar este livro (e todos os outros livros de Donald E. Knuth) em vez de usar a versão online mas a fonte é um grande exemplo de entrada em TeX!

11.4.3. Impressão bonita de um manual

Você consegue uma impressão bonita dum manual em PostScript com um dos seguintes comandos.

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

O segundo exemplo imprime duas páginas em cada folha.

11.4.4. Criar um manual

Apesar de escrever um manual (manpage) no formato troff simples ser possível, existem alguns programas que ajudam a criá-lo.

Tabela 11.15. Lista de pacotes para ajudar a criar o manual (manpage)

pacote popcon tamanho palavra chave descrição
docbook-to-man * V:0.3, I:2 240 SGML→manpage conversor de DocBook SGML para macros roff man
help2man * V:0.13, I:0.9 532 texto→manpage geração automática de manual a partir do --help
info2man * V:0.02, I:0.10 204 info→manpage conversor de info do GNU para POD ou páginas man
txt2man * V:0.03, I:0.2 88 texto→manpage converte texto ASCII simples para o formato de página man

11.5. A conversão de dados de mail

Os seguintes pacotes para conversão de dados de mail chamaram a minha atenção.

Tabela 11.16. Lista de pacotes para ajudar na conversão de dados de mail

pacote popcon tamanho palavra chave descrição
sharutils * V:1.8, I:19 1408 mail shar(1), unshar(1), uuencode(1), uudecode(1)
mpack * V:1.0, I:14 84 MIME codificar e descodificar mensagens MIME: mpack(1) e munpack(1)
tnef * V:0.5, I:1.3 164 ms-tnef descompactar anexos MIME do tipo "application/ms-tnef" o qual é um formato apenas da Microsoft
uudeview * V:0.13, I:1.2 132 mail codificador e descodificador dos seguintes formatos: uuencode, xxencode, BASE64, quoted printable, e BinHex
readpst * V:0.04, I:0.2 228 PST converter ficheiros PST do Outlook da Microsoft para formato mbox

[Dica] Dica

O servidor de Internet Message Access Protocol versão 4 (IMAP4) (veja Secção 6.7, “Servidor POP3/IMAP4”) pode ser usado para mover mails de sistemas de mail proprietários se o software cliente de mail puder ser configurado para usar também o servidor IMAP4.

11.5.1. Noções básicas de dados de mail

Os dados (SMTP) do mail devem data ser limitados a 7 bits. Portanto os dados binários e os dados de texto a 8 bits são codificados em formato de 7 bits com o Multipurpose Internet Mail Extensions (MIME) e a selecção do conjunto de caracteres (veja Secção 8.3.1, “Bases de codificação”).

O formato de armazenamento de mail standard é mbox de acordo com RFC2822 (RFC822 actualizado). Veja mbox(5) (disponibilizado pelo pacote mutt).

Para as linguagens Europeias, "Content-Transfer-Encoding: quoted-printable" com o junto de caracteres ISO-8859-1 é geralmente usado para mail porque não existem muitos caracteres de 8 bits. Se o texto Europeu estiver codificado em UTF-8, é provável que seja usado o "Content-Transfer-Encoding: quoted-printable" pois é maioritariamente dados de 7 bits.

para Japonês, tradicionalmente usa-se "Content-Type: text/plain; charset=ISO-2022-JP" para o mail para manter o texto em 7 bits. Mas os sistemas mais antigos da Microsoft podem enviar dados de mail em Shift-JIS sem a declaração apropriada. Se o testo Japonês for codificado em UTF-8, é provável que se use Base64 pois contém muitos dados de 8 bits. A situação de outras linguagens Asiáticas é semelhante.

[Nota] Nota

Se os seus dados de mail não-Unix são acessíveis por um software cliente não-Debian o qual pode falar com o servidor IMAP4, você pode ser capaz de movê-los para fora ao correr o seu próprio servidor IMAP4 (veja Secção 6.7, “Servidor POP3/IMAP4”).

[Nota] Nota

Se você usa outros formatos de armazenamento de mail, movê-los para o formato mbox é um bom primeiro passo. Um programa cliente versátil como o mutt(1) pode dar jeito para isto.

Você pode dividir os conteúdos da mailbox para cada mensagem usando o procmail(1) e o formail(1).

Cada mensagem de mail pode ser desempacotada usando o munpack(1) do pacote mpack (ou outras ferramentas especializadas) para obter os conteúdos codificados em MIME.

11.6. Ferramentas de dados gráficos

Os seguintes pacotes para conversão de dados gráficos, edição e ferramentas de organização chamaram a minha atenção.

Tabela 11.17. Lista de ferramentas de dados gráficos

pacote popcon tamanho palavra chave descrição
gimp * V:13, I:46 13042 imagem(bitmap) GNU Image Manipulation Program
imagemagick * V:23, I:46 207 imagem(bitmap) programas de manipulação de imagens
graphicsmagick * V:1.1, I:2 4394 imagem(bitmap) programas de manipulação de imagens (parentes do imagemagick)
xsane * V:5, I:35 1368 imagem(bitmap) Frontend X11 baseado em GTK+ para o SANE (Scanner Access Now Easy)
netpbm * V:5, I:44 4564 imagem(bitmap) ferramentas de conversão de gráficos
icoutils * V:0.5, I:2 160 png↔ico(bitmap) converte ícones e cursores do MS Windows de e para formatos PNG (favicon.ico)
scribus * V:0.5, I:2 57760 ps/pdf/SVG/… editor de DTP do Scribus
openoffice.org-draw * V:13, I:30 164 imagem(vector) suite de escritório do OpenOffice.org - desenho
inkscape * V:18, I:36 83268 imagem(vector) editor de SVG (Scalable Vector Graphics)
dia-gnome * V:1.2, I:2 558 imagem(vector) editor de diagramas (GNOME)
dia * V:2, I:4 555 imagem(vector) editor de diagramas (Gtk)
xfig * V:1.7, I:3 1597 imagem(vector) habilidade para Geração interactiva de figuras sob X11
pstoedit * V:3, I:33 736 ps/pdf→imagem(vector) conversor de ficheiro PostScript e PDF para gráficos vectoriais editáveis (SVG)
libwmf-bin * V:2, I:29 132 Windows/imagem(vector) ferramentas de conversão de meta-ficheiros do Windows (dados de gráficos vectoriais)
fig2sxd * V:0.03, I:0.17 200 fig→sxd(vector) converte ficheiros XFig para o formato do OpenOffice.org Draw
unpaper * V:0.2, I:1.6 736 imagem→imagem ferramenta de pós-processamento para páginas digitalizadas em scanner para OCR
tesseract-ocr * V:0.6, I:3 2926 imagem→texto software livre de OCR baseado no motor de OCR comercial da HP
tesseract-ocr-eng * V:0.2, I:3 1752 imagem→texto Dados de motor OCR: ficheiros de linguagem tesseract-ocr para texto Inglês
gocr * V:0.6, I:4 492 imagem→texto software de OCR livre
ocrad * V:0.2, I:2 254 imagem→texto software de OCR livre
gtkam * V:0.19, I:1.3 1255 imagem(Exif) manipular ficheiros de fotos de cameras digitais (GNOME) - GUI
gphoto2 * V:0.3, I:2 844 imagem(Exif) manipular ficheiros de fotos de cameras digitais (GNOME) - linha de comandos
kamera * V:0.3, I:8 198 imagem(Exif) manipular ficheiros de fotos de cameras digitais (KDE)
jhead * V:0.5, I:2 140 imagem(Exif) manipula a parte de não-imagem de ficheiros JPEG compatíveis com Exif (fotos de câmeras digitais)
exif * V:0.3, I:1.7 212 imagem(Exif) utilitário de linha de comandos para mostrar informação EXIF nos ficheiros JPEG
exiftags * V:0.10, I:0.7 208 imagem(Exif) utilitário para ler etiquetas Exif de ficheiros JPEG de câmeras digitais
exiftran * V:0.5, I:3 87 imagem(Exif) transformar imagens jpeg de cameras digitais
exifprobe * V:0.07, I:0.4 484 imagem(Exif) ler metadados de imagens digitais
dcraw * V:0.8, I:4 424 imagem(Raw)→ppm descodifica imagens cruas de câmeras digitais
findimagedupes * V:0.04, I:0.2 123 image→fingerprint encontra imagens visualmente semelhantes ou duplicadas
ale * V:0.02, I:0.12 757 imagem→imagem funde imagens para aumentar a fidelidade ou criar mosaicos
imageindex * V:0.02, I:0.15 192 imagem(Exif)→html gera galerias HTML estáticas a partir de imagens
f-spot * V:0.4, I:1.4 9608 imagem(Exif) aplicação de gestão de fotos pessoais (GNOME)
bins * V:0.02, I:0.12 2008 imagem(Exif)→html gera álbuns de fotos estáticos em HTML usando XML e etiquetas EXIF
gallery2 * V:0.14, I:0.2 62548 imagem(Exif)→html gera álbuns de fotos exploráveis em HTML com miniaturas
outguess * V:0.02, I:0.11 252 jpeg,png ferramenta de Esteganografia universal
qcad * V:0.9, I:2 31 DXF editor de dados CAD (KDE)
blender * V:0.5, I:3 39343 blend, TIFF, VRML, … editor de conteúdos 3D para animação e etc
mm3d * V:0.02, I:0.2 4536 ms3d, obj, dxf, … editor de modelos 3D baseado em OpenGL
open-font-design-toolkit * I:0.06 27 ttf, ps, … meta pacote para desenho de font aberta
fontforge * V:0.19, I:1.4 6958 ttf, ps, … editor de tipo de letra para fonts PS, TrueType e OpenType
xgridfit * V:0.01, I:0.10 1060 ttf programa para ajustar à grelha e indicar tipos de letra TrueType
gbdfed * V:0.00, I:0.08 NOT_FOUND bdf editor de tipos de letra BDF

[Dica] Dica

Procure mais ferramentas de imagem com a expressão regular "~Gworks-with::image" no aptitude(8) (veja Secção 2.2.6, “Opções do método de pesquisa com o aptitude”).

Apesar dos programas com GUI como o gimp(1) serem muito poderosos, as ferramentas de linha de comandos como o imagemagick(1) são bastante úteis para automatizar a manipulação de imagens com scripts.

O formato de facto de ficheiros de imagem das câmeras digitais é o Exchangeable Image File Format (EXIF) o qual é o formato de ficheiros de imagem JPEG com etiquetas de meta-dados adicionais. Pode conter informações como a data, hora e definições da camera.

A patente de compressão de dados sem perdas de Lempel-Ziv-Welch (LZW) expirou. Os utilitários de Graphics Interchange Format (GIF) que usam o método de compressão LZW estão agora livremente disponíveis no sistema Debian.

[Dica] Dica

Qualquer camera digital ou scanner com meio de gravação amovível funciona em Linux através de leitores de armazenamento USB desde que sigam as Regras de Desenho para Sistemas de Ficheiros de Câmeras e usem o sistema de ficheiros FAT. Veja Secção 10.1.10, “Dispositivo de armazenamento amovível”.

11.7. Conversão de dados variados

Existem muitos outros programas para converter dados. Os pacotes seguintes chamaram a minha atenção usando a expressão regular "~Guse::converting" no aptitude(8) (veja Secção 2.2.6, “Opções do método de pesquisa com o aptitude”).

Tabela 11.18. Lista de ferramentas de conversão de dados variados

pacote popcon tamanho palavra chave descrição
alien * V:1.4, I:11 208 rpm/tgz→deb conversor para o pacote alienígena num pacote Debian
freepwing * V:0.00, I:0.02 568 EB→EPWING conversor de "Electric Book" (popular no Japão) para um formato JIS X 4081 único (um subconjunto de EPWING V1)

Você também pode extrair dados do formato RPM com o seguinte.

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