0

PDF形式の雑誌をテレビで見られるように変換するにはどうすればよいですか? 私のテレビは pdf を表示できず、画像のみを表示できます。また、ワイド スクリーン ディスプレイであるため、一度に 2 ページを表示することは理にかなっています。これまで、次の手順を意味するソリューションを使用しました。

1. pdfnup (pdfjam パッケージの一部) を使用して、雑誌を 2 ページ形式 (実際には 1 ページが元のファイルの 2 ページである pdf ファイル) に変換します。

pdfnup inputfile.pdf --pages '{},1-' --outfile dualpagefile.pdf

パラメータにより--pages '{},1-'、inputfile.pdf の最初のページ (雑誌の表紙) に空のページが追加されます。

2.、デュアルページ バージョンのドキュメントをテレビで表示可能な画像に変換します。

convert -density 150 dualpagefile.pdf imagefiles_%03d.jpg

このソリューションの問題は、dualpagefile.pdf のページサイズが元の inputfile.pdf とまったく同じであるため、dualpagefile.pdf ページの上下に白い余白が生じることです。

今、私は白い縞模様のな​​い、よりシンプルでおそらくより速い解決策を探しています.

最初にinputfile.pdfを画像ファイルに変換してから、それらを2ページの画像に隣接させようとしていますconvert --adjoinが、最初のページがそのまま残っている、または隣接している一連の画像に対してコマンドを使用する方法がわかりません空のページで。

この問題に対する洗練された解決策はありますか: PDF を一連のデュアルページ画像に変換し、個々の表紙ページを使用することはできますか?

4

2 に答える 2

2

私はbashが得意ではありませんが、試してみることができるものがあります。これには、book-0.jpg、book-1.jpg から book-n.jpg までのすべてのファイルに番号を付ける必要があります。(これは によって達成できますconvert <filename>.pdf book.jpg)

#!/bin/bash
one=1
num_files=$(ls *.jpg | wc -l)
for ((i=0; i<=$(($num_files-$one)); i+=2))
do
j=$(($i+$one)) 
montage -adjoin  book-$i.jpg book-$j.jpg Page_$i.jpg
done
echo "Process Finished"

もっと良い方法があると確信していますが、この方法でもうまくいきます。

その行を編集してmontage -adjoin ..、必要に応じて密度、品質設定を追加できます。

于 2012-04-06T17:21:22.693 に答える
0

Nunoxic のアイデアに基づいて、最終的なコードは次のようになります。

#!/bin/bash
# usage: pdf2tv inputfile.pdf
FILENAME=$1                         # the inputfile
FILENAME_NOEXT=${FILENAME/\/*\//};      # the inputfile without extension
FILENAME_NOEXT=${FILENAME_NOEXT/.*/};   # the inputfile without extension and additional points in the name
FILENAME_NOWSP=${FILENAME_NOEXT// /_}; # substitute spaces with underscores
TVRESOL='1920x1080'                    # TV resolution

mkdir $FILENAME_NOWSP                  # make a directory for the generated images
cd $FILENAME_NOWSP

convert -density 150 -resize ${TVRESOL} "../${FILENAME}" ${FILENAME_NOWSP}.jpg    # convert pdf's pages to jpg
num_files=$(ls ${FILENAME_NOWSP}*.jpg | wc -l)          # number of jpgs    
mv ${FILENAME_NOWSP}-0.jpg Page_001.jpg                    # the cover page
counter=2
for ((i=1; i<=$(($num_files-1)); i+=2))
do
  j=$(($i+1)) 
  outfilename=Page_`printf %03d.jpg $counter`
  # appending 2 adjacent pages into a dual page image
  convert +append ${FILENAME_NOWSP}-$i.jpg ${FILENAME_NOWSP}-$j.jpg -resize '100%x100%' $outfilename
  rm ${FILENAME_NOWSP}-{$i,$j}.jpg  # removing the temporary single images
  ((counter+=1))
done
echo "Process Finished"
于 2012-04-06T21:23:52.493 に答える