WordArt、剪贴画和日历:Publisher 文件里最难搞的部分
从 Publisher 文件里提取文字,这个问题早就解决了,好几个工具都能做。真正把一份你实际能用的转换结果和一份你礼貌性关掉的结果区分开来的,是其他所有东西:那些装饰性的、细碎的、极其 2003 年风格的细节,让文档看起来像它自己的那些东西。
过去这一年,我们大部分时间都花在这上面。逐个过一遍那些最棘手的:
WordArt
义卖传单上那个拱形大标题。绕着 logo 弯成完整圆圈的文字。Publisher 的 WordArt 远不只是加粗加颜色:每种预设都按照自己的几何形状扭曲字母,差一点就非常显眼。大多数转换器选择放弃,把文字平铺输出,一张海报就变回了一份备忘录。
我们的渲染器还原了这些形状,包括字形必须沿曲线一个个排列的圆形和环形预设。为了搞对这些,我们花了说出来有点丢人的大量尝试和试错。值得。真实世界里,相当大比例的 .pub 文件一上来就是 WordArt,因为那本来就是最好玩的按钮嘛。
剪贴画与旧图片格式
2004 年有人从剪贴画库里选的那张图,不是 PNG。通常是 WMF 或 EMF,也就是 90 年代的 Windows 矢量格式,存储的是指令("在这里画一条线,填充这个形状")而不是像素。现代软件基本上假装这两种格式不存在,所以转换出来的简报里,那些装饰图的位置往往是一片神秘的空白方块。
我们会渲染它们。线条、填充、嵌入的位图、奇怪的坐标系、那些实际上被旋转了四分之一圈的图片。如果你 2006 年的感恩节简报上有一只卡通火鸡,那只火鸡会活下来。
表格,尤其是日历
Publisher 的日历向导生成的是一个表格。价目表模板和"营业时间"框也是。表格听起来简单,实则不然:每个单元格可以有自己的边框、填充色和对齐方式,有些单元格是深色背景配反白文字,有些表格里的文字是竖排的。少掉一条边框,日历就不像日历了。
引擎直接从文件里读取表格结构:列宽、行高、每条边的边框、单元格填充,以及每个单元格内的文字流,包括竖排的。
渐变、纹理与图片效果
标题后面那个柔和的颜色渐变,用作背景的淡化照片,文本框下面的投影。这些效果在文件里以一个个小小的"配方"形式存储,每一个都需要解码并还原。丢掉它们之后,页面不会直接崩,只是变得平板灰暗,而文件的制作者一眼就能看出不对。
为什么要在乎这些
因为在转换 .pub 文件的人,转换的不是一个数据结构。他们转换的是孩子上小学三年级时自己做的那份简报,什么地方出了问题,他们一眼就看得出来。
Publisher 本身依然是渲染这些文件的唯一完美工具,而它就要离开了。我们的目标是成为最接近的替代,我们靠数万份真实文档来要求自己做到这一点。当转换结果还是有问题,那个文件就会变成一份 bug 报告,然后通常是一次修复。
拿一个格式复杂的文件来试试,看看效果。预览免费。