V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
v2hub
V2EX  ›  问与答

office 转 pdf 有什么高效的方案吗

  •  
  •   v2hub · 2019-07-27 11:40:49 +08:00 · 8383 次点击
    这是一个创建于 1940 天前的主题,其中的信息可能已经有所发展或是发生改变。

    原始文件格式有:doc、docx、xls、xlsx、ppt、pptx
    想要转换成:pdf 格式

    目前网上有一些付费的服务,但是没办法满足我们的需求:

    1. 对文件大小有限制。
    2. 批量转换支持比较弱。
    3. 有一些价格比较高。

    于是我们想自己搭建一个来实现,不知道有木有可用的方案,要求如下:

    1. 服务器是 linux 的,不打算使用 ms 的 api。
    2. 语言方面的要求是 golang、php
    41 条回复    2020-11-12 13:46:02 +08:00
    Sainnhepark
        1
    Sainnhepark  
       2019-07-27 11:44:27 +08:00 via Android   ❤️ 1
    MS office 难道不可以直接转吗
    AzureTT
        2
    AzureTT  
       2019-07-27 11:44:29 +08:00   ❤️ 1
    v2hub
        3
    v2hub  
    OP
       2019-07-27 11:49:17 +08:00
    @Sainnhepark
    可以,但是我们要批量的,各个门店上传上来的文档太多了。必须批量处理。

    @AzureTT
    这个看过,没有提供接口,而且也不支持 ppt 转 pdf
    itning
        4
    itning  
       2019-07-27 12:00:33 +08:00 via Android   ❤️ 1
    aspose 上网找 破解版的 或者付费
    snw
        5
    snw  
       2019-07-27 12:26:05 +08:00 via Android   ❤️ 2
    如果是 Windows,直接用 VBA 控制打开文件、打印成 PDF、关闭文件就行了。
    限定 Linux 就困难得多。
    Chowe
        6
    Chowe  
       2019-07-27 12:28:32 +08:00 via iPhone   ❤️ 1
    Pandoc+Latex
    nihiue
        7
    nihiue  
       2019-07-27 12:29:43 +08:00 via Android   ❤️ 1
    前两天刚写了个各类 pdf 处理 API 的 sdk,https://github.com/Nihiue/ilovepdf-node
    gamecmt
        8
    gamecmt  
       2019-07-27 12:31:52 +08:00 via Android   ❤️ 1
    windows 下调用 api 转换成 pdf,用文件夹同步到 linux 下面,这种应该更可行吧。
    soros1990
        9
    soros1990  
       2019-07-27 12:31:54 +08:00   ❤️ 1
    另存为 pdf,soeasy
    nihiue
        10
    nihiue  
       2019-07-27 12:32:40 +08:00 via Android   ❤️ 1
    自己实现的方案我也调研过,在 Linux 下容易运维+效果靠谱的基本没有,所以最终还是用了三方 API
    katos
        11
    katos  
       2019-07-27 12:56:41 +08:00   ❤️ 1
    pdf 虚拟打印机?
    mogutouer
        12
    mogutouer  
       2019-07-27 12:59:16 +08:00   ❤️ 1
    word 好像可以写宏?
    inframe
        13
    inframe  
       2019-07-27 13:14:35 +08:00 via Android   ❤️ 1
    用个 Windows 系统 这个问题就解决了,GitHub 上一堆 VBS 脚本可以批量转换,
    处理文档上,似乎没有什么软件可以超越 office 全家桶
    sephinh
        14
    sephinh  
       2019-07-27 13:16:36 +08:00 via iPhone   ❤️ 1
    pdf 虚拟打印机是最方便的
    burning
        15
    burning  
       2019-07-27 15:04:32 +08:00   ❤️ 1
    Mac 上有个 pdftor
    ylrshui
        16
    ylrshui  
       2019-07-27 16:06:16 +08:00 via iPhone   ❤️ 1
    根据 office 帮助文档,整个 vba 程序就行,调用 office 自带的另存为功能,自动批量另存为 pdf
    ylrshui
        17
    ylrshui  
       2019-07-27 16:06:49 +08:00 via iPhone   ❤️ 1
    excel word ppt 都能另存为 pdf
    chinvo
        19
    chinvo  
       2019-07-27 16:27:05 +08:00 via iPhone   ❤️ 1
    要求门店上传 pdf,又不是不能导出
    chinvo
        20
    chinvo  
       2019-07-27 16:28:13 +08:00 via iPhone   ❤️ 1
    PHP 有个 phpoffice,但是格式不保证正确
    elfive
        21
    elfive  
       2019-07-27 16:34:24 +08:00 via iPhone   ❤️ 1
    装个 Adobe pdf,然后会帮你装个虚拟打印机,然后就是全选,打印
    dazkarieh
        22
    dazkarieh  
       2019-07-27 16:57:13 +08:00
    LibreOffice 或者 pandoc
    ethanlu
        23
    ethanlu  
       2019-07-27 17:04:22 +08:00
    VBA 就可以了,for 循环一下目录里面的所有文件,Select Case 判断一下后缀,不同后缀分别用 word,excel,ppt 打开,再 saveas pdf 就行了
    TIGERII
        24
    TIGERII  
       2019-07-27 17:07:37 +08:00
    openoffice 或者 libreoffice
    robin1985
        25
    robin1985  
       2019-07-27 17:17:03 +08:00
    wps
    Nasei
        26
    Nasei  
       2019-07-27 17:32:48 +08:00 via Android
    要我说,服务器该用 win 的时候就用 win 啊,系统选择又不靠信仰,哪个方便用哪个
    mdluo
        27
    mdluo  
       2019-07-27 18:38:01 +08:00
    LibreOffice 对 M$ Office 的兼容不错,比 OpenOffice 要好,Linux 里装好 LibreOffice 然后一行命令就可以搞定:

    libreoffice --headless --convert-to pdf --outdir <output/dir> /path/to/input.docx
    mdluo
        28
    mdluo  
       2019-07-27 18:47:45 +08:00
    M$ 官方建议不要在服务器上做 Microsoft Office 自动化: https://support.microsoft.com/en-us/help/257757
    zw1one
        29
    zw1one  
       2019-07-27 20:11:50 +08:00 via Android
    建议弄一个 windows server 调 ms office 接口实现。在 linux 上的 office 或多或少会有问题。
    yytsjq
        30
    yytsjq  
       2019-07-27 23:38:31 +08:00   ❤️ 1
    用于将 Word 文档转换为 PDF 文件的脚本 (PowerShell)
    https://gallery.technet.microsoft.com/office/Script-to-convert-Word-f702844d
    xuc
        31
    xuc  
       2019-07-27 23:52:56 +08:00 via Android
    https://www.tracker-software.com/products
    批量转可以用上面的 PDF-TOOLS
    iwtbauh
        32
    iwtbauh  
       2019-07-28 00:14:22 +08:00 via Android
    服务器可以 wine 运行 ms-office

    其实这也是 winehq 的说的 wine 的好处之一的变种,“ Wine makes it economical to use thin clients: simply install Wine on a Linux server, and voila, you can access these Windows applications from any X terminal.”

    在服务器上运行 X,然后执行 ms-office 和 office 自动化即可。

    当然,请务必使用正版 ms-office 软件。但可以节省一大笔 windows server 授权费用。

    此外还可以使用 libreoffice 进行自动化,速度会更快,更干净,但可能出现格式上的错乱。
    VDarker
        33
    VDarker  
       2019-07-28 00:21:03 +08:00
    acrobat 这个软件有提供程序调用的接口
    zhihaofans
        34
    zhihaofans  
       2019-07-28 08:20:56 +08:00 via Android
    win10+自带 pdf 打印机?
    RockShake
        35
    RockShake  
       2019-07-28 10:55:34 +08:00
    Small PDF 可以 PPT 转 PDF 啊
    IfEles
        36
    IfEles  
       2019-07-28 11:43:41 +08:00
    aspose 效果不错,比较依赖字库,对格式(字间距)要求高的情况下,稍显不理想,如果需要 pdf 和 office 一模一样的效果,只能走 office 另存为的那套逻辑,其他效果稍微差强人意
    nnnToTnnn
        37
    nnnToTnnn  
       2019-07-29 13:10:21 +08:00
    环境:
    manjaro + kde + libreoffice,

    操作方式:

    打开你的 word 右键 File -> Print ... -> Print to File ...
    nnnToTnnn
        38
    nnnToTnnn  
       2019-07-29 13:12:11 +08:00
    批量的话,就采用 LibreOffice Basic,调用理论上是可行的
    duxiansen
        39
    duxiansen  
       2019-09-11 19:11:39 +08:00
    @nihiue 你好,请问下有哪些好用的 api 吗?直接找了一通没找到
    Akkuman
        40
    Akkuman  
       2020-01-07 13:23:33 +08:00
    ttys001
        41
    ttys001  
       2020-11-12 13:46:02 +08:00
    @yytsjq 感谢,好用!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3042 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 13:55 · PVG 21:55 · LAX 05:55 · JFK 08:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.