Daring Fireball: Markdown
CommonMark
MacDown Open Source Markdown Editor
Marked
GitHub Flavored Markdown
oimotis
V2EX  ›  Markdown

Markdown 编辑器 MWeb 1.9 发布了!新图标、编辑器大改进、导出 PDF 改进、增加图床功能、中文版等!

  •  5
     
  •   oimotis · Dec 19, 2015 · 7666 views
    This topic created in 3824 days ago, the information mentioned may be changed or developed.

    新图标

    w256
    换了一个新的图标,新图标是由 Producter http://weibo.com/u/5642390620 设计的, MWeb 终于有了一个高大上的图标了!非常感谢 Producter !

    编辑器大改进

    之前打字时会明显地看到字体颜色变化过程,现在不会了。之前在自定编辑器主题时,如果设置标题字体比较大,会明显看到字体变大过程,现在也修正了这个问题。 MWeb 一直都是花比较多的时间在编辑器改进上,之后的版本也会这样做。

    导出为 PDF 改进

    之前导出的 PDF 中,如果有 TOC 和 footnote ,在 PDF 中点击时,是不正常的,不会跳到想要的位置。 1.9 版修正了这个问题!另外 1.9 版在导出时还可以选择是否为 PDF 生成大纲视图(目录)。要注意的是这两个功能在 Lite 版中是没有的。现在开始慢慢加强和改进付费版了,希望能有多一点人购买,然后购买了的朋友也能觉得值,另外图床功能也是只支持付费版的。下图是为 PDF 增加目录后的效果。
    w847

    增加图床功能

    MWeb 在编写 Markdown 文档时,不管文档库还是外部模式,插入图片都是复制原图到合适的位置,然后以相对引用的方式引用图片。这样做的好处是在编写文档时会感到非常顺畅,不会有等待图片上传完然后再复制地址的问题,然后图片也不会依赖于网络服务。这样就几乎不会丢失图片了(插入非图片也是这样处理的)。

    当要把文档发布出去时,比如说导出 html , MWeb 会把本地的图片也一并导出。另外发布到 evernote 、 wordpress 、 blogger 、 medium 等服务, MWeb 也是会把本地图片上传到所属的服务。

    现在再增加了图床功能,这样的话基本上就满足大部分使用情景了。下面介绍一下怎么使用这个图床功能。

    增加图床服务

    像发布服务那样,首先要增加图床服务,在 偏好设置 - 发布服务 里,目前可以增加三种图床服务: Google Photos 、 imgur 、自定义。前两种不用多说,点击然后用所属帐号登入即可,注意先翻墙就没问题了。主要要介绍的是自定义,如下图:
    w605

    我会使用 https://sm.ms/doc/ 这个图床做介绍,主要是它的 API 最简单,按 API 说明填入相关信息如下:
    w605

    需要说明的有:
    POST File Name:这个是指表单的图片上传的名称
    图片 URL 路径:是指返回的 JSON 结果中的图片网址值的路径。比如说 sm.ms 说明文档中,返回的 JSON 结果如下:

    {
        "code": "success",
        "data": {
            width: 1157,
            height: 680,
            filename: "image_2015-08-26_10-54-48.png",
            storename: "56249afa4e48b.png",
            size: 69525,
            path: "/2015/10/19/56249afa4e48b.png",
            hash: "nLbCw63NheaiJp1",
            timestamp: 1445239546,
            url: "https://ooo.0o0.ooo/2015/10/19/56249afa4e48b.png",
            delete: "https://sm.ms/api/delete/nLbCw63NheaiJp1"
        }
    }
    

    可以看到它返回的图片的网址是 data 下的 url 字段的值,所以就填入 data/url ,要注意的是,只支持 JSON 返回结果。

    图片 URL 前缀:这个是由于有些 API 可能只返回图片的保存位置,比如说七牛(只返回 key 和 hash ),它还要在前面加上一个固定的网址才能得到真正的图片网址,可以参考下图的设置。下图是填好后并点验证按钮测试后的结果。点验证按钮,会让你选择一张图片,选择好会直接用填入的设置上传图片,如果上传成功,则会跳出如下图的提示。
    w621

    重要提示:目前还不支持七牛,因为七牛的 token 好像最多 12 个小时内就会无效了,也暂时不能生成长久 token (是否这样?)。连官方的 objc SDK 都是直接说从服务器获取 token 的。然后也不支持像 Google Photos 或 imgur 那样的 OAuth 2.0 的方式。貌似可以用官方文档说明的算法生成 token ,但是 objc SDK 却不带这个,我暂时也懒得研究了。折中的方法是用官方提供的 php SDK ,另外写一个 https://sm.ms/doc/ 这种类型的 API 自用。

    上传本地图片至图床

    w456

    图床服务增加后,如上图选择右上角的分享按钮下的 把本地图片传至图床 菜单,会出来如下图的窗口:
    w771

    选择要上传到图床后,点 上传本地图片 按钮即可。图片会自动上传并在远程: 右方显示上传后的网址。点右边的三个按钮可以删除、查看和复制网址。当你删除远程图片或者在文档中有新增本地图片时,只要再点一次 上传本地图片 按钮即可,未上传的图片会自动上传。 下图是点 上传本地图片 按钮后的结果。另外三个按钮不用介绍应该会用了。

    w757

    再发一张传到七牛的效果:

    其他改进

    • 导出为 html 增加覆盖已有文件选项。
    • 增加简体中文和繁体中文语言支持。
    • 一些 Bug 修正和细节改进。

    更详细信息

    官网:http://zh.mweb.im
    MAS: https://itunes.apple.com/cn/app/mweb-pro-markdown-writing/id954188948?l=zh&ls=1&mt=12
    Lite 版:https://itunes.apple.com/cn/app/mweb-lite-pro-markdown-writing/id979033429?l=zh&ls=1&mt=12

    131 replies    2016-01-03 01:30:16 +08:00
    1  2  
    wizardforcel
        101
    wizardforcel  
       Dec 22, 2015 via Android
    。。不用 mac 的只能眼馋啊 怎么办

    现在只能用 atom 还不支持 tex 和 toc
    Yuansir
        102
    Yuansir  
       Dec 22, 2015
    支持,但是我还是喜欢 Typora
    ch940621
        103
    ch940621  
       Dec 22, 2015
    IOS 版年前能出吗
    tommyzhang
        104
    tommyzhang  
       Dec 22, 2015
    有几个小伙伴要买 有没有团购优惠的
    oimotis
        105
    oimotis  
    OP
       Dec 22, 2015
    @wizardforcel 看那个大神肯花时间做个 atom 插件支持这两个。

    @Yuansir 感谢, Typora 蛮不错的,作者更新非常勤,也很多人喜欢,跟 MWeb 不同使用习惯。 MWeb 是 100% 真实呈现原文本文档,只加语法高亮以增加可读性,这点永远都不会更改的。

    @ch940621 冬天效率直线下降,本来是计划春节前出测试版的,目前进度来说,还需要很努力才行。

    @tommyzhang 可以等下次促销, Mac App Store 没有团购优惠这个设置。
    lantianye
        106
    lantianye  
       Dec 22, 2015
    感觉使用起来有点复杂呀
    lantianye
        107
    lantianye  
       Dec 22, 2015
    Lite 是试用版吗?功能上有哪些差别?
    oimotis
        108
    oimotis  
    OP
       Dec 22, 2015
    @lantianye 官网首页和 MAS 最后都有说明。
    linfeng365
        109
    linfeng365  
       Dec 22, 2015
    希望 iOS 能同步,阅读就好了。
    panda0
        110
    panda0  
       Dec 22, 2015 via Android
    多少钱?
    malcolmyu
        111
    malcolmyu  
       Dec 22, 2015   ❤️ 1
    同觉得新图标很赞,支持一个!
    orzcc
        112
    orzcc  
       Dec 22, 2015
    非常赞!一直都期待一款适合的 MD 工具,只是图片的处理方式都不是很好。 MWeb 本地图片其实也够用了。

    提几个意见:
    ( 1 )希望尽快支持七牛
    ( 2 )希望支持自定义发布接口(比如自己写的网站)
    ( 3 )导出 word 时,图片标签转换失灵(不管本地还是远程的图片,都消失了)
    ( 4 )侧边栏文件右击属性中最好能增加一个 Reveal in Finder
    orzcc
        113
    orzcc  
       Dec 22, 2015
    发布到 Medium 、 Tumblr 时,本地图片都有问题。
    oimotis
        114
    oimotis  
    OP
       Dec 22, 2015
    @orzcc
    1. 七牛我再看看
    2. 目前可以在自己的网站上支持 MetaWeblog API ,因为这个是标准,这样会有大量可用工具, MWeb 也是支持的。
    3. 的确是,导出 word 功能非常原始。
    4. 文档库是不用管文档保存位置的,但是可以用右健标题栏知道。 外部模式已增加了 Reveal in Finder 。

    Medium 可以通过增加 Blogger 服务来支持本地图片发布,也可以用图床功能,然后点 新建文档,再发布到 Medium 。 Tumblr 有计划改进一下。

    PS : Medium 原来是好的,但是有朋友反映 发布 都会返回 Request failed: bad request (400) ,我测试也是这样,目前已尝试联系 Medium 了。

    感谢建议!
    linfeng365
        115
    linfeng365  
       Dec 22, 2015
    @oimotis 开发大大,你好。

    刚使用几天,非常喜欢。期待有 iOS 版可用于查看。(不急,我们能等)
    另有一个小要求:能有菜单,用于切换上下文档吗(文档库模式)? 期待下版。
    oimotis
        116
    oimotis  
    OP
       Dec 22, 2015
    @linfeng365 iOS 版用于查看有可能,切换上下文档也感谢建议!
    yanyuechuixue
        117
    yanyuechuixue  
       Dec 22, 2015 via Android
    @lantianye 简而言之, lite 就是体验版,只能写 10 篇
    achillesliu
        118
    achillesliu  
       Dec 22, 2015
    用了很久的 lite 版,主要用于记笔记。我的笔记图片很多, Evernote 的免费 60M 额度根本不够。刚刚购买了。感谢 @oimotis 写了这么好的软件。
    linfeng365
        119
    linfeng365  
       Dec 22, 2015
    @oimotis 请问在一个文档内部,能在上下标题跳转吗?(确实不想动鼠标)
    (不动鼠标就是最大生产力)
    oimotis
        120
    oimotis  
    OP
       Dec 22, 2015
    @achillesliu 感谢支持

    @linfeng365 用 CMD + 8 可以调出 文档大纲,然后上下箭头可以跳转了。再 CMD + 8 关闭。
    vavava
        121
    vavava  
       Dec 22, 2015
    @wizardforcel atom 有个叫 `Markdown-toc` 的插件,不过中文支持不好
    wantyourkiss
        122
    wantyourkiss  
       Dec 23, 2015
    下次促销什么时候?上次没赶上,好期待啊。。
    qiguai2017
        123
    qiguai2017  
       Dec 23, 2015
    淘宝竟然有卖这软件,是作者本人吗?怎么才8块钱
    oimotis
        124
    oimotis  
    OP
       Dec 23, 2015 via iPhone
    @qiguai2017 除 MAS 外的必为盗版!我去淘宝看看,感谢!
    Jackiepie
        125
    Jackiepie  
       Dec 23, 2015
    试了下 lite ,不错
    等促销
    mingelz
        126
    mingelz  
       Dec 23, 2015
    等促销^_^
    SR1
        127
    SR1  
       Dec 23, 2015
    良心更新啊~
    话说能不能支持输出到邮件呢?
    每次到了邮件格式都没了,好心伤。
    oimotis
        128
    oimotis  
    OP
       Dec 23, 2015 via iPhone
    @SR1 用复制为富文本,然后粘贴到邮件 App 中这个方法会好一点。复制预览窗口的也是比较好
    wizardforcel
        129
    wizardforcel  
       Dec 24, 2015
    @oimotis
    @vavava

    我觉得直接从 stackedit 的源码中移植就好了,二者都是拿 js 写的。
    scenix
        130
    scenix  
       Jan 3, 2016
    @oimotis 首先感谢你写了这么棒的一个软件,大赞图床功能。

    关于七牛 token 的问题,我这有个思路不知道是否可行。七牛网站上这么说:

    > 本 SDK 为客户端 SDK ,没有包含 token 生成实现,为了安全, token 都建议通过网络从服务端获取,具体生成代码可以参考 java/python/php/ruby/go 等服务端 sdk 。

    七牛的上传认证需要 access key 和 secret key ,为了安全,这两个 key 七牛是不建议存在本地的。因此如楼主所说需要自己写个 web 服务来做 token 的生成。

    但其实并没这么麻烦,有些语言本身就是又能跑服务端又能写客户端的。

    比如我在本地传文件就直接用七牛的 python 库,“强行伪装”自己是服务端,用 access key 和 secret key 初始化一下就直接上传了。


    我不懂 object-C 开发,但是我想如果在 mac app 中跑七牛的 java/python/php/ruby/go 等服务端 sdk 的话,只需要配置一下 access key 和 secret key ,就可以随便传文件了。
    scenix
        131
    scenix  
       Jan 3, 2016
    或者也可以参考下面的 php 代码, 手动生成 token ,可以自定义过期时间的

    ``` php
    public function getUploadToken(){
    $skey = "你的 secret key";
    $akey = "你的 access key";
    $args = array();
    $args['scope'] = "你要操作的空间名";
    $args['deadline'] = time() + 3600; // token 过期时间
    $putPolicy = json_encode($args); // 构建上传策略数组,包含空间名和过期时间


    // 计算 encodedPutPolicy
    $encodedPutPolicy = $this->urlsafe_b64encode($putPolicy);

    //encodedPutPolicy 和 skey 用 sha1 搞一下,计算出 sign
    $sign = hash_hmac('sha1', $encodedPutPolicy, $skey, true);

    //获得 encodedSign
    $encodedSign = $this->urlsafe_b64encode($sign);

    //三个用冒号串起来 得到 token
    $token = $akey . ':' . $encodedSign . ':' . $encodedPutPolicy;

    return $token;
    }

    // 这货就是 base64 然后把加号换成斜杠,减号换成下划线
    private function urlsafe_b64encode($string) {
    $data = base64_encode($string);
    $data = str_replace(array('+','/'),array('-','_'),$data);
    return $data;
    }

    ```
    1  2  
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3266 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 76ms · UTC 12:13 · PVG 20:13 · LAX 05:13 · JFK 08:13
    ♥ Do have faith in what you're doing.