美文网首页macOS/iOS自动化指南Mac优雅使用指南MacTribe(如何优雅的使用Mac)
macOS中把微信公众号的文章保存成PDF(并存入资料库)

macOS中把微信公众号的文章保存成PDF(并存入资料库)

作者: 水哥叔叔 | 来源:发表于2017-07-06 21:27 被阅读296次

macOS中把微信公众号的文章保存成PDF(并存入资料库)

对于macOS/iOS生态,将微信公众号的文章保存成PDF是项总出小bug的事情,主要问题可能出在网页编码上。保存成的PDF看起来是没有问题的,但是如果想复制其中的文字,要么是乱码,要么会出现重字再或者说是没有图片。具体的我就不细说了,有需求的自然明白其中痛苦。
那么,今天我就给出一个曲折却可自动化的方案,彻底解决这一问题。程序文件已上传至GitHub,遵循GLP开源协议,“安装”方法可见GitHub上的README.md

PS:虽然标题说是保存微信公众号文章,但其实应该也适用于保存任何网页文章。

把微信公众号文章保存到OneNote

  1. 用微信中自带的保存到OneNote的功能。需要搜索“微软云笔记”的公众号,之后有使用说明。


    示例示例
  2. 用Safari中的OneNote Clipper保存到OneNote中。OneNote Web Clipper 安装网页里提供了插件下载和教程。
    建议用保存成“文章”的形式建议用保存成“文章”的形式

把OneNote的文章变成PDF

这一套自动化的方案是通过macOS中的Automator实现的。

流程鸟瞰流程鸟瞰
复制OneNote中的一篇文章,然后运行Automator的应用程序。这个程序先是用一个AppleScript将其复制到Word里再调用宏保存成PDF。第二个AppleScript是添加到Together 3里。
Together 3是一个资料库App,可以添加(常见格式)文档、图片、影音、网页、链接等内容,并可按组、文件夹、标签来分来,适合用来做研究时进行资料收集整理,不像文献管理软件那样专注于学术文献而功能狭隘。
on run {input, parameters}
    tell application "/Applications/Microsoft Word.app"
        create new document
        paste special (text object of selection)
        run VB macro macro name "调整"
        set theActiveDoc to the active document
        select sentence 1 of theActiveDoc
        set title to content of text object of selection
        set filename to "   " & title & ".pdf"
        save as theActiveDoc file format format PDF file name filename
        close theActiveDoc saving no
    end tell
    return filename
end run

注1:tell application "/Applications/Microsoft Word.app"中的路径是你的Word的路径。如果你电脑中只有一个Word,那直接写成tell application "Microsoft Word"都可以。

注2:通过OneNote Webclipper添加的文章,正文中是不含标题的,因此要我们自己手动添加上标题,这样放到Word里也才有文章标题,如图:


手动添加好标题手动添加好标题

“调整”宏的VBA代码:

Sub 调整()
    '为了将微信公众号保存成PDF所做的调整
    Dim iSha As InlineShape
    For Each iSha In ActiveDocument.InlineShapes
        If iSha.Type = wdInlineShapePicture Then
            iSha.LockAspectRatio = msoTrue '锁定纵横比
            iSha.Width = CentimetersToPoints(15) '宽15CM,这是为了让图片不会宽到超出页面
        End If
    Next
    Selection.WholeStory
    Selection.Font.Shrink '字号小一号
    With ActiveDocument.PageSetup '调整下页边距到我喜欢的数值,可自定义,单位CM
        .TopMargin = CentimetersToPoints(1.5)
        .BottomMargin = CentimetersToPoints(1.5)
        .LeftMargin = CentimetersToPoints(1.5)
        .RightMargin = CentimetersToPoints(1.5)
End With
End Sub

PDF添加进Together 3

这是Automator流程的第二部分,作为诸位的可选方案。

on run {input, parameters}
    tell application "/Applications/Together 3.app"
        import files input
    end tell
end run

注:input是上个applescript中返回的filename,也就是PDF文件的完整路径

相关文章

网友评论

本文标题:macOS中把微信公众号的文章保存成PDF(并存入资料库)

本文链接:https://www.haomeiwen.com/subject/cvekhxtx.html