|
《 空中接口学园 》 >> 丛书 >>>> 制作25周年分享电子书 |
|
-- 作者:tom -- 发布时间:2026-04-19 16:29:16 一晃眼,我的第一本书《PHS空中接口纵横谈》出版快25年了,时光如梭。考虑到这本书纸质版应该不太有了,我准备做个电子版,用来纪念一下。 没想到,做个电子版还很难。 原书是Word格式的,不适合分享。做成PDF,又失去了分享的特点,因此还是想做成htm网页版,进而做成mk版,方便导入AI。 首先是转markdown,用了DS推荐的方案,比如Mammoth和pandoc,结论是pandoc比较强一些,处理粗体准确,但是也有弱点。最大的问题就是无法处理word文档中的图形对象(形状和连线),导致组合图无法保存下来。微软的Markitdown工具,能保存图形对象中的文字,但是保存不了图形。偏偏这本书里面有大量的结构图和流程图,不保存下来就会开天窗。 后来考虑转htm,DS推荐的calibre可以将docx转成epub,但同样还是遇到了图形对象无法保存的问题,看来必须要将word图形对象转换为点阵图。
[此贴子已经被作者于2026-04-19 20:27:11编辑过] -- 作者:tom -- 发布时间:2026-04-19 20:25:29 DS给出的方案是采用VBA来自动转换,可惜提供的代码错误百出,完全没法用。 最后换到豆包,给出了一个可用的代码,可以把word图形对象转换为EMF,也就是增强图元文件。 Sub Toemf() Dim i As Long Dim shpOld As Shape Dim cnt As Long cnt = 0 Application.ScreenUpdating = False On Error Resume Next ' 倒序遍历,保证删除不错乱 For i = ActiveDocument.Shapes.count To 1 Step -1 Set shpOld = ActiveDocument.Shapes(i) ' 选中复制 shpOld.Select Selection.Copy Selection.Collapse wdCollapseStart ' 粘贴为图片 Selection.PasteSpecial Link:=False, DataType:=wdPasteEnhancedMetafile ' 删除原始旧组合形状 shpOld.Delete cnt = cnt + 1 Next i On Error GoTo 0 Application.ScreenUpdating = True MsgBox "全部批量完成!共转换:" & cnt & " 个图形,旧图全部删除,全部转为EMF图片" End Sub 转换为EMF后,还不是点阵图,想转成其他格式PNG或GIF,没有这个类型参数。甚至有的类型参数,比如wdPasteBitmap、 -- 作者:tom -- 发布时间:2026-04-19 20:31:20 眼看就走投无路了,没想到无意间把转换成EMF后的文件另存为htm后,word竟然把EMF转换为gif文件了,这下就解决了最棘手的问题。
-- 作者:tom -- 发布时间:2026-04-21 21:54:42 如果保存为wmf,要修改一下: Sub Towmf() Dim i As Long Dim shpOld As Shape Dim cnt As Long cnt = 0 Application.ScreenUpdating = False On Error Resume Next ' 倒序遍历,保证删除不错乱 For i = ActiveDocument.Shapes.Count To 1 Step -1 Set shpOld = ActiveDocument.Shapes(i) ' 选中复制 shpOld.Select Selection.Copy Selection.Collapse wdCollapseStart ' 粘贴为图片 Selection.PasteSpecial Link:=False, DataType:=wdPasteMetafilePicture ' 删除原始旧组合形状 shpOld.Delete cnt = cnt + 1 Next i On Error GoTo 0 Application.ScreenUpdating = True MsgBox "全部批量完成!共转换:" & cnt & " 个图形,旧图全部删除,全部转为wmf图片" End Sub 目前已经有4条评论 >>> 发表你的见解 |
|
Powered by:Old version Copyright ©2002 - 2019空中接口学园 , 页面执行时间:78.125毫秒 |