JavaでExcelファイル⇒PDFファイル(パスワード付)に変換する話

  • SmartBee
  • Java

最終更新⽇:

掲載⽇:

本記事は、Javaを用いてExcelファイルからPDFファイルの変換を行い、PDFファイルにパスワードをかける方法について説明します。

■事前準備

1. jarファイルのインポート
必要な.jarファイルは以下になります。
JODConverter CoreJODConverter Local
 LibreOfficeを使用して、Excelファイル⇒PDFファイルに変換するのに必要になります。
GroupDocs.Merger
 PDFファイルをパスワード付きにするのに必要になります。

必要なjarファイルを用意したら、パスを通すことを忘れないで下さい。
Eclipseを利用したパスの通し方は以下になります。
①プロジェクトを右クリック>プロパティを選択
②Javaのビルド・パス>ライブラリーを選択
③JARの追加等から用意したjarファイルを選択し、下画像のようになっていればOK

CLM20230614_01.png

2. LibreOfficeの用意
LibreOfficeをダウンロード/インストールしてください。日本語対応にする必要はないです。

本プログラムでは、LibreOfficeの機能とJODConverterを利用して、ExcelファイルからPDFファイルに変換していきます。



■プログラムの例

1. Excelファイル⇒PDFファイルに変換

import java.io.File;
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.Merger;
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ファイルは存在していたので、皆さんも頑張って探して頂ければと思います(笑)