我正在处理大量的.frm和.wpd WordPerfect文件,我正在尝试将它们转换为.docx,同时保留所有的邮件合并逻辑。
在WordPerfect X6中将文件另存为.docx或从Word 2016中打开.frm/.wpd文件都会导致邮件合并代码完全丢失。
有没有办法转换这些WordPerfect文件,使它们在.docx格式中保留类似的合并功能?
发布于 2018-02-12 03:23:36
这是一种有点疯狂的方法:
使用WP_Reader解析文档。
收集所有相关的合并函数(有一堆合并命令,您必须找出需要转换为Word合并字段的命令)。
制作一个字典,将每个需要的合并函数翻译成它的WP字符串"code“(用于搜索目的)。
编写一个简单的WordPerfect宏,它使用传入的变量来搜索每个合并“代码”,并将其替换为唯一的文本标记。
使用WordPerfect.PerfectScript界面打开文档。
使用PerfectFit.PerfectScript接口调用WP宏并传入要替换为其唯一标记的每个合并函数。您不能对WordPerfect文档进行.NET调用来搜索任何非ASCII文本的内容,因此您必须使用宏和PerfectFit来完成此操作(谢谢Corel!)。
将wpd文档另存为Word文档(或者可能更安全,请使用Office Interop执行此操作)。
使用Office Interop命令查找每个唯一标记,并将其替换为新的合并域(我对此部分的工作原理不太清楚)。
这种方法有几点需要注意:
当前形式的WP_Reader没有对任何合并函数进行建模。这将需要一些编码,但方法非常简单。我是唯一一个在这个项目上工作的人,并且还没有这些功能的需求。所有的合并函数要么没有参数,要么有一个或多个字符串。这些函数应该很容易建模,我可以帮助您入门。
.frm和.dat文件实际上是WordPerfect文件,它们被设置为合并文档和合并文档的数据源(可能它们也用于其他目的)。您可以使用与.wpd文件相同的WP_Reader对这些文件进行建模。
只有在合并文档极其简单的情况下,这种方法才会起作用。WordPerfect merge arena包含自己的语言,独立于WP命令集。有些If语句、For循环等在Word文档中不会转换成任何有用的东西。
在尝试这个耗时的项目之前,先看看LibreOffice是否能将带有合并代码的wpd文件直接转换为.odt格式。lib-wpd项目是LibreOffice中的一个内置程序,从2003年左右开始运行,他们可能已经合并了这个功能。从.odt到.docx的转换应该很容易完成。
https://stackoverflow.com/questions/48430801
复制相似问题