2020年2月23日日曜日

31: パスワード暗号化されたファイルをLibreOffice UNOでオープン/コンバート

<このシリーズの前の記事 | このシリーズの目次 | このシリーズの次の記事>

任意の、OpenDocument 'odt'/'ods'等ファイル、Microsoft Office 'doc'/'docx'/'xls'/'xlsx'等ファイル、PDFファイル。OpenOfficeにも適用可能。

話題


About: UNO (Universal Network Objects)
About: LibreOffice
About: Apache OpenOffice
About: Javaプログラミング言語
About: C++
About: Microsoft .NET Framework
About: Pythonプログラミング言語
About: LibreOffice Basic
About: Apache OpenOffice Basic

この記事の目次

記法

  • 'Office'は、LibreOfficeまたはApache OpenOfficeを意味する。

開始コンテキスト


  • 読者は、プログラマーである(特に、プロフェッショナルプログラマーでなくてもよい)。
  • 読者は、UNO APIを使用したファイルコンバージョンのコアロジック(JavaC++.NET Framework(C#またはVisual Basic.NET)PythonOffice Basicによる)の知識を持っている。

ターゲットコンテキスト



  • 読者は、パスワードで暗号化されているドキュメントファイル(OpenDocument 'odt'、'ods'等ファイル、Microsoft Office 'doc'、'docx'、'xls'、'xlsx'等ファイル、PDFファイル)をオープンしたりコンバートしたりする方法を知る。
ト書き
Hypothesizer 7、Objector 31A、Objector 31Bがコンピューターの前にいる。


オリエンテーション


Hypothesizer 7
本記事では、パスワードで暗号化されているドキュメントファイル(OpenDocument 'odt'、'ods'等ファイル、Microsoft Office 'doc'、'docx'、'xls'、'xlsx'等ファイル、PDFファイル)を、LibreOfficeまたはApache OpenOfficeを使用して、プログラム的にオープンしたりコンバートしたりする方法を知ります。

Objector 31A
おう?パスワードプロテクトされている'doc'ファイルを'soffice --convert-to'にコンバートさせる方法が俺には分からん...

Hypothesizer 7
サー、もしも、'soffice --convert-to'に暇をやって、代わりに直接にUNO APIを使用されるのであれば、それはとても容易です、実のところ。

Objector 31A
そんなナンセンスは信じない!お前は嘘つきだ!

Hypothesizer 7
...しかし、それは真実です。証拠をお示しできます。

Objector 31A
ナンセンスだ!お前の証拠がどんなものか知ってるぞ: 飛んでる蛍のピンぼけ写真だろうが?

Hypothesizer 7
...いいえ...。写真?蛍?

Objector 31A
UFOの写真などいくらでも捏造できる!

Hypothesizer 7
「UFO」?...違います、私は'UNO'は申しました、「UFO」ではなく。

Objector 31A
...一体、そりゃ何だ?

Hypothesizer 7
えーと、それについての記事がございますが、短く言うと、UNO APIは、Officeインスタンスを操作するために使えるAPIです。

Objector 31A
「Officeインスタンスを操作する」?そんなことはしたくもない。

Hypothesizer 7
...'soffice --convert-to'を使用される時、あなた、まさにそれをなさっているのです。

Objector 31A
なんで'soffice --convert-to'を使えないんだ?

Hypothesizer 7
それを使えないとは申しませんが、もしも、それがあなたの要件を満たさないのであれば、多分、それは正しい選択ではないのです

Objector 31B
容易だとおっしゃいますけどね、どれだけ容易なの?そりゃあ、既にマスターした人はなんでも容易だと言い張れますよ。

Hypothesizer 7
マダム、もしも、UNO APIを使用してファイルをオープンする方法を既にご存知でしたら、それは、ファイルオープンプロパティを1つセットするというだけのことです。

Objector 31B
「もしも」...。恣意的に条件をつけるのであれば、なんでも容易だということにできますよ。そりゃあ、もしも、既にゴールの1cm前にいれば、フルマラソンを完走するのは容易だし、もしも、既に地表の1m上にいれば、月に着陸するのは容易だし、もしも、既にやせていれば、愛されるのは容易ですよ!

Hypothesizer 7
...最後のものはよく理解できませんが。

Objector 31B
太ってるからってふられたのよ!

ト書き
Objector 31Bは泣きくずれる。

Hypothesizer 7
...それが理由だったのかどうか疑わしいと思いますが。

Objector 31B
そう言われたの!

Hypothesizer 7
まあ、明らかに、相手はあなたにふさわしくなかった、と言わざるをえません。

ト書き
Objector 31Bはしゃくりあげる。

Hypothesizer 7
...実は、任意の妥当なファイルをオープンし、ドキュメントを任意の妥当なフォーマットで格納する(それは、ファイルコンバージョンそのものです)実行可能サンプル(JavaC++C#Pythonによる)があります。


本体


1: パスワードで暗号化された任意の妥当なファイルをオープンする方法


Hypothesizer 7
'Password'ファイルオープンプロパティにパスワード文字列をセットします。

それだけです、実のところ。

実は、そのロジックは、ある動作可能サンプル(JavaC++.NET Framework(C#またはVisual Basic.NET)Pythonによる)に実装されています。  .

例えば、Javaサンプルは、以下のようにして実行できます、パスワード(今回は、'TestPassword')をコマンド引数として指定して。

@bash or cmd ソースコード
gradle i_executeJarTask -Pc_mainClassName="theBiasPlanet.filesConverter.programs.FilesConverterConsoleProgram" -Pc_commandLineArguments="socket,host=localhost,port=2002,tcpNoDelay=1;urp;StarOffice.ComponentContext file://${HOME}/myData/development/filesConverter/execution/FilesConverterTestWithPassword.ods file://${HOME}/myData/development/filesConverter/execution/FilesConverterTestWithPasswordConvertedTo.csv \"Text - txt - csv (StarCalc)\" TestPassword"


2: 結びとその先


Hypothesizer 7
パスワードで暗号化された任意の妥当なファイルをオープンするには、ただ、ファイルオープンプロパティにパスワードをセットすればよいだけです。

パスワードで暗号化された任意の妥当なファイルをコンバートするというのは、ただ、UNO APIを用いたファイルコンバージョンのコアロジックのコンバート元ファイルオープンフェーズでそのファイルをオープンするだけのことです。

もしも、UNO APIを直接に使わないという制限の中で要件を満たすよう格闘されている方がおられるのであれば、...残念なことです、私の意見では。


参考資料


<このシリーズの前の記事 | このシリーズの目次 | このシリーズの次の記事>