如何创建没有特定扩展名的办公文档?

如何创建没有特定扩展名的办公文档?

我的主要操作系统是 Ubuntu (14.04 LTS),但有时我也需要在 Windows 上工作。我经常使用 Microsoft Live Office 和 Google Docs。问题是,当我创建一些文档(例如 LibreOffice Writer)并尝试在 Windows(或相反)上使用它们时,我经常遇到问题,丢失一些格式等。此外,.docxUbuntu 上的文件也经常需要恢复。我的意思是有很多烦人的小细节。我该如何处理它们?

有什么方法可以创建不带任何特定扩展名的 Office 文档(例如.docx .odt),以便它们可以在两个系统上顺利运行?

答案1

看来您正在寻找与 Microsoft Office 更好的兼容性。浏览器中使用的是 Google Docs。因此,这在 Windows 和 Ubuntu 之间是完美兼容的。Libreoffice 有适用于 Windows 和 Ubuntu 的版本,同样完美兼容。

Office Online 完美保留了 Microsoft Office .docx 和其他文档类型格式。因此,我发布了这个问题以便自动执行以下步骤。

  1. 添加以下内容:https://view.officeapps.live.com/op/view.aspx?src=

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

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

我建议按照我的论坛帖子中的步骤操作,以保持 Ubuntu 中的 MS Office 格式一致。

有时我会收到同事发来的需要编辑的 .docx 文件。我会在 LibreOffice 中打开它,编辑内容(但不更改格式)并保存。在 LibreOffice 中,格式可能与在 MS Office 中打开时不同。然后我使用 Office Online 脚本(发布在下面)打开它。在 Office Online 中,格式将保留,但会保留我刚刚进行的最近编辑。请注意,如果您在 Office Online 中多次打开同一份文档,则第二次您需要将文件名更改至少一个字符。MS Office Online 缓存会阻止它检测到它确实是更新的文档。

下面的脚本可以集成到任何文件管理器的上下文菜单中。如果您想使用终端,可以执行以下操作。

  1. 如果您的主目录中还没有目录,请创建一个bin目录并将脚本移动到那里。
  2. cd ~/bin
  3. 使脚本可执行chmod +x MS_Office_Online-Script
  4. 打开一个新终端。MS_Office_Online-Script /path/to/document.docx

总的来说,我会尝试过渡到使用 LibreOffice 而不是 MS Office。事实上,我希望这个脚本能让你完全摆脱 Windows。;)

#!/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 

以下是我目前使用的脚本。它实际上比上面的脚本更快(请参阅“等待同步完成。”注释),但我删除了一些if语句并简化了它。Dropbox 不再为免费帐户提供公共文件夹,并于 2017 年 9 月 1 日停止为付费帐户提供该文件夹。因此,您需要使用其他网站服务。您可以使用自己的网址调整脚本中的网址。

#!/bin/bash

# Name:         Open in Microsoft Office Online
# Author:       jbrock; Much thanks to Glutanimate <https://github.com/Glutanimate/>
# Dependencies: dropbox, a web browser (e.g. firefox, chromium...)
# Installation: http://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>

# Variables
pub_path="$HOME/Dropbox/Public"
file="${1##*/}"

# Copy to Dropbox/Public directory.
cp -n "$1" "$pub_path"

# Wait for sync to complete.
while dropbox filestatus "$pub_path/$file" | grep -q syncing; do true; done

# Open in browser. (Get public URL is broken: 6 Sept. 2016)
exo-open "https://view.officeapps.live.com/op/view.aspx?src=https://dl.dropboxusercontent.com/u/4992179/$file" > /dev/null 2>&1 &

# Remove file from Public folder.
# This last part is optional. You probably want to remove your document from a public directory.
# I use this function with Xfce. I am not sure about other desktop environments.
#sleep 15
#trash () {
#dir="$HOME/.local/share/Trash/files/"
#if ! [ -d "$dir" ]; then
#   mkdir "$dir"
#fi
#mv "$@" "$dir"
#}
#trash "$pub_path/$file"

答案2

听起来你有一个旧版本的 libreoffice,如果你没有最新的 libreoffice 5,为什么不升级呢?

https://www.libreoffice.org/download/libreoffice-fresh/

我很久没有遇到过这种问题了,特别是 .doc 或 .docx 文档,它们的兼容性几乎是 100%

答案3

如果没有其他更明显的方法,最后的手段之一就是使用 pdf,它可以在操作系统之间移植。但是,pdf 通常不可编辑,因此需要使用复制和粘贴。有时这也可能破坏格式,但您可能希望记住这个解决方案并尝试一下。

相关内容