電子文書の相互変換および処理

Libreoffice 企業部門では、ドキュメントをある形式から別の形式に自動的に変換するタスクや、ソフトウェアの処理および変更のタスクが発生する場合があります。 問題は何だと思われます通常の 形式では 、完全に機能するライブラリが長い間機能するように記述されているため、PerlまたはPythonが連携して動作します。



しかし、残念なことに、さまざまなビジネスアプリケーションのすべてのシステム管理者およびプログラマーにとって、現在のところ、大量のワークフローは、クローズドで修正が不十分なフォーマットを使用して実行されています。 cなのは何ですか-doc、xls、およびそれらのような他のもの、docx、xlsxなどについてたくさん話しています。 特に最新バージョンのOfficeがインストールされた無料のWindowsがない場合、このようなファイルをどうするかはまったく理解できません。 もちろん、Windows、Visual Studio、C#のスキルがあれば、Microsoftドキュメントの分析に伴う問題ははるかに少なくなります。 ただし、ODFには問題があります。 さらに、結果をPDF形式で保存して、誰もそれを変更できないようにすることがよくあります。



幸いなことに、どのプラットフォームでもほとんどすべての一般的なドキュメント形式で作業するためのかなり普遍的な方法があります。 さらに説明します。



誰もがOpenOfficeとその進歩的なブランチLibreOfficeについて知っていることは間違いありません。 これらのパッケージの最新バージョンは、Microsoftドキュメントで素晴らしい仕事をしています-少なくとも多くの無料の解析ライブラリよりもはるかに優れています。



しかし、 OpenOfficeともちろんLibreOfficeには、 Pythonから直接ドキュメントを操作できるAPIがあることを知っている人はあまりいません。 特に、このAPIを使用すると、ドキュメントをある形式から別の形式に安全に変換できます。



したがって、ドキュメントを解析するには、適切なODF形式に変換してから、お好みのプログラミング言語を使用して必要なすべての変更を行い、必要に応じて結果をPDFまたはMS Office 2003形式(doc、xls)に変換するだけで十分です。



別のシナリオ:編集可能な形式(doc、docx、odt)のドキュメントがたくさんあり、それらからPDFを作成する必要がある場合。 すべて同じスクリプトを使用すると、このような変換を問題なく自動的に実行できます。 または、内部ワークフローに標準化されたODFを使用しますが、パートナーはまだdocxに成長していません。 大丈夫-LibreOfficeはODFをMS Office形式に自動的に変換します。



一般に、LibreOffice APIを使用するシナリオは多数あります。そのため、解決可能なタスクの範囲は非常に広いです。



必要なもの



この記事では、 UbuntuでのLibreOfficeの使用について説明しますが、わずかな変更を加えると、すべての指示が他のLinuxおよびOpenOfficeディストリビューション、およびWindowsおよびMacOSに転送されます。



必要なのは、 LibreOfficePythonをインストールするだけでなく、スクリプトを記述する基本的な機能です。



実際、bash変換スクリプト自体は次のようになります。



#!/bin/bash #       #   LibreOffice. # # : libre-converter.sh infile outfile LIBREOFFICE=`which libreoffice` PYTHON=`which python` DIR=`dirname "$0"` if [ ! -e "$1" ] then echo "Could not find source file $1" exit fi if [ ! -x "$LIBREOFFICE" ] then echo "Could not find LibreOffice binary" exit fi if [ ! -x "$PYTHON" ] then echo "Could not find Python" exit fi #     LibreOffice killall -u `whoami` -q soffice #    -    LibreOffice API test -f $DIR/DocumentConverter.py || wget http://www.artofsolving.com/files/DocumentConverter.py #  LibreOffice    8100  TCP $LIBREOFFICE "-accept=socket,host=localhost,port=8100;urp;StarOffice.ServiceManager" -norestore -nofirststartwizard -nologo -headless & #  ,  ,  LibreOffice   sleep 5s # ... echo -n " Converting $1 to $2... " $PYTHON $DIR/DocumentConverter.py "$1" "$2" echo "Done!" #  LibreOffice killall -u `whoami` soffice
      
      





このスクリプトを別のラッパースクリプトから呼び出して、多数のファイルをバッチ処理できます。



たとえば、同じ形式のカバーシートを多数のドキュメントに追加し、結果をPDF形式で保存する必要がありました。 カバーページを追加するために、 PerlスクリプトとOpenOffice :: OODocライブラリ (Ubuntuではlibopenoffice-oodoc-perlパッケージとして利用可能)を使用しました。 結果はバッチ処理スクリプトです:



 #!/bin/bash DIR=`dirname "$0"` TOOLS="$DIR/tools" INFILE="$1" FILENAME=`echo "$1" | sed 's/\.[^.]*$//'` SHORTNAME=`basename "$FILENAME"` OUTPATH=`dirname "$FILENAME"` if [ ! -e "$INFILE" ] then echo "Could not find source file $INFILE" exit fi echo "" echo "### Converting $INFILE ###" #  DOC  ODT: echo "1. Converting DOC to ODT:" $TOOLS/libre-converter.sh "$INFILE" "$FILENAME.odt" if [ $? -ne 0 ]; then echo "ERROR!" echo "  $INFILE   LibreOffice!" rm "$FILENAME.odt" exit fi #    echo -n "2. Add first page to ODT... " $TOOLS/add-1st-page.pl "$FILENAME.odt" if [ $? -ne 0 ]; then echo "ERROR!" echo "      $INFILE!" rm "$FILENAME.odt" exit fi echo "Done!"; #  ODT  PDF echo "3. Converting ODT to PDF:" $TOOLS/libre-converter.sh "$FILENAME.odt" "$OUTPATH/$SHORTNAME.pdf" if [ $? -ne 0 ]; then echo "ERROR!" echo "  $FILENAME.odst   LibreOffice!" rm "$FILENAME.odt" exit fi #    echo -n "4. Do some cleaning... " rm "$FILENAME.odt" echo "All done! :)"
      
      





これで十分です



 find /my/doc/path -type f -iname "*.doc" -exec ./convert.sh {} \;
      
      





出力では、美しいタイトルページを含むPDFファイルのセットを取得します。



その他の機能



説明した手法を使用すると、さまざまなドキュメント形式を相互に変換できるだけでなく、JPEGやPNGなどの画像ファイルにエクスポートすることもできます。 これを行うには、 ImageMagicをインストールし、説明されているスクリプトを使用してドキュメントをPDFに変換し、ImageMagicを使用してPDFを目的の画像形式に変換する必要があります。



 convert sample.pdf sample.png convert sample.pdf sample.jpg convert sample.pdf sample.tif
      
      





LibreOfficeまたはOpenOfficeを使用した自動ドキュメント変換に関するもう少しの情報は、ここにあります:



http://www.oooninja.com/2008/02/batch-command-line-file-conversion-with.html



LibreOffice用の上記のPython API(ちなみにPyUNOと呼ばれます )は、Pythonからドキュメントを直接編集するために使用できますが、これはあまり便利ではありません。 このhabratopikaで詳細を読んでください。



UPD:コメントで示唆されているように、親切な人はunoconvラッパースクリプトを記述することでOpenOffice(LibreOffice)を使用したドキュメント変換を簡素化しました。 このユーティリティは、上記のスクリプトとまったく同じ方法とまったく同じ方法を実行します。 しかし、ほとんどの場合、システムで正常に起動すれば、より便利になります。



All Articles