public void openPDF(String pdfPath) throws Exception {
    String acrobatPath = "";
    if (ACFrame.getInstance().hasProperity("Acrobat/Path")) {
      acrobatPath = ACFrame.getInstance().getProperity("Acrobat/Path");
    }

    String[] arg = {"", pdfPath};
    String osName = System.getProperty("os.name");
    if (osName.startsWith("Mac")) {
      arg[0] = "open";
    } else {
      arg[0] = acrobatPath;
      if (!new File(acrobatPath).exists()) {
        // アクロバットが存在しない
        ACMessageBox.showExclamation(
            "PDFの設定が正しくありません。"
                + ACConstants.LINE_SEPARATOR
                + "[メインメニュー]-[設定(S)]-[PDF設定(P)]よりAcrobatの設定を行ってください。");
        return;
      }
    }
    Runtime.getRuntime().exec(arg);
  }
 /**
  * PDFビューワを発見できなかった場合の処理です。
  *
  * @throws Exception 処理例外
  */
 protected void processErrorOnPDFViewerNotFound() throws Exception {
   ACMessageBox.showExclamation("PDFビューワの設定を取得できません。");
 }
 /**
  * PDFファイルの生成先フォルダの作成に失敗した場合の処理です。
  *
  * @throws Exception 処理例外
  */
 protected void processErrorOnPDFDirectoryCreate() throws Exception {
   ACMessageBox.showExclamation(
       "印刷に失敗しました。" + ACConstants.LINE_SEPARATOR + "PDFファイルの作成先フォルダを生成できません。");
 }
 /**
  * PDFファイルの作成を拒否された場合の処理です。
  *
  * @throws Exception 処理例外
  */
 protected void processErrorOnPDFFileCreate() throws Exception {
   ACMessageBox.showExclamation(
       "印刷に失敗しました。" + ACConstants.LINE_SEPARATOR + "PDFファイルを作成する権限がありません。");
 }
예제 #5
0
  /**
   * 「比較」イベントです。
   *
   * @param e イベント情報
   * @throws Exception 処理例外
   */
  protected void compareActionPerformed(ActionEvent e) throws Exception {
    // 比較

    if (!new File(getPdf1().getText()).exists()) {
      ACMessageBox.showExclamation("PDF1が見つかりません。");
      return;
    }
    if (!new File(getPdf2().getText()).exists()) {
      ACMessageBox.showExclamation("PDF2が見つかりません。");
      return;
    }

    final PdfReader p1 = new PdfReader(getPdf1().getText());
    final PdfReader p2 = new PdfReader(getPdf2().getText());
    final int pages1 = p1.getNumberOfPages();
    final int pages2 = p2.getNumberOfPages();

    if (pages1 != pages2) {
      if (pages1 > pages2) {
        ACMessageBox.showExclamation("PDF1よりもPDF2のページ数が少ないです。");
        return;
      }
      if (ACMessageBox.showOkCancel(
              "PDFのページ数が異なります。" + ACConstants.LINE_SEPARATOR + "PDF1のすべてのページがPDF2に含まれるかで比較しますか?")
          != ACMessageBox.RESULT_OK) {
        return;
      }
    }

    new Runnable() {
      private boolean firstLock;

      public void run() {
        final int stopKeyCode = KeyEvent.VK_CAPS_LOCK;
        firstLock = Toolkit.getDefaultToolkit().getLockingKeyState(stopKeyCode);

        LinkedList<Integer> pages = new LinkedList<Integer>();
        for (int i = 1; i <= pages2; i++) {
          pages.add(new Integer(i));
        }

        errorCount = 0;
        pageOfProcessed = 0;
        pageOfCount = pages1;
        StringBuilder sb = new StringBuilder();

        for (int i = 1; i <= pages1; i++) {
          try {
            boolean match = false;
            byte[] b1 = p1.getPageContent(i);
            Iterator<Integer> it = pages.iterator();
            while (it.hasNext()) {
              int page = ((Integer) it.next()).intValue();
              byte[] b2 = p2.getPageContent(page);
              if (Arrays.equals(b1, b2)) {
                sb.append("○PDF1(" + i + ") = PDF2(" + page + ")" + ACConstants.LINE_SEPARATOR);
                match = true;
                it.remove();
                break;
              }
            }
            if (!match) {
              sb.append("×PDF1(" + i + ") 【一致なし】" + ACConstants.LINE_SEPARATOR);
              errorCount++;
            }
          } catch (Exception ex) {
            sb.append("※PDF1(" + i + ") 【処理例外】" + ACConstants.LINE_SEPARATOR);
            errorCount++;
          }

          setProgress(sb);
          pageOfProcessed = i;

          if (Toolkit.getDefaultToolkit().getLockingKeyState(stopKeyCode) != firstLock) {
            getResult()
                .setText(
                    "!比較中断("
                        + pageOfProcessed
                        + " / "
                        + pageOfCount
                        + ") / 不一致数:"
                        + errorCount
                        + " 件"
                        + ACConstants.LINE_SEPARATOR
                        + sb.toString());
            return;
          }
        }

        getResult()
            .setText(
                "■比較完了("
                    + pageOfProcessed
                    + " / "
                    + pageOfCount
                    + ") / 不一致数:"
                    + errorCount
                    + " 件"
                    + ACConstants.LINE_SEPARATOR
                    + sb.toString());
      }
    }.run();
  }