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

浏览: 3026

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

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

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

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

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

作者:竹间为简

链接:http://www.jianshu.com/p/d8fcca574707

來源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

image.png

  1. 示例

  2. 用Safari中的OneNote Clipper保存到OneNote中。OneNote Web Clipper 安装网页里提供了插件下载和教程。

image.png

把OneNote的文章变成PDF

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

image.png

流程鸟瞰


复制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里也才有文章标题,如图:

作者:竹间为简

链接:http://www.jianshu.com/p/d8fcca574707

來源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

image.png

手动添加好标题

“调整”宏的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文件的完整路径

作者:竹间为简

链接:http://www.jianshu.com/p/d8fcca574707

來源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

推荐 0
本文由 八公水鸭几 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册