office 转 pdf 有什么高效的方案吗 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
v2hub
V2EX    问与答

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

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

    原始文件格式有: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
    &nbs;   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     Solana     875 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 20:18 PVG 04:18 LAX 13:18 JFK 16:18
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86