自动将文章从Microsoft Word传输到Geektimes


我喜欢在Geektimes上写文章,但是有一个不便之处。这需要使用habra样式的自定义标记,并将图片手动传输到habrastorage.org。我WindowsMS Word写文章。老实说,我花了大约一个小时来找到针对该问题的现成解决方案。最好的发现是对habrastorage API的分析,以自动加载图像,但似乎已经过时了。提到某个转换器,但链接断开。


所提出的自动化的本质是通过单击Word中的按钮,准备好将文本复制到Geektimes编辑器窗口。并在复制后使照片自动出现在其中。

该技术非常简单。如您所知,MS Word可能包含Visual Basic中的嵌入式代码。这是一种特殊的Visual Basic方言,称为VBAVisual Basic for Applications)。)在VBA中,您可以编写非常复杂的脚本将文档转换为Word。用VBA编写的过程称为宏。可以从特殊菜单中显式调用Word中的宏,也可以将对它们的执行的调用分配给工具栏上的特定按钮。
照片极客时代自己。为了让他从某个地方下载,他需要将图片放在Internet上的某个地方。为了不花时间开发和分析用于免费图片托管网站(例如photos.google.com)的各种API 我决定使用老式的FTP。我们购买或以任何方式收到带有FTP内容下载的网站托管服务。山姆微软Word VBA它没有使用FTP的工具,但可以与COM对象(即特殊的dll文件)很好地交互。要在FTP上工作,使用WinSCP项目中COM模块 我编写的VBA宏首先用文本的标记替换了Word文档的指定样式,然后将Word文档转换为HTML文档HTML表示本身对我们来说不是必需的。作为转换的结果,Word将创建一个子目录,其中包含该格式的文档中的所有图片。png
图片批量传输到给定的FTP服务器。此后,宏将删除文档中的图片,并在其位置链接中替换为这些图片刚刚上传的站点。它保留在Word文档的窗口中,以选择所有文本并将其复制到Geektimes中的编辑器窗口中单击Geektimes中的按钮将其另存为草稿。然后再次单击编辑,并确保Geektimes已经下载了图片并将其替换为habrastorage的链接工作完成了。

安装WinSCP


下载文件NET程序集/ COM库,并将其解压缩到可访问的目录中。
在此目录中,运行命令行:%WINDIR%\ Microsoft.NET \ Framework64 \ v4.0.30319 \ RegAsm.exe WinSCPnet.dll /代码库/tlb:WinSCPnet64.tlb
就是这样。

如何创建有关此技术的文章。


为简化起见,创建了一个模板文件Article_GT.dotm其中包含必要的VBA和一个用于连接WinSCP对象的指针
要查看宏并检查连接WinSCP对象的可操作性,请在打开模板文件后,单击Word工具栏上的此按钮,然后

选择其中的“ 查看宏”,然后选择编辑”。将会出现


这样的窗口在此窗口中,在“ 工具”->“引用”菜单中,将打开此对话框。应将其标记为WinSCP


如果您直接在Google中打开文件然后将打开一张空白纸。没错,模板为空。在其中,只有普通样式标题1样式与habr样式相似。您必须自己编写文本。
使用前必须先调整模板中的宏。在宏的开头就是这样一个块
Const TMPNAME = "TMP"                    '        
Const URL = "http://www..ru"
Const FTPPATH = "/public_html/imgs/"     '         FTP,  
Const WEBPATH = "/imgs/"                 '       ,  
Const HOSTNMAE = "ftp..ru"   '    FTP 
Const USERNAME = " "             '      FTP 
Const PASSWORD = " "            '   

您需要在Word中将文件作为模板打开,输入正确的参数并另存为模板。
然后,您可以单击模板并撰写文章。保存该文章并调用ConvertToHabr
如果图片下载正常,它将被写在Word窗口的状态栏中
初始文档将关闭,在该位置显示已转换的文本。

免责声明


这不是一个功能齐全的转换器。现在,它仅用Haber标签替换了BoldItalic字体的样式,将Heading 1..5样式更改为标签,并替换了标签而不是超链接和图片。由于这是我在撰写本文时所需的全部内容。
模板文件在这里可用并且每个人都可以使用它进行改进,但是我不能保证这个项目的继续,它的支持,它的质量,它的专利纯度以及该链接的永恒

Source: https://habr.com/ru/post/zh-CN388785/


All Articles