画像ファイルを PDF ファイルに変換して結合する方法はありますか?

画像ファイルを PDF ファイルに変換して結合する方法はありますか?

ディレクトリには約 190 個の画像ファイル (png および jpg) があります。詳細については、各画像のサイズは 2500 x 3072 ピクセルで、約 500 KB です。

ImageMagik のコマンドを使用してconvert、それらを PDF ファイルに変換して結合します。

convert * my.pdf

80MB の PDF ファイルを作成するには、約 10GB (ピーク時) と 4 時間かかります。 /tmp最初は、私の(実際にはパーティション)に十分な空き容量がなかったため、実行に失敗しました/。次に、十分な空き容量のある外付け HDD を見つけて、それを指すように環境変数を設定する必要がありTMPDIR、その後成功しました。

外付け HDD を必要とせずに、画像を PDF ファイルに変換して結合するソフトウェアは他に何かあるのでしょうかconvert。それとも、このような変換と結合には、ディスクから同様の量の一時領域が必要になるのが一般的でしょうか。

画像ファイルの詳細情報、例えば、

$ exiftool 1.jpg 
ExifTool Version Number         : 8.60
File Name                       : 1.jpg
Directory                       : .
File Size                       : 453 kB
File Modification Date/Time     : 2014:11:15 13:41:55-05:00
File Permissions                : rwxrwx---
File Type                       : JPEG
MIME Type                       : image/jpeg
JFIF Version                    : 1.01
Resolution Unit                 : None
X Resolution                    : 1
Y Resolution                    : 1
Image Width                     : 2500
Image Height                    : 3072
Encoding Process                : Baseline DCT, Huffman coding
Bits Per Sample                 : 8
Color Components                : 3
Y Cb Cr Sub Sampling            : YCbCr4:2:0 (2 2)
Image Size                      : 2500x3072

$ exiftool 2.png 
ExifTool Version Number         : 8.60
File Name                       : 2.png
Directory                       : .
File Size                       : 310 kB
File Modification Date/Time     : 2014:11:15 13:50:58-05:00
File Permissions                : rwxrwx---
File Type                       : PNG
MIME Type                       : image/png
Image Width                     : 2500
Image Height                    : 3072
Bit Depth                       : 8
Color Type                      : Grayscale
Compression                     : Deflate/Inflate
Filter                          : Adaptive
Interlace                       : Noninterlaced
Pixels Per Unit X               : 11929
Pixels Per Unit Y               : 11929
Pixel Units                     : Meters
Image Size                      : 2500x3072

答え1

可能性は低いですが、私は を使用しますpdflatex。次のスタイルのファイル (スクリプトなど) を作成します。

\documentclass{report}
\usepackage{graphicx}
\begin{document}
\includegraphics[width=0.95\textwidth]{img000}\par
\includegraphics[width=0.95\textwidth]{img001}\par

[...]

\includegraphics[width=0.95\textwidth]{img200}\par
\end{document}

そして、 で実行しますpdflatex file。 構成は高速です (LaTeX を知っていれば、画像の形状や位置を変更したり、キャプションを追加したりすることも簡単にできます)。

問題は、ファイルが通常非常に大きいことです。私は500K以上のjpg 200枚でテストしました。私のi5/16Gのramでは実行に約7秒かかり、800MBのPDFが生成されました。私は次の方法でサイズを小さくしようとしています。

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=lowres.pdf file.pdf 

...8 分間実行されていますが、RAM はそれほど使用されていません。圧縮についてはコメントできません。なぜなら、gs私よりも賢い人が、私が同じ画像を 200 回使用していたことを発見し、それを 50k の PDF に圧縮したからです...これは明らかに本物ではありません。

答え2

残念ながらconvertjpg元の画像の品質の低下を最小限に抑えるために、事前に画像を変更するにはimg2pdf、次のコマンドを使用します。

img2pdf機能のみを使用した、より短いワンライナーソリューション

  1. PDFを作成

    img2pdf *.jp* --output combined.pdf

  2. 出力PDFをOCR処理する

    ocrmypdf combined.pdf combined_ocr.pdf

これは、より多くのコマンドとより多くのツールが必要な元のコマンドです。

1)解像度や品質を損なうことなく、pdfすべての画像からファイルを作成します。jpg

ls -1 ./*jpg | xargs -L1 -I {} img2pdf {} -o {}.pdf

2)pdfページを 1 つに連結するには、次のようにします。

pdftk *.pdf cat output combined.pdf

3) 最後に、PDF のスキャン品質を変更せずに検索できるように、OCR テキスト レイヤーを追加します。

pypdfocr combined.pdf  

関連情報