JODConverter 3.0 PDF 変換にパスワードを設定してみた。


http://www.opengion.org/article/calcrep/
http://www.antenna.co.jp/sbc/doc/oosbc-1-0-manual-ja.pdf
http://www.artofsolving.com/node/18


このサイトとこの資料とこのサイトを見てるとヒントがいくつかありピンと来ました(´・ω・`)

public class JODTest() {

 public static void excel2Pdf(String excel, String pdf) {
 
  // 変換元
  File excelFile = new File(excel);
  // 変換先
  File pdfFile = new File(pdf);

  // フォーマットをPDFに設定
  DocumentFormat pdf = new DocumentFormat("Portable Document Format", "pdf", "application/pdf");

  // オプション
  Map<String, Object> option = new HashMap<>();
  
  /**
   * ファイルの暗号化 Boolean
   * デフォルト false
   */
  option.put("EncryptFile", true);
  /**
   * オープンパスワードを設定 String
   * デフォルト 空文字
   * 設定する場合、ファイルの暗号化をtrueにする。
   */
  option.put("DocumentOpenPassword", "password");
  /**
   * PDF許可範囲制限する。 Boolean
   * デフォルト false
   */
  option.put("RestrictPermissions", true);
  /**
   * 制限パスワードを設定する。 String
   * デフォルト 空文字
   * 設定する場合、許可範囲制限をtrueにする。
   */
  option.put("PermissionPassword", "password");
  /**
   * 印刷許可を設定する。 Integer
   * デフォルト 2
   * 0 許可しない
   * 1 低解像度
   * 2 高解像度
   */
  option.put("Printing", 0);
  /**
   * 変更許可を設定する。
   * デフォルト 4
   * 0 許可しない
   * 1 ページの挿入、削除、回転
   * 2 フォームフィールドへの入力のみ許可
   * 3 フォームフィールドへのコメントと入力のみ許可
   * 4 ページ抽出以外の全ての変更を許可
   */
  option.put("Changes", 0);
  /**
   * 内容抽出の設定する。 Boolean
   * デフォルト true
   */
  option.put("EnableCopyingOfContent", false);
  /**
   * アクセシビリティツールのテキストアクセスの設定する。 Boolean
   * デフォルト true
   */
  option.put("EnableTextAccessForAccessibilityTools", true);

  Map<String, Object> map = new HashMap<>();
  // 必要?
  map.put("FilterName", "calc_pdf_Export");
  // オプション情報
  map.put("FilterData", option);

  /**
   * PDF 変換のプロパティ情報を設定
   */
   /*
    * DocumentFamily で変換元の設定
    * DRAWING  画像?
    * PRESENTATION プレゼンテーション?
    * SPREADSHEET 表計算
    * TEXT 文書?
    * WEB ウェブ?w
    */
  pdf.setStoreProperties(DocumentFamily.SPREADSHEET, map);

  // OpenOffice起動
  OfficeManager officeManager = new DefaultOfficeManagerConfiguration().buildOfficeManager();
  officeManager.start();
  OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager);
  try {
   converter.convert(excelFile, pdfFile, pdf);
  } finally {
   officeManager.stop();
  }
}

変換オプションはたくさんあると思うが今は調べるのをやめよう( ゚д゚ )w

DocumentFamilyについてはもぉちょっと調べる必要があるかな?(´・ω・`)

0 件のコメント:

コメントを投稿