用于在 Microsoft Office Online 中查看办公文档的脚本

用于在 Microsoft Office Online 中查看办公文档的脚本

为了工作,我需要将大量 Microsoft Word 文档转换为 PDF。对我来说,尽可能准确地呈现格式非常重要。我成功地在 Xubuntu 14.04 上安装了 Office 2010,但有一个问题,我无法打开文档。我只能打开一个新的空白文档。所以,我放弃了。然后,我继续寻找最准确的 Word 到 PDF 渲染工具。我研究了 Zamzar 等在线工具以及其他选项。(不幸的是,LibreOffice 对格式的更改太多了。)

经过几次测试,我能找到的最佳渲染是这样的:
https://view.officeapps.live.com/op/view.aspx?src=

然后附加 Word 文档的 URL:
https://dl.dropboxusercontent.com/u/4992179/My-Document.docx

完成品:
https://view.officeapps.live.com/op/view.aspx?src=https://dl.dropboxusercontent.com/u/4992179/My-Document.docx

从这里我将打印为 PDF。

从我的链接中您可以看到,我将使用 Dropbox“公共”文件夹来获取文档的 URL。要获取公共文件夹中的 URL,请右键单击文件并选择“复制公共链接”。

我希望尽可能简化这个过程,因为我必须做很多事情。我正在努力寻找最好的方法。我想创建一个运行以下内容的脚本:
chromium-browser https://view.officeapps.live.com/op/view.aspx?src=Variable-Representing-Current-Content-Of-Clipboard

当我点击脚本时,剪贴板的当前内容将是 Word 文档文件的 Dropbox 链接。

(我无法为https://view.officeapps.live.com/op/view.aspx?src=URL 部分,然后只需转到地址栏并粘贴 Dropbox 链接,因为 officeapps URL 会自动转发到另一个。)

如果有人有其他想法,我当然会接受并表示感谢。

提前致谢。

答案1

Nautilus 脚本解决方案

获取剪贴板内容并对其进行操作并不太难,但我可以做得更好。以下 Nautilus 脚本将通过 Microsoft Office Online 打开任何受支持的文档。它首先将文档复制到您的公共 Dropbox 文件夹(如果之前不存在),然后将公共 URL 传递给 Web 服务:

#!/bin/bash

# Name:         Open in Microsoft Office Online
# Author:       (c) 2015 Glutanimate <https://github.com/Glutanimate/>
# Dependencies: dropbox, a web browser (e.g. firefox, chromium...)
# Installation: https://askubuntu.com/q/574252/81372
#
# License:      GNU GPLv3 (http://www.gnu.de/documents/gpl-3.0.en.html)
# Usage:        open_in_microsoft_office_online <file>

# Settings

DbPath="$HOME/Dropbox"
CopyToDb="yes"  # whether to copy file to public dropbox folder
                # in case it's not there already (no/yes)

# Variables

GuiIcon="dropbox"
GuiTitle="Open in Microsoft Office Online"
MsOfficeUrl="https://view.officeapps.live.com/op/view.aspx?src="

File="$1"
Filename="${File##*/}"

# Functions

gui_notify(){
  ## generic notification function
  notify-send -i "$GuiIcon" "$GuiTitle" "$1"
  echo "$1"
}

# Checks

## check if file selected
if [[ ! -f "$File" ]]; then
  gui_notify "Error: No file selected."
  exit 1
fi

## check if Dropbox running
if ! pgrep dropbox > /dev/null 2>&1; then
  gui_notify "Error: Dropbox isn't running."
  exit 1
fi

## check if Dropbox folder set correctly
if [[ ! -d "$DbPath" ]]; then
  gui_notify "Error: Can't find dropbox folder. Please set DbPath in script."
  exit 1
fi

# Main

## get public URL
DbPubUrl="$(dropbox puburl "$File")"

## optional: copy file to public dropbox folder if it isn't there
if [[ "$CopyToDb" = "yes" && "$DbPubUrl" = "Couldn't get public url: Unknown Error" ]]; then
  ## create public Dropbox folder if it doesn't exist
  [[ ! -d "$DbPath/Public" ]] && mkdir "$DbPath/Public"
  ## copy file to public folder, don't overwrite any existing file
  cp -n "$File" "$DbPath/Public/"
  ## wait for sync to complete
  SyncCounter="0"
  while dropbox filestatus "$DbPath/Public/$Filename" | grep syncing; do
    [[ "SyncCounter" = "0" ]] && gui_notify "Syncing file..."
    sleep 5
    ## wait a maximum of 10 minutes for sync to complete
    if [[ "$SyncCounter" -gt "120" ]]; then
      gui_notify "Error: Sync timeout. Exiting."
      exit 1
      break
    fi
    ((SyncCounter++))
  done
  ## get public URL
  DbPubUrl="$(dropbox puburl "$DbPath/Public/$Filename")"
fi

## check if public URL exists and open in Microsoft Office Online
if [[ "$DbPubUrl" != "Couldn't get public url: Unknown Error" ]]; then
  xdg-open "${MsOfficeUrl}${DbPubUrl}" > /dev/null 2>&1 &
  gui_notify "Opening document in Microsoft Office Online..."
else
  gui_notify "Error: Can't generate public Dropbox link from File."
fi

配置

有两个重要的设置决定脚本的运行方式:

  • DbPath设置 Dropbox 文件夹的路径。这是~/Dropbox默认设置。如果您移动了 DB 文件夹,请务必更改此设置。
  • CopyToDbPublic控制如果文件位于文件系统的其他位置是否将文件复制到该文件夹​​。

    此选项默认开启 ( yes)。如果您禁用它 ( no),脚本将仅处理公共 Dropbox 文件夹中的文件。

安装说明

由于这是一个 Nautilus 脚本,您可以使用以下通用说明将其安装到您的系统上:

如何安装 Nautilus 脚本?


希望这就是您所寻找的!

相关内容