- Web Engineer
- アウトバウンド営業
- Webエンジニア(経験者)
- Other occupations (18)
- Development
- Business
はじめに
PDFの一部のページのみを分割したい時や、複数のPDFファイルを結合したい時がしばしば訪れるものです。
PDFを分割
WebブラウザやPDF Readerで分割する
FirefoxなどのWebブラウザやPDF Readerで対象のPDFファイルを開き、プリントメニューからSave to PDF
などに出力先を設定し、必要なページを指定して出力することで分割できます。
pdftkを利用して分割する
CLIで操作したい場合、多くのOS/Distributionで利用できるpdftk
もしくはpdftk-java
が便利です。
インストール方法
Ubuntu/Debian の場合
sudo apt install pdftk
Fedora の場合
sudo dnf install pdftk
分割コマンドの例
input.pdf
ファイルのうち以下のページのみを分割したい場合:
- 1~4ページ目で奇数ページのみ
- 5ページ目
- 8~10ページ目
pdftk input.pdf cat 1-4odd 5 8-10 output split.pdf
PDFを結合
pdftkを利用して結合する
分割と同じく、pdftk
を利用して複数のPDFを結合できます。
pdftk input1.pdf input2.pdf input3.pdf cat output merged.pdf
Webアプリケーションで結合する
モバイル環境などPDF操作ツールのインストールが容易でない環境や、自分の端末でないためインストールが難しい場合があります。そんな時はブラウザ上で動作するWebアプリケーションを用意しておくと便利です。
以下では、クライアント側でPDFファイルを結合する静的Webアプリケーションの作成方法を紹介します。このアプリをGitHub Pages、Cloudflare Pagesなどの無料のホスティングサービスにデプロイすることで、インストール不要で利用できるようになります。
pdf-libを利用してPDFファイルを結合する
JavaScript/TypeScriptのnpmパッケージpdf-libを用いて、ブラウザ上でPDFファイルを結合できます。
import { PDFDocument } from "pdf-lib";
const mergePdfs = async (files: File[]) => {
// 新しいPDFドキュメントを作成
const mergedPdf = await PDFDocument.create();
// 各PDFファイルを処理
for (const file of files) {
const fileBytes = await file.arrayBuffer();
const pdfDoc = await PDFDocument.load(fileBytes);
// 現在のPDFからすべてのページをコピー
const copiedPages = await mergedPdf.copyPages(
pdfDoc,
pdfDoc.getPageIndices()
);
// コピーした各ページをマージ先のPDFに追加
copiedPages.forEach((page) => mergedPdf.addPage(page));
}
// マージしたPDFをBlobとして返す
const mergedPdfBytes = await mergedPdf.save();
return new Blob([mergedPdfBytes], { type: "application/pdf" });
};
このコードに好みのUIを組み合わせて、PDFファイルを受け取り、Blob
を作成、<a>タグでダウンロードさせてあげると静的Webアプリの完成です。
以下に実装例を公開しておりますので、参考にしてください。
…
記事の続きは下のURLをクリック!
https://rightcode.co.jp/blogs/51400
エンジニア積極採用中です!
現在、WEBエンジニア、モバイルエンジニア、デザイナー、営業などを積極採用中です!
採用ページはこちら:https://rightcode.co.jp/recruit
社員の声や社風などを知りたい方はこちら:https://rightcode.co.jp/blogs?category=life
社長と一杯飲みながらお話しませんか?(転職者向け)
特設ページはこちら: https://rightcode.co.jp/gohan-sake-president-talk
もっとワクワクしたいあなたへ
現在、ライトコードでは「WEBエンジニア」「モバイルエンジニア」「ゲームエンジニア」、「デザイナー」「WEBディレクター」「営業」などを積極採用中です!
ライトコードは技術力に定評のある受託開発をメインにしているIT企業です。
有名WEBサービスやアプリの受託開発などの企画、開発案件が目白押しの状況です。
- もっと大きなことに挑戦したい!
- エンジニアとしてもっと成長したい!
- モダンな技術に触れたい!
現状に満足していない方は、まずは、エンジニアとしても第一線を走り続ける弊社代表と気軽にお話してみませんか?
ネット上では、ちょっとユルそうな会社に感じると思いますが(笑)、
実は技術力に定評があり、沢山の実績を残している会社ということをお伝えしたいと思っております。
- ライトコードの魅力を知っていただきたい!
- 社風や文化なども知っていただきたい!
- 技術に対して熱意のある方に入社していただきたい!
一度、【Wantedly内の弊社ページ】や【コーポレートサイト】をのぞいてみてください。