はじめに
PDFファイルの分割や結合を行いたい場合、これまでWebサービスやコマンドラインツールを使用することが多かった。
今回は、GUI操作でPDFファイルの分割・結合・ページ抽出・回転・混合などができる「pdfsam」というJavaアプリケーションを使ってみる。
環境
Windows 11 Professional
WSL2 (Ubuntu 24.04 LTS)
pdfsam 4.3.4-1
OpenJDK 11
前提条件
X Window Systemの準備(WSL2の場合)
WSL2でGUIアプリケーションを使用する場合、X11フォワーディングまたはWSLgが必要
# WSLgがサポートされているかの確認(Windows 11の場合)
echo $DISPLAY
# VcXsrvやX410などのXサーバーを使用する場合
export DISPLAY=:0
pdfsamのインストール
Ubuntu
では公式パッケージリポジトリからインストールできる
# パッケージ情報の更新
sudo apt update
# pdfsamのインストール
sudo apt install pdfsam
ログ
sudo apt install pdfsam 1 х │ 9s │ 20:10:19
[sudo] password for kbushi:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages were automatically installed and are no longer required:
crack-common gyp libcares2 libdouble-conversion3 libgl1-amber-dri libglapi-mesa libjs-async libjs-events
libjs-inherits libjs-is-typedarray libjs-prettify libjs-regenerate libjs-source-map libjs-sprintf-js
libjs-typedarray-to-buffer libllvm17t64 libmd4c0 libnotify-bin libpcre2-16-0 libqt5core5t64
libqt5dbus5t64 libqt5gui5t64 libqt5network5t64 libqt5qml5 libqt5qmlmodels5 libqt5quick5 libqt5svg5
libqt5waylandclient5 libqt5waylandcompositor5 libqt5widgets5t64 libqt5x11extras5 libre2-10 libssl-dev
libuv1-dev libxcb-damage0 libxcb-xinerama0 libxcb-xinput0 mesa-utils-bin node-abbrev
node-ampproject-remapping node-ansi-regex node-ansi-styles node-aproba node-are-we-there-yet node-arrify
node-async node-async-each node-auto-bind node-babel-plugin-add-module-exports node-babel7-runtime
node-balanced-match node-base64-js node-binary-extensions node-brace-expansion node-busboy
node-camelcase node-caniuse-lite node-chownr node-chrome-trace-event node-ci-info node-cjs-module-lexer
node-cli-boxes node-cli-cursor node-clone node-collection-visit node-color-convert node-color-name
node-colors node-commander node-commondir node-concat-stream node-console-control-strings
node-convert-source-map node-core-js node-core-js-pure node-core-util-is node-data-uri-to-buffer
node-decompress-response node-deep-is node-defaults node-define-property node-delegates node-depd
node-diff node-electron-to-chromium node-encoding node-end-of-stream node-err-code node-error-ex
node-es-module-lexer node-escape-string-regexp node-eslint-utils node-eslint-visitor-keys node-esquery
node-estraverse node-esutils node-events node-fancy-log node-fast-deep-equal node-fast-levenshtein
node-fetch node-find-up node-flatted node-foreground-child node-fs-readdir-recursive
node-fs-write-stream-atomic node-fs.realpath node-function-bind node-get-caller-file node-get-stream
node-get-value node-glob node-globals node-got node-graceful-fs node-growl node-has-flag
node-has-unicode node-has-value node-has-values node-hosted-git-info node-iconv-lite node-ieee754
node-iferr node-imurmurhash node-indent-string node-inflight node-inherits node-ini node-interpret
node-ip node-ip-regex node-is-arrayish node-is-binary-path node-is-buffer node-is-descriptor
node-is-extglob node-is-path-cwd node-is-plain-obj node-is-plain-object node-is-stream
node-is-typedarray node-is-windows node-isarray node-isexe node-isobject node-js-tokens node-json-buffer
node-json-parse-better-errors node-json-schema node-json-schema-traverse node-json-stable-stringify
node-jsonify node-jsonparse node-kind-of node-levn node-loader-runner node-locate-path
node-lodash-packages node-lowercase-keys node-lru-cache node-map-visit node-memfs node-merge-stream
node-mimic-response node-minimatch node-minimist node-minipass node-mute-stream node-n3 node-negotiator
node-npm-run-path node-object-inspect node-object-visit node-once node-optimist node-optionator
node-osenv node-p-cancelable node-p-limit node-p-locate node-p-map node-pascalcase node-path-dirname
node-path-exists node-path-is-absolute node-path-is-inside node-path-type node-pify node-pkg-dir
node-postcss-value-parser node-prelude-ls node-process-nextick-args node-promise-inflight
node-promise-retry node-promzard node-prr node-pump node-punycode node-quick-lru node-randombytes
node-read node-readable-stream node-rechoir node-regenerator-runtime node-regenerator-transform
node-regexpp node-regjsgen node-repeat-string node-require-directory node-require-from-string
node-resolve node-resolve-cwd node-resolve-from node-restore-cursor node-resumer node-retry
node-run-queue node-safe-buffer node-serialize-javascript node-set-blocking node-set-immediate-shim
node-shebang-command node-shebang-regex node-shell-quote node-signal-exit node-slash node-slice-ansi
node-source-list-map node-source-map node-spdx-correct node-spdx-exceptions node-spdx-expression-parse
node-spdx-license-ids node-sprintf-js node-ssri node-stack-utils node-string-decoder node-strip-bom
node-supports-color node-tapable node-terser node-text-table node-through node-time-stamp
node-to-fast-properties node-tslib node-type-check node-typedarray node-typedarray-to-buffer node-undici
node-unicode-canonical-property-names-ecmascript node-unicode-match-property-value-ecmascript
node-unicode-property-aliases-ecmascript node-unset-value node-uri-js node-util-deprecate node-uuid
node-v8flags node-validate-npm-package-license node-wcwidth.js node-webpack-sources node-wordwrap
node-wrappy node-write-file-atomic node-xtend node-y18n node-yallist node-yaml nodejs-doc
qt5-gtk-platformtheme qttranslations5-l10n qtwayland5 xbitmaps
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
ca-certificates-java default-jre default-jre-headless fonts-dejavu-extra java-common libactivation-java
libapache-pom-java libatinject-jsr330-api-java libatk-wrapper-java libatk-wrapper-java-jni
libbcmail-java libbcpkix-java libbcprov-java libbcutil-java libcommons-io-java libcommons-lang3-java
libcommons-parent-java libfontawesomefx-java libfontbox2-java libgeronimo-validation-1.0-spec-java
libgeronimo-validation-1.1-spec-java libgettext-commons-java libhibernate-validator4-java
libjackson2-core-java libjackson2-jr-java libjaxb-api-java libjboss-jdeparser2-java
libjboss-logging-java libjboss-logging-tools-java liblogback-java libmail-java
libmetadata-extractor-java libopenjfx-java libopenjfx-jni libsambox-java libsejda-commons-java
libsejda-eventstudio-java libsejda-injector-java libsejda-io-java libsejda-java libslf4j-java
libthumbnailator-java libtwelvemonkeys-java libxmpcore-java openjdk-21-jre openjdk-21-jre-headless
openjfx openjfx-source
Suggested packages:
libatinject-jsr330-api-java-doc libcommons-io-java-doc libgeronimo-validation-1.0-spec-java-doc
libgeronimo-validation-1.1-spec-java-doc libgeronimo-jpa-2.0-spec-java libjoda-time-java libjsoup-java
libjboss-jdeparser2-java-doc libjboss-logging-java-doc libjboss-logging-tools-java-doc libjanino-java
libjansi-java libjetty9-java libservlet-api-java libtomcat9-java libmail-java-doc
libcommons-logging-java liblog4j1.2-java libjmagick6-java fonts-ipafont-gothic fonts-ipafont-mincho
fonts-wqy-microhei | fonts-wqy-zenhei fonts-indic
The following NEW packages will be installed:
ca-certificates-java default-jre default-jre-headless fonts-dejavu-extra java-common libactivation-java
libapache-pom-java libatinject-jsr330-api-java libatk-wrapper-java libatk-wrapper-java-jni
libbcmail-java libbcpkix-java libbcprov-java libbcutil-java libcommons-io-java libcommons-lang3-java
libcommons-parent-java libfontawesomefx-java libfontbox2-java libgeronimo-validation-1.0-spec-java
libgeronimo-validation-1.1-spec-java libgettext-commons-java libhibernate-validator4-java
libjackson2-core-java libjackson2-jr-java libjaxb-api-java libjboss-jdeparser2-java
libjboss-logging-java libjboss-logging-tools-java liblogback-java libmail-java
libmetadata-extractor-java libopenjfx-java libopenjfx-jni libsambox-java libsejda-commons-java
libsejda-eventstudio-java libsejda-injector-java libsejda-io-java libsejda-java libslf4j-java
libthumbnailator-java libtwelvemonkeys-java libxmpcore-java openjdk-21-jre openjdk-21-jre-headless
openjfx openjfx-source pdfsam
0 upgraded, 49 newly installed, 0 to remove and 35 not upgraded.
Need to get 112 MB of archives.
After this operation, 347 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://archive.ubuntu.com/ubuntu noble/main amd64 ca-certificates-java all 20240118 [11.6 kB]
Get:2 http://archive.ubuntu.com/ubuntu noble/main amd64 java-common all 0.75+exp1 [6798 B]
Get:3 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 openjdk-21-jre-headless amd64 21.0.7+6~us1-0ubuntu1~24.04 [46.4 MB]
Get:4 http://archive.ubuntu.com/ubuntu noble/main amd64 default-jre-headless amd64 2:1.21-75+exp1 [3094 B]
Get:5 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 openjdk-21-jre amd64 21.0.7+6~us1-0ubuntu1~24.04 [227 kB]
Get:6 http://archive.ubuntu.com/ubuntu noble/main amd64 default-jre amd64 2:1.21-75+exp1 [922 B]
Get:7 http://archive.ubuntu.com/ubuntu noble/main amd64 fonts-dejavu-extra all 2.37-8 [1947 kB]
Get:8 http://archive.ubuntu.com/ubuntu noble/universe amd64 libactivation-java all 1.2.0-2 [84.7 kB]
Get:9 http://archive.ubuntu.com/ubuntu noble/universe amd64 libapache-pom-java all 29-2 [5284 B]
Get:10 http://archive.ubuntu.com/ubuntu noble/universe amd64 libatinject-jsr330-api-java all 1.0+ds1-5 [5348 B]
Get:11 http://archive.ubuntu.com/ubuntu noble/main amd64 libatk-wrapper-java all 0.40.0-3build2 [54.3 kB]
Get:12 http://archive.ubuntu.com/ubuntu noble/main amd64 libatk-wrapper-java-jni amd64 0.40.0-3build2 [46.4 kB]
Get:13 http://archive.ubuntu.com/ubuntu noble/universe amd64 libbcprov-java all 1.77-1 [5227 kB]
Get:14 http://archive.ubuntu.com/ubuntu noble/universe amd64 libbcutil-java all 1.77-1 [530 kB]
Get:15 http://archive.ubuntu.com/ubuntu noble/universe amd64 libbcpkix-java all 1.77-1 [888 kB]
Get:16 http://archive.ubuntu.com/ubuntu noble/universe amd64 libmail-java all 1.6.5-2 [681 kB]
Get:17 http://archive.ubuntu.com/ubuntu noble/universe amd64 libbcmail-java all 1.77-1 [90.4 kB]
Get:18 http://archive.ubuntu.com/ubuntu noble/universe amd64 libcommons-parent-java all 56-1 [10.7 kB]
Get:19 http://archive.ubuntu.com/ubuntu noble/universe amd64 libcommons-io-java all 2.11.0-2 [297 kB]
Get:20 http://archive.ubuntu.com/ubuntu noble/universe amd64 libcommons-lang3-java all 3.14.0-1 [586 kB]
Get:21 http://archive.ubuntu.com/ubuntu noble/universe amd64 libfontawesomefx-java all 9.1.2-3 [4401 kB]
Get:22 http://archive.ubuntu.com/ubuntu noble/universe amd64 libfontbox2-java all 2.0.29-1 [1507 kB]
Get:23 http://archive.ubuntu.com/ubuntu noble/universe amd64 libgeronimo-validation-1.0-spec-java all 1.1-3 [43.4 kB]
Get:24 http://archive.ubuntu.com/ubuntu noble/universe amd64 libgeronimo-validation-1.1-spec-java all 1.0-2 [54.5 kB]
Get:25 http://archive.ubuntu.com/ubuntu noble/universe amd64 libgettext-commons-java all 0.9.6-6 [17.7 kB]
Get:26 http://archive.ubuntu.com/ubuntu noble/universe amd64 libjaxb-api-java all 2.3.1-1 [119 kB]
Get:27 http://archive.ubuntu.com/ubuntu noble/universe amd64 libjboss-logging-java all 3.5.3-1 [55.8 kB]
Get:28 http://archive.ubuntu.com/ubuntu noble/universe amd64 libjboss-jdeparser2-java all 2.0.3-2 [209 kB]
Get:29 http://archive.ubuntu.com/ubuntu noble/universe amd64 libjboss-logging-tools-java all 2.2.1-3ubuntu1 [228 kB]
Get:30 http://archive.ubuntu.com/ubuntu noble/universe amd64 libhibernate-validator4-java all 4.3.4-7 [421 kB]
Get:31 http://archive.ubuntu.com/ubuntu noble/universe amd64 libjackson2-core-java all 2.14.1-1 [432 kB]
Get:32 http://archive.ubuntu.com/ubuntu noble/universe amd64 libjackson2-jr-java all 2.14.0-1 [93.3 kB]
Get:33 http://archive.ubuntu.com/ubuntu noble/universe amd64 libslf4j-java all 1.7.32-1 [141 kB]
Get:34 http://archive.ubuntu.com/ubuntu noble/universe amd64 liblogback-java all 1:1.2.11-5 [697 kB]
Get:35 http://archive.ubuntu.com/ubuntu noble/universe amd64 libxmpcore-java all 5.1.3-1 [120 kB]
Get:36 http://archive.ubuntu.com/ubuntu noble/universe amd64 libmetadata-extractor-java all 2.11.0-1 [610 kB]
Get:37 http://archive.ubuntu.com/ubuntu noble/universe amd64 libopenjfx-jni amd64 11.0.11+1-3.1ubuntu5 [24.6 MB]
Get:38 http://archive.ubuntu.com/ubuntu noble/universe amd64 libopenjfx-java all 11.0.11+1-3.1ubuntu5 [7766 kB]
Get:39 http://archive.ubuntu.com/ubuntu noble/universe amd64 libsejda-commons-java all 1.1.7-1 [38.6 kB]
Get:40 http://archive.ubuntu.com/ubuntu noble/universe amd64 libsejda-io-java all 2.1.4-1 [30.0 kB]
Get:41 http://archive.ubuntu.com/ubuntu noble/universe amd64 libsambox-java all 2.4.24-1 [2455 kB]
Get:42 http://archive.ubuntu.com/ubuntu noble/universe amd64 libsejda-eventstudio-java all 3.0.4-1 [31.6 kB]
Get:43 http://archive.ubuntu.com/ubuntu noble/universe amd64 libsejda-injector-java all 2.0.0-1 [15.4 kB]
Get:44 http://archive.ubuntu.com/ubuntu noble/universe amd64 libthumbnailator-java all 0.4.20-1 [107 kB]
Get:45 http://archive.ubuntu.com/ubuntu noble/universe amd64 libtwelvemonkeys-java all 3.9.4-1 [1146 kB]
Get:46 http://archive.ubuntu.com/ubuntu noble/universe amd64 libsejda-java all 4.3.14-1 [1829 kB]
Get:47 http://archive.ubuntu.com/ubuntu noble/universe amd64 openjfx amd64 11.0.11+1-3.1ubuntu5 [6860 B]
Get:48 http://archive.ubuntu.com/ubuntu noble/universe amd64 openjfx-source all 11.0.11+1-3.1ubuntu5 [6068 kB]
Get:49 http://archive.ubuntu.com/ubuntu noble/universe amd64 pdfsam all 4.3.4-1 [1192 kB]
Fetched 112 MB in 8s (14.1 MB/s)
Extracting templates from packages: 100%
Selecting previously unselected package ca-certificates-java.
(Reading database ... 111975 files and directories currently installed.)
Preparing to unpack .../00-ca-certificates-java_20240118_all.deb ...
Unpacking ca-certificates-java (20240118) ...
Selecting previously unselected package java-common.
Preparing to unpack .../01-java-common_0.75+exp1_all.deb ...
Unpacking java-common (0.75+exp1) ...
Selecting previously unselected package openjdk-21-jre-headless:amd64.
Preparing to unpack .../02-openjdk-21-jre-headless_21.0.7+6~us1-0ubuntu1~24.04_amd64.deb ...
Unpacking openjdk-21-jre-headless:amd64 (21.0.7+6~us1-0ubuntu1~24.04) ...
Selecting previously unselected package default-jre-headless.
Preparing to unpack .../03-default-jre-headless_2%3a1.21-75+exp1_amd64.deb ...
Unpacking default-jre-headless (2:1.21-75+exp1) ...
Selecting previously unselected package openjdk-21-jre:amd64.
Preparing to unpack .../04-openjdk-21-jre_21.0.7+6~us1-0ubuntu1~24.04_amd64.deb ...
Unpacking openjdk-21-jre:amd64 (21.0.7+6~us1-0ubuntu1~24.04) ...
Selecting previously unselected package default-jre.
Preparing to unpack .../05-default-jre_2%3a1.21-75+exp1_amd64.deb ...
Unpacking default-jre (2:1.21-75+exp1) ...
Selecting previously unselected package fonts-dejavu-extra.
Preparing to unpack .../06-fonts-dejavu-extra_2.37-8_all.deb ...
Unpacking fonts-dejavu-extra (2.37-8) ...
Selecting previously unselected package libactivation-java.
Preparing to unpack .../07-libactivation-java_1.2.0-2_all.deb ...
Unpacking libactivation-java (1.2.0-2) ...
Selecting previously unselected package libapache-pom-java.
Preparing to unpack .../08-libapache-pom-java_29-2_all.deb ...
Unpacking libapache-pom-java (29-2) ...
Selecting previously unselected package libatinject-jsr330-api-java.
Preparing to unpack .../09-libatinject-jsr330-api-java_1.0+ds1-5_all.deb ...
Unpacking libatinject-jsr330-api-java (1.0+ds1-5) ...
Selecting previously unselected package libatk-wrapper-java.
Preparing to unpack .../10-libatk-wrapper-java_0.40.0-3build2_all.deb ...
Unpacking libatk-wrapper-java (0.40.0-3build2) ...
Selecting previously unselected package libatk-wrapper-java-jni:amd64.
Preparing to unpack .../11-libatk-wrapper-java-jni_0.40.0-3build2_amd64.deb ...
Unpacking libatk-wrapper-java-jni:amd64 (0.40.0-3build2) ...
Selecting previously unselected package libbcprov-java.
Preparing to unpack .../12-libbcprov-java_1.77-1_all.deb ...
Unpacking libbcprov-java (1.77-1) ...
Selecting previously unselected package libbcutil-java.
Preparing to unpack .../13-libbcutil-java_1.77-1_all.deb ...
Unpacking libbcutil-java (1.77-1) ...
Selecting previously unselected package libbcpkix-java.
Preparing to unpack .../14-libbcpkix-java_1.77-1_all.deb ...
Unpacking libbcpkix-java (1.77-1) ...
Selecting previously unselected package libmail-java.
Preparing to unpack .../15-libmail-java_1.6.5-2_all.deb ...
Unpacking libmail-java (1.6.5-2) ...
Selecting previously unselected package libbcmail-java.
Preparing to unpack .../16-libbcmail-java_1.77-1_all.deb ...
Unpacking libbcmail-java (1.77-1) ...
Selecting previously unselected package libcommons-parent-java.
Preparing to unpack .../17-libcommons-parent-java_56-1_all.deb ...
Unpacking libcommons-parent-java (56-1) ...
Selecting previously unselected package libcommons-io-java.
Preparing to unpack .../18-libcommons-io-java_2.11.0-2_all.deb ...
Unpacking libcommons-io-java (2.11.0-2) ...
Selecting previously unselected package libcommons-lang3-java.
Preparing to unpack .../19-libcommons-lang3-java_3.14.0-1_all.deb ...
Unpacking libcommons-lang3-java (3.14.0-1) ...
Selecting previously unselected package libfontawesomefx-java.
Preparing to unpack .../20-libfontawesomefx-java_9.1.2-3_all.deb ...
Unpacking libfontawesomefx-java (9.1.2-3) ...
Selecting previously unselected package libfontbox2-java.
Preparing to unpack .../21-libfontbox2-java_2.0.29-1_all.deb ...
Unpacking libfontbox2-java (2.0.29-1) ...
Selecting previously unselected package libgeronimo-validation-1.0-spec-java.
Preparing to unpack .../22-libgeronimo-validation-1.0-spec-java_1.1-3_all.deb ...
Unpacking libgeronimo-validation-1.0-spec-java (1.1-3) ...
Selecting previously unselected package libgeronimo-validation-1.1-spec-java.
Preparing to unpack .../23-libgeronimo-validation-1.1-spec-java_1.0-2_all.deb ...
Unpacking libgeronimo-validation-1.1-spec-java (1.0-2) ...
Selecting previously unselected package libgettext-commons-java.
Preparing to unpack .../24-libgettext-commons-java_0.9.6-6_all.deb ...
Unpacking libgettext-commons-java (0.9.6-6) ...
Selecting previously unselected package libjaxb-api-java.
Preparing to unpack .../25-libjaxb-api-java_2.3.1-1_all.deb ...
Unpacking libjaxb-api-java (2.3.1-1) ...
Selecting previously unselected package libjboss-logging-java.
Preparing to unpack .../26-libjboss-logging-java_3.5.3-1_all.deb ...
Unpacking libjboss-logging-java (3.5.3-1) ...
Selecting previously unselected package libjboss-jdeparser2-java.
Preparing to unpack .../27-libjboss-jdeparser2-java_2.0.3-2_all.deb ...
Unpacking libjboss-jdeparser2-java (2.0.3-2) ...
Selecting previously unselected package libjboss-logging-tools-java.
Preparing to unpack .../28-libjboss-logging-tools-java_2.2.1-3ubuntu1_all.deb ...
Unpacking libjboss-logging-tools-java (2.2.1-3ubuntu1) ...
Selecting previously unselected package libhibernate-validator4-java.
Preparing to unpack .../29-libhibernate-validator4-java_4.3.4-7_all.deb ...
Unpacking libhibernate-validator4-java (4.3.4-7) ...
Selecting previously unselected package libjackson2-core-java.
Preparing to unpack .../30-libjackson2-core-java_2.14.1-1_all.deb ...
Unpacking libjackson2-core-java (2.14.1-1) ...
Selecting previously unselected package libjackson2-jr-java.
Preparing to unpack .../31-libjackson2-jr-java_2.14.0-1_all.deb ...
Unpacking libjackson2-jr-java (2.14.0-1) ...
Selecting previously unselected package libslf4j-java.
Preparing to unpack .../32-libslf4j-java_1.7.32-1_all.deb ...
Unpacking libslf4j-java (1.7.32-1) ...
Selecting previously unselected package liblogback-java.
Preparing to unpack .../33-liblogback-java_1%3a1.2.11-5_all.deb ...
Unpacking liblogback-java (1:1.2.11-5) ...
Selecting previously unselected package libxmpcore-java.
Preparing to unpack .../34-libxmpcore-java_5.1.3-1_all.deb ...
Unpacking libxmpcore-java (5.1.3-1) ...
Selecting previously unselected package libmetadata-extractor-java.
Preparing to unpack .../35-libmetadata-extractor-java_2.11.0-1_all.deb ...
Unpacking libmetadata-extractor-java (2.11.0-1) ...
Selecting previously unselected package libopenjfx-jni.
Preparing to unpack .../36-libopenjfx-jni_11.0.11+1-3.1ubuntu5_amd64.deb ...
Unpacking libopenjfx-jni (11.0.11+1-3.1ubuntu5) ...
Selecting previously unselected package libopenjfx-java.
Preparing to unpack .../37-libopenjfx-java_11.0.11+1-3.1ubuntu5_all.deb ...
Unpacking libopenjfx-java (11.0.11+1-3.1ubuntu5) ...
Selecting previously unselected package libsejda-commons-java.
Preparing to unpack .../38-libsejda-commons-java_1.1.7-1_all.deb ...
Unpacking libsejda-commons-java (1.1.7-1) ...
Selecting previously unselected package libsejda-io-java.
Preparing to unpack .../39-libsejda-io-java_2.1.4-1_all.deb ...
Unpacking libsejda-io-java (2.1.4-1) ...
Selecting previously unselected package libsambox-java.
Preparing to unpack .../40-libsambox-java_2.4.24-1_all.deb ...
Unpacking libsambox-java (2.4.24-1) ...
Selecting previously unselected package libsejda-eventstudio-java.
Preparing to unpack .../41-libsejda-eventstudio-java_3.0.4-1_all.deb ...
Unpacking libsejda-eventstudio-java (3.0.4-1) ...
Selecting previously unselected package libsejda-injector-java.
Preparing to unpack .../42-libsejda-injector-java_2.0.0-1_all.deb ...
Unpacking libsejda-injector-java (2.0.0-1) ...
Selecting previously unselected package libthumbnailator-java.
Preparing to unpack .../43-libthumbnailator-java_0.4.20-1_all.deb ...
Unpacking libthumbnailator-java (0.4.20-1) ...
Selecting previously unselected package libtwelvemonkeys-java.
Preparing to unpack .../44-libtwelvemonkeys-java_3.9.4-1_all.deb ...
Unpacking libtwelvemonkeys-java (3.9.4-1) ...
Selecting previously unselected package libsejda-java.
Preparing to unpack .../45-libsejda-java_4.3.14-1_all.deb ...
Unpacking libsejda-java (4.3.14-1) ...
Selecting previously unselected package openjfx.
Preparing to unpack .../46-openjfx_11.0.11+1-3.1ubuntu5_amd64.deb ...
Unpacking openjfx (11.0.11+1-3.1ubuntu5) ...
Selecting previously unselected package openjfx-source.
Preparing to unpack .../47-openjfx-source_11.0.11+1-3.1ubuntu5_all.deb ...
Unpacking openjfx-source (11.0.11+1-3.1ubuntu5) ...
Selecting previously unselected package pdfsam.
Preparing to unpack .../48-pdfsam_4.3.4-1_all.deb ...
Unpacking pdfsam (4.3.4-1) ...
Setting up libbcprov-java (1.77-1) ...
Setting up libgettext-commons-java (0.9.6-6) ...
Setting up libslf4j-java (1.7.32-1) ...
Setting up libgeronimo-validation-1.0-spec-java (1.1-3) ...
Setting up java-common (0.75+exp1) ...
Setting up libbcutil-java (1.77-1) ...
Setting up liblogback-java (1:1.2.11-5) ...
Setting up libxmpcore-java (5.1.3-1) ...
Setting up libmetadata-extractor-java (2.11.0-1) ...
Setting up libsejda-commons-java (1.1.7-1) ...
Setting up libsejda-eventstudio-java (3.0.4-1) ...
Setting up libjboss-logging-java (3.5.3-1) ...
Setting up libfontbox2-java (2.0.29-1) ...
Setting up libjboss-jdeparser2-java (2.0.3-2) ...
Setting up libapache-pom-java (29-2) ...
Setting up libatinject-jsr330-api-java (1.0+ds1-5) ...
Setting up libsejda-injector-java (2.0.0-1) ...
Setting up libactivation-java (1.2.0-2) ...
Setting up libgeronimo-validation-1.1-spec-java (1.0-2) ...
Setting up fonts-dejavu-extra (2.37-8) ...
Setting up libfontawesomefx-java (9.1.2-3) ...
Setting up libmail-java (1.6.5-2) ...
Setting up libtwelvemonkeys-java (3.9.4-1) ...
Setting up libthumbnailator-java (0.4.20-1) ...
Setting up libjackson2-core-java (2.14.1-1) ...
Setting up libopenjfx-jni (11.0.11+1-3.1ubuntu5) ...
Setting up libatk-wrapper-java (0.40.0-3build2) ...
Setting up ca-certificates-java (20240118) ...
No JRE found. Skipping Java certificates setup.
Setting up libbcpkix-java (1.77-1) ...
Setting up openjfx-source (11.0.11+1-3.1ubuntu5) ...
Setting up libjaxb-api-java (2.3.1-1) ...
Setting up openjdk-21-jre-headless:amd64 (21.0.7+6~us1-0ubuntu1~24.04) ...
update-alternatives: using /usr/lib/jvm/java-21-openjdk-amd64/bin/java to provide /usr/bin/java (java) in auto mode
update-alternatives: using /usr/lib/jvm/java-21-openjdk-amd64/bin/jpackage to provide /usr/bin/jpackage (jpackage) in auto mode
update-alternatives: using /usr/lib/jvm/java-21-openjdk-amd64/bin/keytool to provide /usr/bin/keytool (keytool) in auto mode
update-alternatives: using /usr/lib/jvm/java-21-openjdk-amd64/bin/rmiregistry to provide /usr/bin/rmiregistry (rmiregistry) in auto mode
update-alternatives: using /usr/lib/jvm/java-21-openjdk-amd64/lib/jexec to provide /usr/bin/jexec (jexec) in auto mode
Setting up libcommons-parent-java (56-1) ...
Setting up libsejda-io-java (2.1.4-1) ...
Setting up libbcmail-java (1.77-1) ...
Setting up libjackson2-jr-java (2.14.0-1) ...
Setting up libatk-wrapper-java-jni:amd64 (0.40.0-3build2) ...
Setting up libsambox-java (2.4.24-1) ...
Setting up libjboss-logging-tools-java (2.2.1-3ubuntu1) ...
Setting up libopenjfx-java (11.0.11+1-3.1ubuntu5) ...
Setting up libcommons-lang3-java (3.14.0-1) ...
Setting up openjfx (11.0.11+1-3.1ubuntu5) ...
Setting up libcommons-io-java (2.11.0-2) ...
Setting up libhibernate-validator4-java (4.3.4-7) ...
Setting up libsejda-java (4.3.14-1) ...
Processing triggers for man-db (2.12.0-4build2) ...
Processing triggers for fontconfig (2.15.0-1.1ubuntu2) ...
Processing triggers for desktop-file-utils (0.27-2build1) ...
Processing triggers for hicolor-icon-theme (0.17-2) ...
Processing triggers for gnome-menus (3.36.0-1.1ubuntu3) ...
Processing triggers for ca-certificates-java (20240118) ...
Adding debian:ACCVRAIZ1.pem
Adding debian:AC_RAIZ_FNMT-RCM.pem
Adding debian:AC_RAIZ_FNMT-RCM_SERVIDORES_SEGUROS.pem
Adding debian:ANF_Secure_Server_Root_CA.pem
Adding debian:Actalis_Authentication_Root_CA.pem
Adding debian:AffirmTrust_Commercial.pem
Adding debian:AffirmTrust_Networking.pem
Adding debian:AffirmTrust_Premium.pem
Adding debian:AffirmTrust_Premium_ECC.pem
Adding debian:Amazon_Root_CA_1.pem
Adding debian:Amazon_Root_CA_2.pem
Adding debian:Amazon_Root_CA_3.pem
Adding debian:Amazon_Root_CA_4.pem
Adding debian:Atos_TrustedRoot_2011.pem
Adding debian:Atos_TrustedRoot_Root_CA_ECC_TLS_2021.pem
Adding debian:Atos_TrustedRoot_Root_CA_RSA_TLS_2021.pem
Adding debian:Autoridad_de_Certificacion_Firmaprofesional_CIF_A62634068.pem
Adding debian:BJCA_Global_Root_CA1.pem
Adding debian:BJCA_Global_Root_CA2.pem
Adding debian:Baltimore_CyberTrust_Root.pem
Adding debian:Buypass_Class_2_Root_CA.pem
Adding debian:Buypass_Class_3_Root_CA.pem
Adding debian:CA_Disig_Root_R2.pem
Adding debian:CFCA_EV_ROOT.pem
Adding debian:COMODO_Certification_Authority.pem
Adding debian:COMODO_ECC_Certification_Authority.pem
Adding debian:COMODO_RSA_Certification_Authority.pem
Adding debian:Certainly_Root_E1.pem
Adding debian:Certainly_Root_R1.pem
Adding debian:Certigna.pem
Adding debian:Certigna_Root_CA.pem
Adding debian:Certum_EC-384_CA.pem
Adding debian:Certum_Trusted_Network_CA.pem
Adding debian:Certum_Trusted_Network_CA_2.pem
Adding debian:Certum_Trusted_Root_CA.pem
Adding debian:CommScope_Public_Trust_ECC_Root-01.pem
Adding debian:CommScope_Public_Trust_ECC_Root-02.pem
Adding debian:CommScope_Public_Trust_RSA_Root-01.pem
Adding debian:CommScope_Public_Trust_RSA_Root-02.pem
Adding debian:Comodo_AAA_Services_root.pem
Adding debian:D-TRUST_BR_Root_CA_1_2020.pem
Adding debian:D-TRUST_EV_Root_CA_1_2020.pem
Adding debian:D-TRUST_Root_Class_3_CA_2_2009.pem
Adding debian:D-TRUST_Root_Class_3_CA_2_EV_2009.pem
Adding debian:DigiCert_Assured_ID_Root_CA.pem
Adding debian:DigiCert_Assured_ID_Root_G2.pem
Adding debian:DigiCert_Assured_ID_Root_G3.pem
Adding debian:DigiCert_Global_Root_CA.pem
Adding debian:DigiCert_Global_Root_G2.pem
Adding debian:DigiCert_Global_Root_G3.pem
Adding debian:DigiCert_High_Assurance_EV_Root_CA.pem
Adding debian:DigiCert_TLS_ECC_P384_Root_G5.pem
Adding debian:DigiCert_TLS_RSA4096_Root_G5.pem
Adding debian:DigiCert_Trusted_Root_G4.pem
Adding debian:Entrust.net_Premium_2048_Secure_Server_CA.pem
Adding debian:Entrust_Root_Certification_Authority.pem
Adding debian:Entrust_Root_Certification_Authority_-_EC1.pem
Adding debian:Entrust_Root_Certification_Authority_-_G2.pem
Adding debian:Entrust_Root_Certification_Authority_-_G4.pem
Adding debian:GDCA_TrustAUTH_R5_ROOT.pem
Adding debian:GLOBALTRUST_2020.pem
Adding debian:GTS_Root_R1.pem
Adding debian:GTS_Root_R2.pem
Adding debian:GTS_Root_R3.pem
Adding debian:GTS_Root_R4.pem
Adding debian:GlobalSign_ECC_Root_CA_-_R4.pem
Adding debian:GlobalSign_ECC_Root_CA_-_R5.pem
Adding debian:GlobalSign_Root_CA.pem
Adding debian:GlobalSign_Root_CA_-_R3.pem
Adding debian:GlobalSign_Root_CA_-_R6.pem
Adding debian:GlobalSign_Root_E46.pem
Adding debian:GlobalSign_Root_R46.pem
Adding debian:Go_Daddy_Class_2_CA.pem
Adding debian:Go_Daddy_Root_Certificate_Authority_-_G2.pem
Adding debian:HARICA_TLS_ECC_Root_CA_2021.pem
Adding debian:HARICA_TLS_RSA_Root_CA_2021.pem
Adding debian:Hellenic_Academic_and_Research_Institutions_ECC_RootCA_2015.pem
Adding debian:Hellenic_Academic_and_Research_Institutions_RootCA_2015.pem
Adding debian:HiPKI_Root_CA_-_G1.pem
Adding debian:Hongkong_Post_Root_CA_3.pem
Adding debian:ISRG_Root_X1.pem
Adding debian:ISRG_Root_X2.pem
Adding debian:IdenTrust_Commercial_Root_CA_1.pem
Adding debian:IdenTrust_Public_Sector_Root_CA_1.pem
Adding debian:Izenpe.com.pem
Adding debian:Microsec_e-Szigno_Root_CA_2009.pem
Adding debian:Microsoft_ECC_Root_Certificate_Authority_2017.pem
Adding debian:Microsoft_RSA_Root_Certificate_Authority_2017.pem
Adding debian:NAVER_Global_Root_Certification_Authority.pem
Adding debian:NetLock_Arany_=Class_Gold=_Főtanúsítvány.pem
Adding debian:OISTE_WISeKey_Global_Root_GB_CA.pem
Adding debian:OISTE_WISeKey_Global_Root_GC_CA.pem
Adding debian:QuoVadis_Root_CA_1_G3.pem
Adding debian:QuoVadis_Root_CA_2.pem
Adding debian:QuoVadis_Root_CA_2_G3.pem
Adding debian:QuoVadis_Root_CA_3.pem
Adding debian:QuoVadis_Root_CA_3_G3.pem
Adding debian:SSL.com_EV_Root_Certification_Authority_ECC.pem
Adding debian:SSL.com_EV_Root_Certification_Authority_RSA_R2.pem
Adding debian:SSL.com_Root_Certification_Authority_ECC.pem
Adding debian:SSL.com_Root_Certification_Authority_RSA.pem
Adding debian:SSL.com_TLS_ECC_Root_CA_2022.pem
Adding debian:SSL.com_TLS_RSA_Root_CA_2022.pem
Adding debian:SZAFIR_ROOT_CA2.pem
Adding debian:Sectigo_Public_Server_Authentication_Root_E46.pem
Adding debian:Sectigo_Public_Server_Authentication_Root_R46.pem
Adding debian:SecureSign_RootCA11.pem
Adding debian:SecureTrust_CA.pem
Adding debian:Secure_Global_CA.pem
Adding debian:Security_Communication_ECC_RootCA1.pem
Adding debian:Security_Communication_RootCA2.pem
Adding debian:Security_Communication_RootCA3.pem
Adding debian:Security_Communication_Root_CA.pem
Adding debian:Starfield_Class_2_CA.pem
Adding debian:Starfield_Root_Certificate_Authority_-_G2.pem
Adding debian:Starfield_Services_Root_Certificate_Authority_-_G2.pem
Adding debian:SwissSign_Gold_CA_-_G2.pem
Adding debian:SwissSign_Silver_CA_-_G2.pem
Adding debian:T-TeleSec_GlobalRoot_Class_2.pem
Adding debian:T-TeleSec_GlobalRoot_Class_3.pem
Adding debian:TUBITAK_Kamu_SM_SSL_Kok_Sertifikasi_-_Surum_1.pem
Adding debian:TWCA_Global_Root_CA.pem
Adding debian:TWCA_Root_Certification_Authority.pem
Adding debian:TeliaSonera_Root_CA_v1.pem
Adding debian:Telia_Root_CA_v2.pem
Adding debian:TrustAsia_Global_Root_CA_G3.pem
Adding debian:TrustAsia_Global_Root_CA_G4.pem
Adding debian:Trustwave_Global_Certification_Authority.pem
Adding debian:Trustwave_Global_ECC_P256_Certification_Authority.pem
Adding debian:Trustwave_Global_ECC_P384_Certification_Authority.pem
Adding debian:TunTrust_Root_CA.pem
Adding debian:UCA_Extended_Validation_Root.pem
Adding debian:UCA_Global_G2_Root.pem
Adding debian:USERTrust_ECC_Certification_Authority.pem
Adding debian:USERTrust_RSA_Certification_Authority.pem
Adding debian:XRamp_Global_CA_Root.pem
Adding debian:certSIGN_ROOT_CA.pem
Adding debian:certSIGN_Root_CA_G2.pem
Adding debian:e-Szigno_Root_CA_2017.pem
Adding debian:ePKI_Root_Certification_Authority.pem
Adding debian:emSign_ECC_Root_CA_-_C3.pem
Adding debian:emSign_ECC_Root_CA_-_G3.pem
Adding debian:emSign_Root_CA_-_C1.pem
Adding debian:emSign_Root_CA_-_G1.pem
Adding debian:vTrus_ECC_Root_CA.pem
Adding debian:vTrus_Root_CA.pem
done.
Setting up openjdk-21-jre:amd64 (21.0.7+6~us1-0ubuntu1~24.04) ...
Setting up pdfsam (4.3.4-1) ...
Setting up default-jre-headless (2:1.21-75+exp1) ...
Setting up default-jre (2:1.21-75+exp1) ...
依存関係
pdfsamをインストールすると、以下のような依存関係パッケージも自動的にインストールされる
- default-jre (Java Runtime Environment)
- 各種Javaライブラリ
- JavaFX関連ライブラリ
pdfsamの起動
コマンドラインから起動
# pdfsamの起動
pdfsam
基本的な使い方
1. PDF結合(Merge)
複数のPDFファイルを1つのファイルに結合
- 「Merge」タブを選択
- 「Add」ボタンで結合したいPDFファイルを追加
- ファイルの順序をドラッグ&ドロップで調整
- 出力先とファイル名を指定
- 「Run」ボタンで実行
2. PDF分割(Split)
PDFファイルを複数のファイルに分割
- 「Split」タブを選択
- 分割したいPDFファイルを選択
- 分割方法を選択
- Every page: 各ページを個別ファイルに
- Every n pages: n ページごとに分割
- At page numbers: 指定ページ番号で分割
- By size: ファイルサイズで分割
- 出力先を指定
- 「Run」ボタンで実行
3. ページ抽出(Extract)
特定のページのみを新しいPDFファイルとして抽出
- 「Extract」タブを選択
- 対象PDFファイルを選択
- 抽出したいページ範囲を指定(例:1-5, 10, 15-20)
- 出力設定を指定
- 「Run」ボタンで実行
4. ページ回転(Rotate)
PDFページの向きを変更
- 「Rotate」タブを選択
- 対象PDFファイルを選択
- 回転角度を選択(90°, 180°, 270°)
- 対象ページ範囲を指定
- 「Run」ボタンで実行
5. PDF混合(Mix)
2つのPDFファイルからページを交互に取得して結合
- 「Mix」タブを選択
- 2つのPDFファイルを選択
- 混合方法を設定
- 出力設定を指定
- 「Run」ボタンで実行
トラブルシューティング
文字化け問題
PDFのフォントや文字エンコーディングの問題
# 日本語フォントのインストール
sudo apt install fonts-noto-cjk fonts-noto-cjk-extra
GUI表示の問題
WSL2環境でのGUI表示トラブル
# DISPLAY環境変数の確認
echo $DISPLAY
# WSLgの再起動(Windows 11)
wsl --shutdown
コマンドライン版との比較
機能 | pdfsam (GUI) | pdfunite/pdfseparate |
---|---|---|
使いやすさ | ★★★★★ | ★★☆☆☆ |
機能の豊富さ | ★★★★★ | ★★☆☆☆ |
バッチ処理 | ★★★★☆ | ★★★★★ |
リソース使用量 | ★★☆☆☆ | ★★★★★ |
スクリプト対応 | ★☆☆☆☆ | ★★★★★ |
GUIツールの利点
- 直感的な操作
- プレビュー機能
- ドラッグ&ドロップ対応
- 複雑な操作も簡単
コマンドライン版の利点
- 軽量
- スクリプト組み込み可能
- 自動化対応
- リモート実行可能
参考
PDFsam 公式サイト
https://pdfsam.org/Ubuntu packages - pdfsam
https://packages.ubuntu.com/noble/text/pdfsamPDFsam GitHub
https://github.com/torakiki/pdfsamJava 11 Documentation
https://openjdk.java.net/projects/jdk/11/
おわりに
pdfunite
, pdfseparate
をCLIで使っていたが、pdfsum
というGUIツールもあることを初めて知った。
GUIだけあって使いやすいが、WSL2
だと設定がいろいろ必要なのでコマンドでよい気がする…。