我的主要操作系统是 Ubuntu (14.04 LTS),但有时我也需要在 Windows 上工作。我经常使用 Microsoft Live Office 和 Google Docs。问题是,当我创建一些文档(例如 LibreOffice Writer)并尝试在 Windows(或相反)上使用它们时,我经常遇到问题,丢失一些格式等。此外,.docx
Ubuntu 上的文件也经常需要恢复。我的意思是有很多烦人的小细节。我该如何处理它们?
有什么方法可以创建不带任何特定扩展名的 Office 文档(例如.docx .odt
),以便它们可以在两个系统上顺利运行?
答案1
看来您正在寻找与 Microsoft Office 更好的兼容性。浏览器中使用的是 Google Docs。因此,这在 Windows 和 Ubuntu 之间是完美兼容的。Libreoffice 有适用于 Windows 和 Ubuntu 的版本,同样完美兼容。
Office Online 完美保留了 Microsoft Office .docx 和其他文档类型格式。因此,我发布了这个问题以便自动执行以下步骤。
附加 Word 文档的 URL: 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 缓存会阻止它检测到它确实是更新的文档。
下面的脚本可以集成到任何文件管理器的上下文菜单中。如果您想使用终端,可以执行以下操作。
- 如果您的主目录中还没有目录,请创建一个
bin
目录并将脚本移动到那里。 cd ~/bin
- 使脚本可执行
chmod +x MS_Office_Online-Script
- 打开一个新终端。
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 通常不可编辑,因此需要使用复制和粘贴。有时这也可能破坏格式,但您可能希望记住这个解决方案并尝试一下。