首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将PDF杂志转换为可在电视上观看的双图像格式

将PDF杂志转换为可在电视上观看的双图像格式
EN

Stack Overflow用户
提问于 2012-04-06 21:23:38
回答 2查看 565关注 0票数 0

如何将PDF格式的杂志转换为在电视上可见?我的电视不能显示pdf,只能显示图像,而且由于它是宽屏显示,一次显示两个页面是有意义的。到目前为止,我使用了一个解决方案,这意味着以下步骤:

1.使用pdfnup ( pdfjam包的一部分)将杂志转换为双页格式(实际上是pdf文件,其中单页是原始文件的双页)

代码语言:javascript
复制
pdfnup inputfile.pdf --pages '{},1-' --outfile dualpagefile.pdf

由于参数--pages '{},1-',inputfile.pdf的第一页-杂志的封面-与一个空页相邻。

2.将双页版文档转换为电视上可见的图片

代码语言:javascript
复制
convert -density 150 dualpagefile.pdf imagefiles_%03d.jpg

此解决方案的问题在于,dualpagefile.pdf中的页面大小与原始inputfile.pdf中的页面大小完全相同,从而导致dualpagefile.pdf页面的顶部和底部出现白边距。

现在我正在寻找一个更简单,也许更快的解决方案,没有白色条纹。

我正在尝试首先将inputfile.pdf转换为图像文件,然后将它们连接到双页图像,但我不知道如何使用convert --adjoin命令来处理一系列图像,其中第一页保持原样,或者附加了一个空页。

这个问题有没有很好的解决方案:把pdf转换成一系列的双页图片,再加上一个单独的封面?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-07 01:21:23

我不是最擅长bash的,但这里有一些你可以尝试的东西。这需要对所有文件进行编号,从book-0.jpg、book-1.jpg一直到book-n.jpg。(这可以通过convert <filename>.pdf book.jpg实现)

代码语言:javascript
复制
#!/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 ..行,并根据需要添加密度和质量设置。

票数 2
EN

Stack Overflow用户

发布于 2012-04-07 05:23:52

基于Nunoxic的想法,最终的代码:

代码语言:javascript
复制
#!/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"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10044094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档