WindowsにはPDFファイルをマージするためのソフトウェアがたくさんありますが、Ubuntuでも同じことができますか?
WindowsにはPDFファイルをマージするためのソフトウェアがたくさんありますが、Ubuntuでも同じことができますか?
回答:
シンプルなGUIを備えたツールが必要な場合は、pdfshufflerを試してください。これにより、PDFのマージ、およびページの再配置と削除が可能になります。バッチ処理や複雑なタスクの場合、pdftkはもちろんより強力です。
pdfshuffler
14.04 amd64 でも正常に動作することを確認できます。
2つのpdfファイルをマージするには、file1.pdf
およびfile2.pdf
:
pdftk file1.pdf file2.pdf cat output mergedfile.pdf
cat
とoutput
可変引数の入力引数の後に出力引数が続くという珍しい使い方があります。
Ghostscriptは、PostScriptおよびPDFファイルを他の形式で表示または印刷したり、それらのファイルを他の形式に変換したりできるパッケージ(Ubuntuでデフォルトで使用可能)です。
Ghostscriptを使用してPDFファイルを結合するには、次のように入力します。
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dAutoRotatePages=/None -sOutputFile=finished.pdf file1.pdf file2.pdf
コマンドの簡単な説明を次に示します。
gs starts the Ghostscript program.
-dBATCH once Ghostscript processes the PDF files, it should exit.
If you don't include this option, Ghostscript will just keep running.
-dNOPAUSE forces Ghostscript to process each page without pausing for user interaction.
-q stops Ghostscript from displaying messages while it works
-sDEVICE=pdfwrite
tells Ghostscript to use its built-in PDF writer to process the files.
-sOutputFile=finished.pdf
tells Ghostscript to save the combined PDF file with the specified name.
-dAutoRotatePages=/None
Acrobat Distiller parameter AutoRotatePages controls the automatic orientation selection algorithm: For instance: -dAutoRotatePages=/None or /All or /PageByPage.
入力ファイルはPDFファイルである必要さえありません。PostScriptファイルまたはEPSファイル、または3つの任意の組み合わせを使用することもできます。
Ghostscriptでできることはたくさんあります。詳細については、ドキュメントをご覧ください。
pdftk
0m0.484s、gs
1m32.898s(ほぼ200倍遅い)gs
でしたが、ファイルは約21%小さくなりました。
file1.pdf file2.pdf
とfile*.pdf
gs
は、pdftk
永遠に実行される「非準拠」PDFをいくつか扱っていました。
file*.pdf
とfile1.pdf file2.pdf
コマンドに引数を渡す前に。
また、pdfuniteを使用してpdfドキュメントをマージします。
pdfunite in-1.pdf in-2.pdf in-n.pdf out.pdf
out.pdf
は警告なしに上書きされるためpdfunite *.pdf
、期待どおりに動作しません。
cp
です。最後の引数も警告なしに上書きされます。これはちょうど(私のような)ユーザーを急ぐためである-私は問題のファイルのバックアップを持っていたラッキーだった...
非常に優れたソリューションはPDFChainです。GUIはPDFTKのフロントエンドであり、PDFファイルにマージ、分割、または背景を追加することもできます。
apt
も結果は得られませんでした:/
別のアプローチは、この投稿で説明されているようにラテックスを使用することです(pdflatexがインストールされていることを前提としたルートアクセスなし):https : //tex.stackexchange.com/questions/8662/merge-two-pdf-files-output-by-ラテックス
これは、前述のツールもルート権限も持っていないが、pdflatexを持っている場合に便利です。
以下のtexコードをコピーして、マージfile1.pdf
しfile2.pdf
ます。というファイルを作成して、次のように配置しますoutput.tex
。
\documentclass{article}
\usepackage{pdfpages}
\begin{document}
\includepdf[pages=-]{file1}
\includepdf[pages=-]{file2}
\end{document}
コンパイルするには、次を使用します。 pdflatex output.tex
マージされたファイルはという名前になりoutput.pdf
ます。
pdfseparateを使用して、大きなpdfファイルから特定のページを抽出します。
pdfseparate -f 156 -l 157 input.pdf output_%d.pdf
pdfseparate -f 1 -l 2 input.pdf output_%d.pdf
そしてその後、私はすべてコマンドでそれらに参加します:
pdfunite $(ls -v output_*.pdf | tr '\n' ' ') out$(date +%Y-%m-%d_%H_%M_%S ).pdf
これが参加します:
output_1.pdf output_2.pdf output_156.pdf output_157.pdf
に:
out2014-12-14_23_25_36.pdf
対処する簡単な方法があるかもしれません... :-)
pdfunite output_*.pdf out$(date +%Y-%m-%d-%H_%M_%S).pdf
ありls -v
ますが、の順序がありません。明白で簡単な修正方法は、ファイルに名前を付けて、ファイルを希望する順序で自然にソートすることです。どうしても必要なls -v
場合は、少なくともへのパイプを失う可能性がありますが、tr
ここでは何も行いません。
pdfsam使用http://www.pdfsam.org/を、それは分割とマージpdfファイルのために非常に良いことです
私のアプローチは次のとおりです。
結果は次のとおりです。
#!/bin/sh
CLEANED_FILE_PATHS=$(echo $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS | sed 's,.pdf /home/,.pdf\\n/home/,g')
echo $CLEANED_FILE_PATHS | bash -c 'IFS=$'"'"'\n'"'"' read -d "" -ra x;pdfunite "${x[@]}" merged.pdf'
Justeはこのスクリプトを貼り付けます
/home/your_username/.local/share/nautilus/scripts
「merge_pdfs.sh」(たとえば)という名前を付けます。次に、実行可能にします(merge_pdfs.shを右クリック->権限タブ->「プログラムとしてのファイルの実行を許可」にチェックマークを付けます)
PDFファイルをマージするには、それらを選択する必要があります->右クリック->スクリプト-> merge_pdfs.sh。同じディレクトリに「merged.pdf」ファイルが作成されます。
それが役に立てば幸い!