本記事は、Javaを用いてExcelファイルからPDFファイルの変換を行い、PDFファイルにパスワードをかける方法について説明します。
■事前準備
1. jarファイルのインポート
必要な.jarファイルは以下になります。
①JODConverter Core、JODConverter Local
LibreOfficeを使用して、Excelファイル⇒PDFファイルに変換するのに必要になります。
②GroupDocs.Merger
PDFファイルをパスワード付きにするのに必要になります。
必要なjarファイルを用意したら、パスを通すことを忘れないで下さい。
Eclipseを利用したパスの通し方は以下になります。
①プロジェクトを右クリック>プロパティを選択
②Javaのビルド・パス>ライブラリーを選択
③JARの追加等から用意したjarファイルを選択し、下画像のようになっていればOK
2. LibreOfficeの用意
LibreOfficeをダウンロード/インストールしてください。日本語対応にする必要はないです。
本プログラムでは、LibreOfficeの機能とJODConverterを利用して、ExcelファイルからPDFファイルに変換していきます。
■プログラムの例
1. Excelファイル⇒PDFファイルに変換
import org.jodconverter.core.DocumentConverter;
import org.jodconverter.core.office.OfficeException;
import org.jodconverter.core.office.OfficeManager;
import org.jodconverter.local.LocalConverter;
import org.jodconverter.local.office.LocalOfficeManager;
public class Sample001 {
public static void main(String[] args) throws OfficeException {
String inputFileName = "C:\\Users\\Documents\\test.xlsx";
String outputFileName = "C:\\Users\\Documents\\test.pdf";
OfficeManager officeManager = LocalOfficeManager.make();
DocumentConverter converter = LocalConverter.make(officeManager);
officeManager.start();
File excelFile = new File(inputFileName);
File pdfFile = new File(outputFileName);
converter.convert(excelFile).to(pdfFile).execute();
officeManager.stop();
System.out.println("finish");
}
}
プログラムのポイントは、mainメソッドの後ろに「throws OfficeException」があることです。この処理が抜けているとエラーが発生します。
他に発生するエラーとしては、用意したjarファイル以外にも必要となるjarファイルを要求される可能性があります。
その際は、必要なファイルを用意してJODConverter Coreなどのjarファイルと同じようにインポートしてください。
officeManager.start();
LibreOfficeの機能を起動している。接続には、10秒ほどかかります。
converter.convert(excelFile).to(pdfFile).execute();Excel⇒PDFにファイルを変換している
officeManager.stop();LibreOfficeの機能を停止している。
この処理を忘れると、LibreOfficeとの通信が繋がり続け、次回変換する際に変換できない可能性がある。
2. PDFファイルにパスワードを付ける
import com.groupdocs.merger.domain.options.AddPasswordOptions;
public class Sample001 {
public static void main(String[] args) throws Exception {
String inputFileName = "C:\\Users\\Documents\\test.pdf";
String outputFileName = "C:\\Users\\Documents\\test_pass.pdf";
Merger merger = new Merger(inputFileName);
AddPasswordOptions addPass = new AddPasswordOptions("pass");
merger.addPassword(addPass);
merger.save(outputFileName);
System.out.println("finish");
}
}
本プログラムのポイントもmainメソッドの後ろに「throws Exception」を付けることを忘れないで下さい。
AddPasswordOptions addPass = new AddPasswordOptions("pass");
"pass"の部分でパスワードを設定する。
merger.addPassword(addPass);
merger.save(outputFileName);
PDFファイルにパスワードを設定し、ファイルを保存している。PDFファイルにパスワードをかける処理は、10秒弱かかる。
■感想
今回は、JavaでExcelファイル⇒PDFファイル(パスワード付)の変換をしましたが、1ファイルの処理時間は約20秒となった。
100ファイルすると約35分かかる計算になる。
対策案としては、「officeManager.start();~officeManager.stop();」の間で一度に100ファイルをPDFに変換することで処理時間を大幅に抑えられる。
100ファイルも一度にやることはないと思いますが。
また、筆者が困った場所としては、JODConverterを使用するのに多くのjarファイルを用意する必要があったことです。
一応、探せば全てWEB上に必要なjarファイルは存在していたので、皆さんも頑張って探して頂ければと思います(笑)
SmartBee

作業項目や現場情報の一括管理を可能にするクラウドサービスです。
SmartBeeを導入すれば、管理業務の負担が減るばかりでなく、点検現場の状況をリアルタイムで把握でき、ミスやコスト削減につながります。