Скрипт для просмотра офисных документов в Microsoft Office Online

Я должен конвертировать много документов Microsoft Word в PDF для своей работы. Для меня очень важно сделать форматирование максимально точным. Я успешно установил Office 2010 на Xubuntu 14.04, но есть проблема, из-за которой я не могу открыть документ. Я могу только открыть новый пустой документ. Итак, я сдался там. Затем я приступил к поиску наиболее точного инструмента рендеринга для Word в PDF. Я посмотрел на онлайн-инструменты, такие как Zamzar, а также другие варианты. (К сожалению, LibreOffice слишком сильно меняет форматирование.)

После нескольких тестов лучший рендеринг, который я смог найти, был такой:
https: // view .officeapps.live.com / op / view.aspx? src =

Затем добавьте URL-адрес документа Word:
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

Текущее содержимое буфера обмена, когда я нажимаю на сценарий, будет ссылкой Dropbox на файл документа Word.

(Я не могу сделать закладку в разделе https://view.officeapps.live.com/op/view.aspx?src= URL, а затем просто перейти в адресную строку и вставьте ссылку Dropbox после того, как URL-адрес officeapps автоматически переадресовывается другому.)

Если у кого-то есть другие идеи, я, безусловно, открыт для них и благодарен.

Большое спасибо заранее.

2
задан 16 January 2015 в 17:19

1 ответ

решение

для сценария Наутилуса не было бы слишком трудно захватить содержание буфера обмена и работать с ними, но я могу сделать Вас один лучше. Следующий сценарий Наутилуса откроет любой поддерживаемый документ через Microsoft Office Онлайн. Это делает так первым копированием документа Вашей общедоступной папке Dropbox (если это не было там прежде), и впоследствии передача общедоступного URL к веб-сервису:

#!/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 по умолчанию. Удостоверьтесь к chage установка при перемещении папки DB.
  • CopyToDb средства управления, скопировать ли файлы в Public папка, если они расположены где-то в другом месте в файловой системе.

    Эта опция идет значением по умолчанию (yes). При отключении его (no), сценарий только обработает файлы в общедоступной папке Dropbox.

Инструкции по установке

, Поскольку это - сценарий Наутилуса, можно использовать следующие универсальные инструкции для установки его в системе:

, Как я могу установить сценарий Наутилуса?

<час>

Hope это - то, что Вы искали!

0
ответ дан 16 January 2015 в 17:19

Другие вопросы по тегам:

Похожие вопросы: