私はこれをたくさん探していましたが、解決策を見つけることができませんでした。
任意の用紙フォーマット(A4など)でPDFを生成し、そのページをできるだけ多くの画像のコピーで埋めるにはどうすればよいですか?
ImageMagick、Poppler、Ghostscriptなどのプログラムを使用したCLIソリューションを探しています。
私の使用例:オフィスのゲストWi-Fiのパスワードを変更し、ニースA4 PDFタイトなグリッドで構成され、各セルにネットワークSSIDとWPAキーが含まれています。印刷するために、訪問するゲストに配られる断片にカットされます。
それを行う方法を見つけることができず、MSWordを使用してページに小さな画像を手動で貼り付けることにしました。
編集:これらの小さな画像がどのように見えたか。テキストエディタに入力して、テキストのスクリーンショットを作成しました。
このパスワードは3か月に1回変更するので、自動化されたスクリプト可能なソリューションが必要です。完璧である必要はありませんが、迅速である必要があります。
質問に投稿したJPGファイルの例 の画像のサイズなどに基づいて、右クリックして名前を付けて画像を保存...を選択すると、保存されたファイル画像属性リストとして。 。 。
- 寸法:
2850 x 1237
- 幅:
2850 pixels
- 高さ:
1237 pixels
以下に概説する ImageMagick を使用して、以下のメソッド/コマンドを使用して、これらの画像のうち24個を1つの画像ファイルに圧縮することができました。期待される結果を得るために元の画像の「x」個をコピーするためのロジックは提供しませんが、そのようなタスクは簡単であり、その部分のヘルプや例は必要ないと思います。お知らせ下さい。
リマインダー:ファイルをコピーまたは削除するためのロジックを提供していません。これらのタイプの操作が必要であると述べ、それを解決できると想定していますが、それ以外の場合はお知らせください。
SSIDおよびWPAキーイメージファイル の複数のコピーを/folder
のどこかに作成して、最初のImageMagickコマンドを実行する合計6つのイメージを作成する必要があります。
これらの6つの画像ファイルが/folder
にある場合、それらに対してこのコマンドを実行して、私の例ではout.jpg
という名前の新しい出力ファイルを作成します。
convert /folder/*.jpg -gravity center -append /output/out.jpg
ここで、6つの元の「SSIDおよびWPAキーイメージ」ファイルを削除してから、新しいout.jpg
を/folder
にコピーし、/folder
に合計4つのファイルができるまでコピーして、次のコマンドを実行します。
convert /folder/*.jpg -gravity center +append /output/nout.jpg
次に、#3でコピーした/output
内のこれらのファイルの4つのコピーを削除し、上記のコマンドで作成された新しく作成されたnout.jpg
に対してこのコマンドを実行して、ページa4形式のファイルを取得できます。
convert /output/nout.jpg -page a4 /output/print.jpg
次に、print.jpg
画像ファイルを印刷し、見栄えが良いことを確認し、切り取り、パスアウトします。
注:開始画像の画像の寸法などが異なり、最終結果で適切にスケールアウトされない場合は、各ステップごとに「x」個の画像を試してみてください。参照され、それらの画像に対してコマンドを実行したら、相関する出力ファイルを開き、各ステップに必要な「x」番号を把握できるかどうかを確認します。これをテストするのはタイムリーかもしれませんが、理解するのと同じくらい簡単なもう1つの簡単な作業です。
Pandocと出力PDFの助けを借りてそれを行うことができます。
画像をMSWord文書に貼り付ける代わりに、この行を呼び出すテキストファイルに貼り付けることもできますmy-markdown.md
:
![](https://i.stack.imgur.com/l9TLd.jpg) { width="33%" }
これにより、1行に3つの画像が配置されます。もちろん、幅を任意の値に変更できます。私の推測では、width="33%"
を使用する場合は60の同一行で、width="24%"
を使用する場合は112の同一行で実行できます(1行あたり4画像) 。
'任意の用紙フォーマット(たとえばA4)'が必要だったので、ほぼA4の例を示します。次のようにPDFに変換する必要があります:
pandoc \
-o images.pdf \
-V geometry="paperwidth=580pt, paperheight=848pt, margin=10pt" \
images.md
スクリーンショット:
現在利用可能なWindowsシステムがないため、Powershell
またはcmd.exe
で確認およびテストできるので、Linux/macOSBashの例を示します。
for i in {1..112} ; do
echo '![](https://i.stack.imgur.com/l9TLd.jpg){ width="24%" }' ;
done \
| \
pandoc -V geometry="paperwidth=580pt, paperheight=848pt, margin=10pt" \
-o images2.pdf \
-
上記の最初の部分は同じ行を112回<stdout>
に書き込みますが、Markdownファイルを書き出さずにさらに処理するためにPandocの<stdin>
にパイプします。