第 11 章 数据转换
下面是关于Debian 系统上可用的格式转化工具及其相关提示的信息。
基于标准的工具,是非常好用的,但支持的专有数据格式有限.
11.1. 文本数据转换工具
如下是文本数据转换工具。
表 11.1. 文本数据转化工具列表
软件包 | 流行度 | 大小 | 关键词 | 说明 |
---|---|---|---|---|
libc6 | V:935, I:999 | 12771 | 字符集 | 使用 iconv(1) 的不同语言环境(locale)之间的文本编码转换器 (基础的) |
recode | V:3, I:25 | 603 | 字符集+换行 | 不同语言环境(locale)之间的文本编码转换器(多功能的,更多别名和特性) |
konwert | V:1, I:54 | 134 | 字符集 | 不同语言环境(locale)之间的文本编码转换器(高档的) |
nkf | V:0, I:11 | 358 | 字符集 | 日语字符集翻译 |
tcs | V:0, I:0 | 518 | 字符集 | 字符集翻译 |
unaccent | V:0, I:0 | 29 | 字符集 | 代替重音字符,使用和它们相当的非重音字符 |
tofrodos | V:1, I:25 | 55 | 换行 | 在 DOS 和 Unix 之间的文本格式转换: fromdos(1) 和 todos(1) |
macutils | V:0, I:1 | 298 | 换行 | 在 Macintosh 和 Unix 之间的文本格式转换: frommac(1) 和 tomac(1) |
11.1.1. 用 iconv 命令来转换文本文件
提示 | |
---|---|
iconv(1) 是 |
你能够通过如下的命令用 iconv(1) 来转换文本文件的编码。
$ iconv -f encoding1 -t encoding2 input.txt >output.txt
编码值是大小写不敏感的,且会在匹配时忽略“-
”和“_
”。可以使用“iconv -l
”命令检查支持的编码。
表 11.2. 编码值和用法的列表
编码值 | 用法 |
---|---|
ASCII | 美国信息交换标准代码,7位代码不带重音符号 |
UTF-8 | 用于所有现代操作系统的多语言标准 |
ISO-8859-1 | 旧的西欧语言标准,ASCII + 重音符号 |
ISO-8859-2 | 旧的东欧语言标准,ASCII + 重音符号 |
ISO-8859-15 | 旧的带有欧元符号的西欧语言标准(ISO-8859-1) |
CP850 | code page 850,用于西欧语言的微软 DOS 的带有图形的字符,ISO-8859-1 的变体 |
CP932 | code page 932, 日语 Microsoft Windows 的 Shift-JIS 变体 |
CP936 | code page 936,用于简体中文的微软操作系统风格的 GB2312,GBK 或者 GB18030 的变体 |
CP949 | code page 949,用于韩语的微软操作系统风格的 EUC-KR 或者 Unified Hangul Code 的变体 |
CP950 | code page 950,用于繁体中文的微软操作系统风格的 Big5 的变体 |
CP1251 | code page 1251,用于西里尔字母的微软操作系统风格的编码 |
CP1252 | code page 1252,用于西欧语言的微软操作系统风格的 ISO-8859-15 的变体 |
KOI8-R | 用于西里尔字母的旧俄语 UNIX 标准 |
ISO-2022-JP | 日文邮件的标准编码,只使用 7 位字节 |
eucJP | 老的日文 UNIX 标准的 8 位字节,和 Shift-JIS 完全不同 |
Shift-JIS | 日文 JIS X 0208 附录 1 标准 (参见 CP932) |
注意 | |
---|---|
一些编码只支持数据转换,它不能作为语言环境的值 (第 8.4.1 节 “编码的基础知识”)。 |
像 ASCII 和 ISO-8859 这样适用于单字节的字符集,字符编码和字符集几乎指的是同一件事情。
对于多字符的字符集,比如说,用于日文的 JIS X 0213,或用于差不多所有语言的 Universal Character Set (UCS, Unicode, ISO-10646-1) , 有多种编码方案来序列化它们的字节数据。
Unicode 的 UTF-8、UTF-16/UCS-2 和 UTF-32/UCS-4 编码
对于以上这些,字符集和字符编码之间有着明显的区别。
对某些计算机厂家而言,code page 是作为字符编码表的同义词来使用。
注意 | |
---|---|
请注意,大部分编码系统共享 ASCII 的 7 位字符的同样编码,但也有一些列外。如果你从通常所说的 shift-JIS 编码格式,转化老的日文 C 语言程序和 URL 数据,到 UTF-8 格式,你需要使用 “ |
提示 | |
---|---|
recode(1) 也可能被使用并且不仅仅是 iconv(1),fromdos(1),todos(1),frommac(1) 和 tomac(1) 功能的结合。想要获得更多信息,请参见 “ |
11.1.2. 用 iconv 检查文件是不是 UTF-8 编码
你能够通过如下命令用 iconv(1) 来检查一个文本文件是不是用 UTF-8 编码的。
$ iconv -f utf8 -t utf8 input.txt >/dev/null || echo "non-UTF-8 found"
提示 | |
---|---|
在上面的例子中使用 “ |
11.1.3. 使用 iconv 转换文件名
这里是一个示例脚步,在同一目录下,将在老的操作系统系统下创建的文件名编码,转换为现代 UTF-8.
#!/bin/sh
ENCDN=iso-8859-1
for x in *;
do
mv "$x" "$(echo "$x" | iconv -f $ENCDN -t utf-8)"
done
“$ENCDN
“ 变量定义了在老的操作系统下,文件名使用的原始编码,见 表 11.2 “编码值和用法的列表”.
对于更加复杂的情况,请使用适当的编码作为 mount(8) 的选项(参见 第 8.4.6 节 “文件名编码”) 来挂载包含有这样文件名的文件系统(比如说,磁盘上的一个分区),使用 “cp -a
“ 命令来拷贝它的整个内容到另外一个使用 UTF-8 挂载的文件系统上。
11.1.4. 换行符转换
文本文件的格式,特别是行尾(换行符)编码,有平台独立性。
表 11.3. 不同平台的换行符样式列表
平台 | 换行符编码 | 控制码 | 十进制 | 16 进制 |
---|---|---|---|---|
Debian (unix) | LF | ^J | 10 | 0A |
MSDOS 和 Windows | CR-LF | ^M^J | 13 10 | 0D 0A |
苹果的 Macintosh | CR | ^M | 13 | 0D |
换行符转换程序, fromdos(1), todos(1), frommac(1), 和 tomac(1), 是相当方便. recode(1) 也是有用的。
注意 | |
---|---|
在 Debian 系统上的一些数据,如 |
注意 | |
---|---|
大部分编辑器 (比如: |
提示 | |
---|---|
对于混合 MSDOS 和 Unix 式样的文件,统一到 MSDOS 换行符式样,使用 “ |
11.1.5. TAB 转换
这里有一些转换 TAB 代码的专业工具。
表 11.4. bsdmainutils
和 coreutils
包中的用于转换 TAB 的命令列表
功能 | bsdmainutils | coreutils |
---|---|---|
把制表符扩展成空格 | “col -x “ | expand |
将空格转换为制表符(unexpand) | “col -h “ | unexpand |
indent
包中的 indent(1) 命令能够重新格式化 C 程序中的空格。
例如 vim
和 emacs
这样的编辑软件可以被用来扩展 TAB。就拿 vim
来说,你能够按顺序输入 “:set expandtab
“ 和 “:%retab
“ 命令来扩展 TAB。你也可以按顺序输入 :%set noexpandtab
“ 和 “:%retab
“ 命令来复原。
11.1.6. 带有自动转换功能的编辑器
像 vim
这样的现代智能编辑器软件是相当聪明的并且能够处理任何编码系统以及任何文件格式。你应该在支持 UTF-8 编码的控制台上并在 UTF-8 环境下使用这些编辑器来获得最好的兼容性。
以 latin1(iso-8859-1)编码存储的旧西欧语言的 Unix 文本文件,“u-file.txt
”,能通过如下所示的用 vim
轻易的编辑。
$ vim u-file.txt
这是可能的因为 vim
的文件编码自动检测机制先假定文件是 UTF-8 编码,如果失败了,则假定它是 latin1 编码。
以 latin2(iso-8859-2) 编码存储的旧波兰语的 Unix 文本文件,“pu-file.txt
”,能通过如下所示的用 vim
编辑。
$ vim '+e ++enc=latin2 pu-file.txt'
以 eucJP 编码存储的旧日语的 Unix 文本文件,”ju-file.txt
“,能通过如下所示的用 vim
编辑。
$ vim '+e ++enc=eucJP ju-file.txt'
以所谓的 shift-JIS 编码 (更确切的说法是:CP932) 存储的旧日语 MS-Windows 文本文件,”jw-file.txt
“,能通过如下所示的用 vim
编辑。
$ vim '+e ++enc=CP932 ++ff=dos jw-file.txt'
当一个文件用 vim 打开的时候带有 “++enc
“ 和 “++ff
“ 选项,在 Vim 命令行输入 “:w
“ 命令会以原格式存储文件并且会覆盖原文件。你也可以在 Vim 命令行指定存储文件名及其格式,例如,”:w ++enc=utf8 new.txt
“。
请查阅 vim
在线帮助中的 mbyte.txt,”多字节文本支持”和表 11.2 “编码值和用法的列表”来获得 “++enc
“ 使用的本地值的信息。
emacs
家族的程序能够实现同样的功能。
11.1.7. 提取纯文本
如下所示读入 web 页面并把它转化成文本文件。当从 Web 中拷贝配置或者是在 web 页面中应用类似 grep(1) 的基础 Unix 文本工具时,以下命令是非常有用的。
$ w3m -dump http://www.remote-site.com/help-info.html >textfile
同样,你可以使用如下所示的工具从其他格式提取纯文本数据。
表 11.5. 用于提取纯文本数据的工具列表
软件包 | 流行度 | 大小 | 关键词 | 功能 |
---|---|---|---|---|
w3m | V:31, I:284 | 2289 | html→text | 用 “w3m -dump “ 命令把 HTML 转化为文本的转换器 |
html2text | V:3, I:33 | 274 | html→text | 高级的 HTML 到文本文件的转换器 (ISO8859-1) |
lynx | V:13, I:98 | 1948 | html→text | 用 “lynx -dump “ 命令把 HTML 转化为文本的转化器 |
elinks | V:6, I:28 | 1767 | html→text | 用 “elinks -dump “ 命令把 HTML 转化为文本的转换器 |
links | V:6, I:39 | 2249 | html→text | 用 “links -dump “ 命令把 HTML 转化为文本的转换器 |
links2 | V:1, I:15 | 5417 | html→text | 用 “links2 -dump “ 命令把 HTML 转化为文本的转换器 |
antiword | V:2, I:10 | 589 | MSWord→text,ps | 转化 MSWord 文件到纯文本或 ps 文件 |
catdoc | V:27, I:127 | 675 | MSWord→text,TeX | 转化 MSWord 文件到纯文本或 TeX文件 |
pstotext | V:1, I:3 | 126 | ps/pdf→text | 从 PostScript 和 PDF 文件里导出文本 |
unhtml | V:0, I:0 | 43 | html→text | 从一个 HTML 文件里面删除标记标签 |
odt2txt | V:1, I:7 | 60 | odt→text | 从开放文档格式到文本格式的转化器 |
11.1.8. 高亮并格式化纯文本数据
你可以通过如下所示的来高亮并格式化纯文本数据。
表 11.6. 高亮纯文本数据的工具列表
软件包 | 流行度 | 大小 | 关键词 | 说明 |
---|---|---|---|---|
vim-runtime | V:19, I:435 | 31723 | 高亮 | 用 “:source $VIMRUNTIME/syntax/html.vim “ Vim 宏命令转化源代码到 HTML |
cxref | V:0, I:0 | 1193 | c→html | 从 C 程序到 latex 和 HTML 的转换器(C语言) |
src2tex | V:0, I:0 | 622 | 高亮 | 转换许多源代码到 TeX(C语言) |
source-highlight | V:0, I:7 | 1992 | 高亮 | 转换源代码到带有高亮显示的 HTML, XHTML, LaTeX, Texinfo, ANSI 颜色转义序列和 DocBook 文件 (C++) |
highlight | V:1, I:12 | 1083 | 高亮 | 转化许多源代码到带有高亮显示的 HTML, XHTML, RTF, LaTeX, TeX or XSL-FO 文件。(C++) |
grc | V:0, I:3 | 190 | text→有颜色的 | 用于任何文本的通用颜色生成器 (Python) |
txt2html | V:0, I:3 | 259 | text→html | 文本到 HTML 转换器(Perl) |
markdown | V:0, I:8 | 57 | text→html | markdown 文本文档到 (X)HTML (Perl) |
asciidoc | I:13 | 81 | text→any | AsciiDoc 文本文档到 XML/HTML (Python) |
pandoc | V:8, I:47 | 151714 | text→any | 通用标记转化器 (Haskell) |
python-docutils | V:12, I:133 | 1771 | text→any | 重构文本文档到 XML (Python) |
txt2tags | V:0, I:1 | 342 | text→any | 转化文本到 HTML, SGML, LaTeX, man page, MoinMoin, Magic Point and PageMaker (Python) |
udo | V:0, I:0 | 583 | text→any | 通用的文本文件转化工具 (C 语言) |
stx2any | V:0, I:0 | 264 | text→any | 结构化纯文本到其他格式的文档转化器 (m4) |
rest2web | V:0, I:0 | 527 | text→html | 重构文本到 html 的文档转化器 (Python) |
aft | V:0, I:0 | 235 | text→any | “自由格式”的文件准备系统 (Perl) |
yodl | V:0, I:0 | 610 | text→any | 用预文档语言工具来处理文件 (C 语言) |
sdf | V:0, I:0 | 1445 | text→any | 简单的文档剖析器 (Perl) |
sisu | V:0, I:0 | 5344 | text→any | 文档组织、排版、搜索框架 (Ruby) |
11.2. XML 数据
扩展标记语言 Extensible Markup Language (XML) 是一种标记语言,用于含有结构化信息的文档。
在 XML.COM 查看介绍信息.
11.2.1. XML 的基本提示
XML 文本看起来有些像 HTML.它能够使我们管理一个文档的多个格式。一个简单的 XML 系统是 docbook-xsl
软件包,在这里使用。
每一个 XML 文件使用下面的标准 XML 声明开始。
<?xml version="1.0" encoding="UTF-8"?>
XML 元素的基本语法是按下面的方式标记。
<name attribute="value">content</name>
内容为空的 XML 元素,使用下面的短格式标记。
<name attribute="value"/>
上面列子中的 “attribute="value"
“ 是可选的。
XML 里面的注释部分,是按下面的方式标记。
<!-- comment -->
不同于增加标记,XML 至少要求使用预定义实体里的内容来转化下列字符。
表 11.7. XML 预定义实体列表
预定义实体 | 转化的字符 |
---|---|
" | “ : 引号 |
' | ‘ : 撇号 |
< | < : 小于号 |
> | > : 大于号 |
& | & :&号 |
小心 | |
---|---|
“ |
注意 | |
---|---|
当 SGML 式样的用户定义实体,比如 “ |
注意 | |
---|---|
只要 XML 标记是一致使用某一标签名集合(一些数据作为内容或属性值),使用 Extensible Stylesheet Language Transformations (XSLT) 来转换到另外一个 XML,是一个微不足道的任务。 |
11.2.2. XML 处理
有许多工具可以用于处理 XML 文件,比如说: 可扩展样式表语言 Extensible Stylesheet Language (XSL).
一旦你创建了一个好的成形的 XML 文件,基本上来讲,你就可以使用 可扩展样式表语言转换 Extensible Stylesheet Language Transformations (XSLT),将其转换成任何格式。
格式化对象的可扩展样式表语言 Extensible Stylesheet Language for Formatting Objects (XSL-FO) 是用来作为格式化的解决方案. fop
软件包比 Debian main
档案库要新,因为它依赖 Java 编程语言). LaTeX 代码通常是从 XML 使用 XSLT 生成,LaTeX 系统是用来创建 DVI, PostScript 和 PDF 这类可打印的文件。
表 11.8. XML 工具列表
软件包 | 流行度 | 大小 | 关键词 | 说明 |
---|---|---|---|---|
docbook-xml | V:15, I:280 | 2133 | xml | DocBook 的 XML 文档类型定义(DTD) |
xsltproc | V:15, I:104 | 160 | xslt | XSLT 命令行处理器 (XML→ XML, HTML, 纯文本,等等) |
docbook-xsl | V:13, I:165 | 14870 | xml/xslt | 使用 XSLT 将 DocBook XML 处理成各种输出格式的 XSL 样式表 |
xmlto | V:1, I:23 | 130 | xml/xslt | 使用 XSLT 将 XML 转换到任意格式的转换器 |
dbtoepub | V:0, I:0 | 37 | xml/xslt | DocBook XML 到 .epub 转换 |
dblatex | V:3, I:16 | 4643 | xml/xslt | 使用 XSLT 将 Docbook 文件转换为 DVI, PostScript, PDF 文档 |
fop | V:1, I:24 | 291 | xml/xsl-fo | 转换 Docbook XML 文件到 PDF |
由于 XML 是 标准通用标记语言 Standard Generalized Markup Language (SGML)的一个子集,用于处理 SGML 的扩展工具,也能够处理 XML,比如说 文档式样语言和规范语言 Document Style Semantics and Specification Language (DSSSL).
表 11.9. DSSSL 工具列表
软件包 | 流行度 | 大小 | 关键词 | 说明 |
---|---|---|---|---|
openjade | V:2, I:38 | 1019 | dsssl | ISO/IEC 10179:1996 标准 DSSSL 处理器 (最新的) |
docbook-dsssl | V:1, I:23 | 2604 | xml/dsssl | 使用 DSSSL 处理 DocBook XML 到各种输出格式的 DSSSL 样式表 |
docbook-utils | V:0, I:16 | 281 | xml/dsssl | DocBook 文件的工具包,包括使用 DSSSL 的转换成其它格式 (HTML, RTF, PS, man, PDF)的 docbook2* 命令 |
sgml2x | V:0, I:0 | 90 | SGML/dsssl | SGML 和 XML 使用 DSSSL 样式表的转换器 |
提示 | |
---|---|
11.2.3. XML 数据提取
使用下面的方法,你能够从其它格式提取 HTML 或 XML 数据。
表 11.10. XML 数据提取工具列表
软件包 | 流行度 | 大小 | 关键词 | 说明 |
---|---|---|---|---|
wv | V:0, I:7 | 717 | MSWord→任何格式 | 从微软 Word 格式到 HTML, LaTeX, 等格式的文件转换器。 |
texi2html | V:0, I:8 | 1833 | texi→html | 从 Texinfo 到 HTML 的转换器 |
man2html | V:0, I:2 | 138 | man 手册页→html | 从 man 手册页到 HTML 的转换器(支持 CGI) |
unrtf | V:0, I:4 | 148 | rtf→html | 从 RTF 到 HTML 等的转换器 |
info2www | V:1, I:3 | 76 | info→html | 从 GNU info 到 HTML 的转换器 (支持 CGI) |
ooo2dbk | V:0, I:0 | 217 | sxw→xml | 从 OpenOffice.org SXW 文档到 DocBook XML 的转换器 |
wp2x | V:0, I:0 | 202 | WordPerfect→任意格式 | WordPerfect 5.0 和 5.1 文件到 TeX, LaTeX, troff, GML 和 HTML |
doclifter | V:0, I:0 | 451 | troff→xml | troff 到 DocBook XML 的转换器 |
对于非 XML 的 HTML 文件,你能够转换它们为 XHTML,XHTML 是一个相当成型的 XML 实例。XHTML 能够被 XML 工具处理.
表 11.11. XML 美化打印工具列表
软件包 | 流行度 | 大小 | 关键词 | 说明 |
---|---|---|---|---|
libxml2-utils | V:22, I:246 | 182 | xml↔html↔xhtml | 使用 xmllint(1) 的 XML 命令行工具 (语法检查,重新格式化,梳理, …) |
tidy | V:2, I:14 | 84 | xml↔html↔xhtml | HTML 语法检查和重新格式化 |
一旦适当的 XML 生成,基于标记的内容等,你能够使用 XSLT 技术提取数据。
11.3. 排版
Unix上的 troff 程序最初是由 AT&T 公司开发的,可以被用做简单排版。现在被用来创建手册页。
Donald Knuth 发明的 Tex 是非常强大的排版工具也是实际上的标准。最初是由 Leslie Lamport 开发的 LaTex 使得用户可以更为方便的利用 Tex 的强大功能。
表 11.12. 排版工具的列表
软件包 | 流行度 | 大小 | 关键词 | 说明 |
---|---|---|---|---|
texlive | V:3, I:50 | 71 | (La)TeX | 用于排版、预览和打印的 TeX 系统 |
groff | V:3, I:64 | 11838 | troff | GNU troff 文本格式化系统 |
11.3.1. roff 排版
传统意义上,roff 是 Unix 上主要的文本处理系统。参见 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) 和 “info groff
“。
安装好 groff
软件包以后,你输入 “-me
“ 宏指令)就能看到一份不错的指导手册,它的位置是 “/usr/share/doc/groff/
“。
提示 | |
---|---|
“ |
提示 | |
---|---|
如果想要移除 |
11.3.2. TeX/LaTeX
Tex Live 软件提供了全部的 TeX 系统。texlive
元包只是 TeX Live 中的一部分,但是它足够应付日常任务。
tex(1)
latex(1)
texdoc(1)
texdoctk(1)
“The TeXbook”, 作者 Donald E. Knuth, (Addison-Wesley)
“LaTeX - A Document Preparation System”, 作者 Leslie Lamport, (Addison-Wesley)
“The LaTeX Companion”, 作者 Goossens, Mittelbach, Samarin, (Addison-Wesley)
这是最强大的排版环境。许多 SGML 处理器把它作为其后台字处理工具。lyx
软件包提供的 Lyx 和 texmacs
软件包提供的 GNU TeXmacs 都为 LaTeX 提供了非常不错的所见即所得的编辑环境,然而许多人使用 Emacs 和 Vim) 作为其源代码编辑器。
有许多在线资源存在。
TEX Live Guide - TEX Live 2007 (“
/usr/share/doc/texlive-doc-base/english/texlive-en/live.html
“) (texlive-doc-base
包)
当文档变得更大时,TeX 有时会出错。你必须在 “/etc/texmf/texmf.cnf
“ 中增加 pool 的大小 (更确切的说话是编辑是 “/etc/texmf/texmf.d/95NonPath
“ 并且运行 update-texmf(8)) 来修复此问题。
注意 | |
---|---|
“The TeXbook” 的 TeX 源码可以从 http://tug.ctan.org/tex-archive/systems/knuth/dist/tex/texbook.tex 上下载。此文件包含了绝大多数所需的宏指令。我听说把文档中的第7到第10行注释了并且添加 “ |
11.3.3. 漂亮的打印手册页
你能够用如下任意一个命令在打印机上漂亮的打印手册页。
$ man -Tps some_manpage | lpr
11.3.4. 创建手册页
尽管用纯 troff 格式写手册页(manpage)是可能的,这里还是有一些辅助的程序包用于创建手册页。
表 11.13. 创建手册页的工具列表
软件包 | 流行度 | 大小 | 关键词 | 说明 |
---|---|---|---|---|
docbook-to-man | V:0, I:13 | 191 | SGML→man 手册页 | 从 DocBook SGML 到 roff 手册页宏指令的转换器 |
help2man | V:0, I:10 | 498 | text→man 手册页 | 通过 —help 参数自动生成手册页的工具 |
info2man | V:0, I:0 | 134 | info→man 手册页 | 转换 GNU info 到 POD 或手册页的转换器 |
txt2man | V:0, I:1 | 114 | text→man 手册页 | 把纯粹的 ASCII 文本转化为手册页格式 |
11.4. 可印刷的数据
在 Debian 系统中,可打印的数据是 PostScript 格式的。对于非 PostScript 打印机,通用 Unix 打印系统 (CUPS) 使用 Ghostscript 作为其后台光栅处理程序。
11.4.1. Ghostscript
处理可印刷的数据的核心是 Ghostscript PostScript 解释器,它能够生成光栅图像。
来自 Artifex 的最新上游 Ghostscript 软件包的许可从 AFPL 变成 GPL,并且发布的是合并版本,其中合并了最新的 ESP 版本的改变,例如 CUPS 8.60版本。
表 11.14. Ghostscript PostScript 解释器列表
软件包 | 流行度 | 大小 | 说明 |
---|---|---|---|
ghostscript | V:252, I:598 | 231 | GPL Ghostscript PostScript/PDF 解释器 |
ghostscript-x | V:15, I:65 | 223 | GPL Ghostscript PostScript/PDF 解释器-X 显示支持 |
libpoppler95 | I:3 | 4172 | PDF 渲染库 (xpdf PDF 浏览器的分支) |
libpoppler-glib8 | V:217, I:481 | 449 | PDF 渲染库(基于 Glib 的共享库) |
poppler-data | V:111, I:637 | 13090 | 用于 PDF 渲染库的 CMaps (CJK 支持:Adobe-*) |
提示 | |
---|---|
“ |
11.4.2. 合并两个 PS 或 PDF 文件
你能够使用 Ghostscript 中的 gs(1) 来合并两个 PostScript(PS) 或可移植文档格式(PDF) 文件。
$ 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
注意 | |
---|---|
提示 | |
---|---|
对于命令行来说,psmerge(1) 和 |
11.4.3. 处理可印刷数据的工具
如下是处理可印刷数据的工具列表。
表 11.15. 处理可印刷数据的工具列表
软件包 | 流行度 | 大小 | 关键词 | 说明 |
---|---|---|---|---|
poppler-utils | V:241, I:434 | 689 | pdf→ps,text,… | PDF 工具:pdftops , pdfinfo , pdfimages , pdftotext , pdffonts |
psutils | V:6, I:105 | 219 | ps→ps | PostScript 文件转换工具 |
poster | V:0, I:5 | 58 | ps→ps | 用 PostScript 页制作大型海报 |
enscript | V:1, I:20 | 2132 | text→ps, html, rtf | 转化 ASCII 文本到 PostScript, HTML, RTF 或 Pretty-Print |
a2ps | V:1, I:15 | 3651 | text→ps | ‘任何文本到 PostScript’ 的转换器并且也是相当不错的打印程序 |
pdftk | I:51 | 28 | pdf→pdf | PDF 文档转换工具:pdftk |
html2ps | V:0, I:3 | 249 | html→ps | 从 HTML 到 PostScript 的转换器 |
gnuhtml2latex | V:0, I:1 | 27 | html→latex | 从 html 到 latex 的转换器 |
latex2rtf | V:0, I:6 | 480 | latex→rtf | 转换 LaTeX 文档到能被 Microsoft Word 读取的 RTF 格式的文档 |
ps2eps | V:3, I:68 | 98 | ps→eps | 从 PostScript 到 EPS(Encapsulated PostScript)的转换器 |
e2ps | V:0, I:0 | 109 | text→ps | 带有日文编码支持的文本到 PostScript 转换器 |
impose+ | V:0, I:0 | 119 | ps→ps | PostScript 工具 |
trueprint | V:0, I:0 | 146 | text→ps | 漂亮的打印许多源程序(C, C++, Java, Pascal, Perl, Pike, Sh, 和 Verilog)到 PostScript。(C 语言) |
pdf2svg | V:0, I:4 | 30 | ps→svg | PDF 到可升级的向量图形格式的转换器 |
pdftoipe | V:0, I:0 | 71 | ps→ipe | 从 PDF 到 IPE‘s XML 格式的转换器 |
11.4.4. 用 CUPS 打印
Unix 通用打印系统(CUPS) 中的 lp(1) 和 lpr(1) 命令都提供了自定义打印数据的选项。
你可以使用下列命令中的一个来打印 3 份有装订页码的文件。
$ lp -n 3 -o Collate=True filename
$ lpr -#3 -o Collate=True filename
你能够通过 “-o number-up=2
“, “-o page-set=even
“, “-o page-set=odd
“, “-o scaling=200
“, “-o natural-scaling=200
“ 等等打印机选项来进一步定制打印机操作,详细的文档参见命令行打印和选项。
11.5. 邮件数据转换
下列邮件数据转换软件包捕获了我的眼球。
表 11.16. 有助于邮件数据转换的软件包列表
软件包 | 流行度 | 大小 | 关键词 | 说明 |
---|---|---|---|---|
sharutils | V:4, I:55 | 1421 | 邮件 | shar(1), unshar(1), uuencode(1), uudecode(1) |
mpack | V:1, I:18 | 106 | MIME | 编码和解码 MIME 信息: mpack(1) 和 munpack(1) |
tnef | V:1, I:10 | 110 | ms-tnef | 解包 MIME 附件类型 “application/ms-tnef”,该格式仅由微软使用 |
uudeview | V:0, I:5 | 109 | 邮件 | 下列格式的编码器和解码器: uuencode, xxencode, BASE64, quoted printable 和 BinHex |
提示 | |
---|---|
如果邮件客户端可以配置使用 IMAP4 服务器,互联网消息访问协议 版本 4 (IMAP4) 服务器 (参见 第 6.7 节 “POP3/IMAP4 服务器”) 可以用来把邮件从专有邮件系统里面移出来。 |
11.5.1. 邮件数据基础
邮件 (SMTP) 数据需要被限制为 7 位数据序列。二进制数据和 8 位文本数据使用 Multipurpose Internet Mail Extensions (MIME) 互联网多用途邮件扩展 和选择的字符集编码到 7 位格式。(参见 第 8.4.1 节 “编码的基础知识”).
标准的邮件存储格式是 mbox,它是依据 RFC2822 (由 RFC822 更新) 来的格式. 参见 mbox(5) (由 mutt
软件包提供).
对于欧洲语言,由于没有什么 8 位字符,”Content-Transfer-Encoding: quoted-printable
“ 加 ISO-8859-1 字符集通常被用于邮件。如果欧洲文本是被编码为 UTF-8,由于几乎全是 7 位数据,使用 “Content-Transfer-Encoding: quoted-printable
“ 也是合适的。
对于日语,传统的 “Content-Type: text/plain; charset=ISO-2022-JP
“ 通常被用于邮件来保持文本在 7 位。但是老的微软系统会在没有声明的情况下使用 Shift-JIS 来发送邮件。如果日语文本是用 UTF-8 编码, 由于含有许多 8 位数据,使用 Base64 是合适的。其它亚洲语言也是类似情形。
注意 | |
---|---|
如果你的非 Unix 邮件数据可以通过一个具备和 IMAP4 服务通讯的非 Debian 客户端访问,你可以通过运行你的 IMAP4 服务来将邮件数据移出。(参见 第 6.7 节 “POP3/IMAP4 服务器”). |
注意 | |
---|---|
如果你使用其它邮件存储格式,第一步把它们移动到 mbox 格式比较好。像 mutt(1) 这样多功能的客户端程序可以便捷的完成这类操作。 |
你可以使用 procmail(1) 和 formail(1) 把邮箱内容分开成每一封邮件.
每一封邮件能够使用来自 mpack
软件包的 munpack(1) 命令(或其它特异的工具)来获得 MIME 编码内容。
11.6. 图形数据工具
如下是关于图形数据转换、编辑和管理的工具包。
表 11.17. 图形数据工具列表
软件包 | 流行度 | 大小 | 关键词 | 说明 |
---|---|---|---|---|
gimp | V:68, I:341 | 22313 | 图形(位图) | GNU 图形处理程序 |
imagemagick | I:400 | 218 | 图形(位图) | 图形处理程序 |
graphicsmagick | V:3, I:17 | 5224 | 图形(位图) | 图像处理程序(imagemagick 派生出来的) |
xsane | V:17, I:173 | 2346 | 图形(位图) | 用于 SANE 的基于 GTK+ 的前端图形界面 (现在访问扫描仪就很简单了) |
netpbm | V:32, I:409 | 4302 | 图形(位图) | 图形界面的转换工具 |
icoutils | V:21, I:127 | 221 | png↔ico(bitmap) | MS Windows 符号和光标转化为 PNG 格式,或者从 PNG 格式转化为位图格式 (favicon.ico) |
scribus | V:2, I:23 | 30375 | ps/pdf/SVG/… | Scribus DTP 编辑器 |
libreoffice-draw | V:177, I:434 | 14600 | 图形(矢量) | LibreOffice 办公套件-绘画 |
inkscape | V:55, I:209 | 84823 | 图形(矢量) | SVG(可升级矢量图形)编辑器 |
dia | V:5, I:31 | 3727 | 图形(矢量) | 图表编辑器(Gtk) |
xfig | V:2, I:15 | 1793 | 图形(矢量) | 在图形界面下,交互式的生成图像变得方便 |
pstoedit | V:4, I:98 | 988 | ps/pdf→image(矢量) | PostScript 和 PDF 文件到可编辑的矢量图形的转换器(SVG) |
libwmf-bin | V:10, I:211 | 113 | Windows/image(矢量) | Windows 元文件 (矢量图形数据) 转换工具 |
fig2sxd | V:0, I:0 | 149 | fig→sxd(矢量) | 转换 XFig 文件为 OpenOffice.org 绘画格式 |
unpaper | V:2, I:19 | 460 | image→image | 后处理 OCR 扫描页面的工具 |
tesseract-ocr | V:8, I:37 | 1500 | image→text | 基于惠普的商业 OCR 引擎的免费 OCR 软件 |
tesseract-ocr-eng | V:7, I:37 | 4032 | image→text | OCR 引擎数据:用于英文文本的 tesseract-ocr 语言文件 |
gocr | V:1, I:13 | 531 | image→text | 免费 OCR 软件 |
ocrad | V:0, I:5 | 303 | image→text | 免费 OCR 软件 |
eog | V:71, I:264 | 10189 | 图像(Exif) | Eye of GNOME 图像浏览程序 |
gthumb | V:5, I:22 | 5475 | 图像(Exif) | 图像浏览器(GNOME) |
geeqie | V:6, I:21 | 14643 | 图像(Exif) | 基于 GTK+ 的图像浏览器 |
shotwell | V:19, I:223 | 6451 | 图像(Exif) | 数码相片管理器(GNOME) |
gtkam | V:0, I:6 | 1154 | 图像(Exif) | 从数码照相机中检索多媒体数据的应用 (GTK+) |
gphoto2 | V:1, I:12 | 955 | 图像(Exif) | gphoto2 软件是命令行方式的管理数码相机的工具 |
gwenview | V:28, I:97 | 10570 | 图像(Exif) | 图片浏览器(KDE) |
kamera | I:97 | 798 | 图像(Exif) | KDE 上的支持数码相机的应用软件 |
digikam | V:2, I:13 | 2646 | 图像(Exif) | 用于 KDE 桌面环境的数字照片管理应用 |
exiv2 | V:3, I:44 | 321 | 图像(Exif) | EXIF/IPTC 元数据处理工具 |
exiftran | V:1, I:21 | 70 | 图像(Exif) | 改变数码照相机的 jpeg 图像格式 |
jhead | V:1, I:11 | 109 | 图像(Exif) | 处理兼容 JPEG 文件 (数码相机图片) 的 Exif 中的非图形部分 |
exif | V:1, I:12 | 339 | 图像(Exif) | 显示 JPEG 文件中的 EXIF 信息的命令行工具 |
exiftags | V:0, I:5 | 292 | 图像(Exif) | 从数码相机的 JPEG 文件读取 Exif 标签的实用工具 |
exifprobe | V:0, I:4 | 499 | 图像(Exif) | 从数码图片中读取元数据 |
dcraw | V:2, I:19 | 535 | image(原始的)→ppm | 解码原始的数码相机图片 |
findimagedupes | V:0, I:1 | 79 | image→fingerprint | 找到相似或重复的图像 |
ale | V:0, I:0 | 839 | image→image | 合并图像来增加保真度或者用于创建马赛克 |
imageindex | V:0, I:2 | 145 | image(Exif)→html | 从图形中创建静态 HTML 图库 |
outguess | V:0, I:2 | 261 | jpeg,png | 通用的 Steganographic 工具 |
librecad | V:4, I:18 | 8205 | DXF | CAD 数据编辑器(KDE) |
blender | V:4, I:38 | 79166 | blend, TIFF, VRML, … | 用于动画的 3D 编辑器 |
mm3d | V:0, I:0 | 3778 | ms3d, obj, dxf, … | 基于 OpenGL 的 3D 模型编辑器 |
open-font-design-toolkit | I:0 | 10 | ttf, ps, … | 用于开放字型设计的元包 |
fontforge | V:0, I:8 | 4191 | ttf, ps, … | 用于 PS,TrueType 和 OpenType 的字体编辑器 |
xgridfit | V:0, I:0 | 806 | ttf | 用于TrueType 字体的 网格拟合和小字还原技术 的程序 |
提示 | |
---|---|
在 aptitude(8) (参考第 2.2.6 节 “aptitude 搜索方式选项”)中用正则表达式 “ |
虽然像 gimp(1) 这样的图形界面程序是非常强大的,但像 imagemagick(1) 这样的命令行工具在用脚本自动化处理图像时是很有用的。
实际上的数码相机的图像是可交换的图像文件格式(EXIF),这种格式是在 JPEG 图像文件格式上添加一些元数据标签。它能够保存诸如日期、时间和相机设置的信息。
The Lempel-Ziv-Welch (LZW)无损数据压缩专利已经过期了。使用 LZW 压缩方式的 图形交互格式(GIF)工具现在可以在 Debian 系统上自由使用了。
提示 | |
---|---|
任何带有可移动记录介质的数码相机或扫描仪都可以在 Linux 上通过 USB 存储读取器来工作,因为它遵循相机文件系统设计规则并且使用 FAT 文件系统,参考第 10.1.7 节 “可移动存储设备”。 |
11.7. 不同种类的数据转换工具
这里有许多其他用于数据转换的工具。在 aptitude(8)(参考 第 2.2.6 节 “aptitude 搜索方式选项”) 里用正则表达式 “~Guse::converting"
“ 来查找如下的软件包。
表 11.18. 不同种类的数据转换工具列表
软件包 | 流行度 | 大小 | 关键词 | 说明 |
---|---|---|---|---|
alien | V:2, I:34 | 161 | rpm/tgz→deb | 把外来的软件包转换为 Debian 软件包 |
freepwing | V:0, I:0 | 421 | EB→EPWING | 把 “电子书” (在日本流行) 变成单一的 JIS X 4081 格式 (EPWING V1 的子集) |
calibre | V:9, I:36 | 54876 | any→EPUB | 电子书转换器和库管理 |
你能够通过如下的命令从 RPM 格式的包中提取数据。
$ rpm2cpio file.src.rpm | cpio --extract