文档包含什么,每种转换又如何处理
.docx是一个装着XML文件的ZIP,让它成为文档的大部分东西都不是文字本身。其中有样式——像“标题1”这样由许多段落共用的命名定义——还有直接格式,也就是有人选中一行再点了加粗。二者看起来一模一样,在转换时的表现却截然不同:样式会作为样式保留,而直接格式只会以它所呈现的效果保留下来。与之并列的还有编号定义、修订、批注、脚注、页眉页脚、文本框、嵌入字体和文档属性,它们都与段落文字分开存储。
列表编号是最明显的例子。 Word并不把“1.”存为文字;它存储的是对某个编号定义的引用,在绘制页面时才计算出编号。因此,逐段读取XML的文字提取工具会丢掉所有编号,交给您一个没有编号的列表。DOCX转TXT则会重建这些编号——“1.”、“1.1”、“a)”、“iii.”——包括在文档中重新开始或接续编号的列表。
修订和批注的处理是有意为之,而非偶然。 审阅中的文档在同一个文件里同时保存着被删除的文字和新插入的文字,并加有标记。DOCX转TXT会按全部接受修订的方式读取:保留插入内容,去掉删除内容。批注则完全不包含在内,当纯文本要公开发布时,这通常正是您想要的。脚注和尾注以[1]这样的标记呈现,注释内容集中放在末尾;页眉和页脚可以选择开启;文本框按阅读顺序各出现一次,既不会重复也不会丢失。
转换为PDF解决的是分页问题。 在文字处理软件中,第四页在哪里结束,每次打开文件时都会根据打开者的字体和打印驱动重新计算——这就是为什么文档到了对方那里,表格被分到了两页上,而在您这里却没有。PDF没有这种重新计算:分页在转换时就一次性确定,从此成为文件本身的事实。Word转PDF、ODT转PDF和RTF转PDF的分页来自完整的文字处理软件排版,而不是浏览器的近似模拟,所以文本框、形状、页眉和页脚都会出现在作者放置的位置。
失去的是可编辑性和重排能力。 样式变成视觉格式,大纲变成书签,文字也不再随手机屏幕重新换行。文档中嵌入的字体会原样使用;既未嵌入、转换器也没有的字体,会被替换为度量最接近的兼容字体,所以即使字形不同,换行位置依然不变。
电子书没有可保留的页面。 EPUB、MOBI和AZW3都是可重排的——由阅读软件按您选择的字号决定每页在哪里结束——所以“第40页”并不是这本书的属性,PDF中的分页是在转换时根据您选择的页面尺寸和边距生成的。文件里真正有的是章节结构和目录,它们会变成PDF中真正的链接和书签。AZW3带有样式表,常常还有嵌入字体,所以转换出来的效果就像出版社设计的那样;旧的MOBI文件根本没有样式表,这就是为什么转换后的MOBI看起来比Kindle应用中的同一本书更朴素——那些排版是应用自己加上的,文件里从来没有。
RTF从里到外都是文本,所以它能在几十年的软件更迭中存活下来。它的麻烦在于字符编码:RTF早于Unicode诞生,用旧式代码页存储文字——中欧、西里尔、希腊、日文——转换不当的RTF出现乱码,根源就在这里。这里会正确解码每一种编码,也能处理现代的Unicode文本。
什么情况下浏览器确实不是合适的工具
这些工具中,有的让您的文件完全保持私密,有的会把文件交给服务器,把这一点说准确很有必要。PDF转文本、TXT转PDF、DOCX转TXT、HTML转DOCX和Markdown转HTML从不发送任何内容——文件就在这里被读取、转换和写出,什么都不会离开。Word转PDF、ODT转PDF、RTF转PDF、HTML转PDF、Markdown转PDF以及三款电子书转换工具在我们的服务器上完成转换,因为还原文字处理软件的页面排版,或者为一本书正确分页,不是网页能够模拟出来的。发送的内容有所不同:Word、ODT和RTF文档按原样发送,而Markdown文件和电子书会先解包并组装成一个网页,发送的是这个组装好的网页。无论哪种方式,文件都通过加密连接传输,转换完成后,下载文件一准备好就会被删除——不存储、不记录、不分享任何内容。服务器无法访问时,这些工具都会改用各自的备用转换器,并告诉您已经切换,以及备用转换器无法保留哪些内容。
我们打不开的格式。 Word 97–2003的旧式二进制.doc文件在Word转PDF中可以正常转换,因为服务器会直接读取——但在浏览器端运行的DOCX转TXT不行,它需要.docx。受密码保护的文档,需要先在设置密码的程序中移除密码。受DRM保护的Kindle电子书,任何地方的任何转换器都打不开——这正是保护的目的——亚马逊较新的KFX格式也一样,只有Kindle应用能读取。
长文档处理。 主控文档、交叉引用域、索引、自动生成的引文目录、邮件合并和文献管理工具,都是文字处理软件的功能,而转换器并不是文字处理软件。请安装LibreOffice——它免费,能读取本页上的所有格式,处理这些工作正是它的本行。
批量与自动化。 这些工具要有人点击才会运行。按计划转换一千个文件是命令行的活,而免费工具都很出色:无界面模式的LibreOffice能转换Writer能打开的任何文件;Pandoc能在Markdown、HTML、DOCX、LaTeX和其他十几种格式之间转换,控制比任何网页表单都更精细;Calibre能批量处理电子书,并在所有未受保护的电子书格式之间互相转换。
反方向的忠实版式还原。 把一份设计复杂的PDF还原成可编辑的文档,是一个推断问题,而不是转换问题,没有任何工具能做得完美——我们做不到,昂贵的桌面软件也做不到。如果原始文档还在,请直接编辑原始文档。
如何在名字相近的工具之间选择
Markdown转PDF与Markdown转HTML。解析器相同,输出目标不同。Markdown转PDF给您一份分好页的文档,字体、页面尺寸和边距由您选择,标题会成为PDF书签,目录可以跳转到正确的页面——适合打印、作为附件或存档。Markdown转HTML给您一个带样式的独立网页,或一段可以粘贴到CMS中的简洁片段——适合发布。如果想把Markdown变成Word文档,请先用Markdown转HTML,再用HTML转DOCX。
Word转PDF与ODT转PDF与RTF转PDF。底层是同一种转换,区别只在于输入的文件。Word转PDF用于.docx。ODT转PDF用于来自LibreOffice、OpenOffice的文件,或Google文档中“下载为OpenDocument格式”得到的文件。RTF转PDF用于写字板、TextEdit,以及各种业务系统至今仍在输出的信函和报表。选择与扩展名对应的页面,其实没有您想象的那么重要——重要的是别选TXT转PDF,因为它本来就没有可保留的格式。
TXT转PDF与Markdown转PDF。TXT转PDF把您的文字原样排版为文字:一种字体、您设定的边距,不做任何解读。Markdown转PDF会把#和*当作指令,生成标题、列表、表格、高亮代码和书签大纲。把Markdown文件交给TXT转PDF,您得到的就是一份满是星号的PDF。
EPUB、MOBI和AZW3转PDF。 这三款工具接受的格式都比名称所示的更多,所以任何一款都能打开您的文件;页面效果之所以不同,是因为书本身不同。EPUB和AZW3(KF8)带有样式表,常常还有嵌入字体,转换出来很有设计感。MOBI是较旧的容器格式,格式信息极少,转换出的PDF刻意保持朴素。如果一个Kindle文件同时包含两种版式,会使用较新的那种。
HTML转DOCX与Markdown转HTML。HTML转DOCX会先对标记进行排版,所以计算后的CSS——字体、字号、颜色、间距、边框——都会作为真正的Word格式写入文档,并使用Word标题样式、真正的列表和真正的表格,而不是固定在某处的方框。Markdown转HTML则负责生成这些标记。两者都绝不会运行JavaScript。
DOCX转TXT与PDF转文本。两者都会给您纯文本,但读取的对象截然不同。.docx依然知道什么是段落、列表和表格,所以DOCX转TXT能重建列表编号,并让表格行保持完整。PDF只知道每个字符画在什么位置,所以PDF转文本只能根据位置推断行和段落——效果不错,但在结构上永远不会那么忠实。如果您同时拥有原始文档和它的PDF,请从原始文档中提取。
DOCX转TXT与在Word中另存为.txt。 Word自带的纯文本导出会丢掉列表编号、弄乱表格,对编码也自有主张。DOCX转TXT会重建编号,把表格写成可直接粘贴到电子表格中的制表符分隔行,或写成即使含中文和日文也能保持对齐的对齐列,并以UTF-8保存,换行符按您的要求设置。