`

pdf文件批量转换成jpg文件

阅读更多

      最近由于课程安排,我们需要写一些文章。其中涉及讨论软件界面设计、JavaCC使用、解释器构造设计等等,我便有了发到blog的想法。由于文章又长又多,在向上发送和编辑时非常麻烦(其中涉及表格、图像、各种文字以及数学公式)。在这个时候我想到可以将文件导出成图片,这样虽然无法让浏览器检索到但是便于编辑、浏览和保存,当然它也在一定程度上起到了版权保护的作用(不过这个意义不大,譬如可以通过人肉啊、模式识别工具来把数据抠出来)。总之,我便遇到了一个新的问题:需要做一个方便转换的小工具。

      在这里,我通过组合Ubuntu上已有的各个小组件来实现这个工具。在前一个版本中主要是原理上面的实现,后面一个版本提高了速度(让数据交换在缓存中进行,第一个版本是通过文件交换的)以及一些注释达到软件工程的基本标准。

系统环境 写道
Ubuntu 8.04
GNOME 2.22.3
bash shell
 
工具运行环境 写道
第一版本:
Bash shell
pdftoppm
pnmtojpeg


第二版本:
在第一版本基础上添加
pdfinfo

以下是详细的shell代码,第二版本中有比较详细的注释。欢迎大家交流学习。

第一个版本:

#This shell is using for tanslate the pdf files to many jpg files.
#You can make your copyright more safely.
pdfFileName=${1%.pdf}
pdftoppm $pdfFileName.pdf $pdfFileName 
ppmFiles=`ls $pdfFileName-*.ppm`
jpgDir=$pdfFileName-pdf2jpg
mkdir $jpgDir
for pic in $ppmFiles
do
  jpgFile=${pic%ppm}jpg
  pnmtojpeg $pic > $jpgFile
  mv $jpgFile $jpgDir
done
rm -r $ppmFiles

 第二个版本:

#This shell is using for tanslate the pdf file to many jpg files.
#You can make your copyright more safely.

if [ $# != 1 ]
then
  echo 'pdftojpg version 0.01'
  echo 'Copyright 2001-2008 by QJGui'
  echo 'Usage: pdftojpg <PDF-file>'
  exit
fi

###############Get the basic information about the pdf file
#pdf File name
pdfFile=$1
if [  -e $pdfFile ]
then
  echo "Find File: $pdfFile"
else
  echo "Can not find the pdf File: $pdfFile"
  exit
fi
#pdf File name without the type(.pdf)
pdfFileName=${pdfFile%.pdf}
#Create the dictionary
jpgDir=$pdfFileName-pdf2jpg
if [ -e $jpgDir ]
then
  echo "The dictionary of $jpgDir exists. Removing it......"
  rm -r $jpgDir
fi
echo "Make a new dictionary $jpgDir......"
mkdir $jpgDir
#Get the total page of the pdf file
count=0
x=`pdfinfo $pdfFile | grep 'Pages:*' `
totPage=${x:6:${#x}}
echo "Total page number: $totPage"
#####################Get Basic Info End ###########

while [ $count -lt $totPage ] 
do
  count=`expr $count + 1`
  jpgFile=$pdfFileName-$count.jpg
  echo "Convert the page $count/$totPage......"
  pdftoppm -f $count -l $count $pdfFile | pnmtojpeg > ./$jpgDir/$jpgFile
done

echo "Success. Finish the job. Please see the $jpgDir "

  在编辑保存完后,建议大家将其添加到bin目录中以方便调用。

工具的进一步改进 写道
这个工具在很多方面还有改进的余地。
例如:
pdf文件信息截取方式
ppm(中间过渡文件)、jpg等图片还有调节的余地
 
  • bin.tar (10 KB)
  • 描述: 第二版本的详细源代码
  • 下载次数: 35
分享到:
评论
3 楼 qianjigui 2008-10-16  
<p>通过使用,我发现了一个问题,当文件页码过长时生成的jpg文件名称格式不一致,致使在对文件按名称排序后阅读时会出现乱序的情况。</p>
<p>现在通过在数字前面加0来补齐长度,使文件能够正常排序。</p>
<div class='quote_title'>修改点 写道</div>
<div class='quote_div'><span style='color: #ff0000;'>lOfTotPage=${#totPage}</span><br/>while [ $count -lt $totPage ] <br/>do<br/>     count=`expr $count + 1`<br/>       <span style='color: #ff0000;'>fNumber=$count<br/>  </span>     <span style='color: #ff0000;'>while [ ${#fNumber} -lt $lOfTotPage ]<br/>  </span>     <span style='color: #ff0000;'>do<br/>    </span>          <span style='color: #ff0000;'>fNumber="0$fNumber"<br/>  </span>     <span style='color: #ff0000;'>done</span><br/>       jpgFile=$pdfFileName-<span style='color: #ff0000;'>$fNumber</span>.jpg<br/>       echo "Convert the page $count/$totPage......"<br/>       pdftoppm -f $count -l $count $pdfFile | pnmtojpeg &gt; ./$jpgDir/$jpgFile<br/>done</div>
<p> 最新版本:</p>
<pre name='code' class='js'>#This shell is using for tanslate the pdf file to many jpg files.
#You can make your copyright more safely.
#Version 0.1.2
#Format the jpg files' name. The point is the length of number. To add more zero number in the front of the old number.
#Version 0.1.1
#Change the var of totPage 's getting value method, it use the sed to get the number
#Version 0.0.1
#The basic function

if [ $# != 1 ]
then
  echo 'pdftojpg version 0.1.2'
  echo 'Copyright 2001-2008 by QJGui(qianjigui@gmail.com)'
  echo 'Usage: pdftojpg &lt;PDF-file&gt;'
  exit
fi

###############Get the basic information about the pdf file
#pdf File name
pdfFile=$1
if [  -e $pdfFile ]
then
  echo "Find File: $pdfFile"
else
  echo "Can not find the pdf File: $pdfFile"
  exit
fi
#pdf File name without the type(.pdf)
pdfFileName=${pdfFile%.pdf}
#Create the dictionary
jpgDir=$pdfFileName-pdf2jpg
if [ -e $jpgDir ]
then
  echo "The dictionary of $jpgDir exists. Removing it......"
  rm -r $jpgDir
fi
echo "Make a new dictionary $jpgDir......"
mkdir $jpgDir
#Get the total page of the pdf file
count=0
totPage=`pdfinfo $pdfFile | grep 'Pages:*' `
totPage=`echo $totPage|sed -e's/Pages: *//g'`
echo "Total page number: $totPage"
#####################Get Basic Info End ###########

lOfTotPage=${#totPage}
while [ $count -lt $totPage ]
do
  count=`expr $count + 1`
  fNumber=$count
  while [ ${#fNumber} -lt $lOfTotPage ]
  do
    fNumber="0$fNumber"
  done
  jpgFile=$pdfFileName-$fNumber.jpg
  echo "Convert the page $count/$totPage......"
  pdftoppm -f $count -l $count $pdfFile | pnmtojpeg &gt; ./$jpgDir/$jpgFile
done

echo "Success. Finish the job. Please see the $jpgDir "</pre>
<p> </p>
<div class='quote_title'>小贴士 写道</div>
<div class='quote_div'>字符串长度计算方式:<br/>s='abcdefg'<br/>echo <span style='color: #ff00ff;'>${#s}</span></div>
<div class='quote_div'><strong>1.得到字符串长度</strong><br/>方法一:<br/>$echo ${#variable}<br/>code:<br/>
<div style='margin: 5px 20px 20px 0px;'>
<div class='smallfont' style='margin-bottom: 2px;'>shell 代码:</div>
<div class='alt2' style='border: 1px solid #c6c6c6; margin: 0px; padding: 4px; overflow: auto; width: 500px; height: 66px;'>
<div dir='ltr' style='text-align: left;'><!----><code><span style='color: #000000;'><span style=''><span style='color: #0000bb;'>zhyfly</span><span style='color: #007700;'>: ~$ </span><span style='color: #0000bb;'>x</span><span style='color: #007700;'>=</span></span><span style=''><span style='color: #dd0000;'>"this is a test" <br/></span><span style='color: #0000bb;'>zhyfly</span><span style='color: #007700;'>: ~$ echo ${</span></span><span style=''>#x} <br/></span><span style=''>14 <br/></span></span></code><!----></div>
</div>
</div>
方法二:<br/>$expr length "$variable"<br/>code:<br/>
<div style='margin: 5px 20px 20px 0px;'>
<div class='smallfont' style='margin-bottom: 2px;'>shell 代码:</div>
<div class='alt2' style='border: 1px solid #c6c6c6; margin: 0px; padding: 4px; overflow: auto; width: 500px; height: 66px;'>
<div dir='ltr' style='text-align: left;'><!----><code><span style='color: #000000;'><span style=''><span style='color: #0000bb;'>zhyfly</span><span style='color: #007700;'>: ~$ </span><span style='color: #0000bb;'>x</span><span style='color: #007700;'>=</span></span><span style=''><span style='color: #dd0000;'>"this is a test" <br/></span><span style='color: #0000bb;'>zhyfly</span><span style='color: #007700;'>: ~$ </span><span style='color: #0000bb;'>expr length </span></span><span style=''>"$x" <br/></span><span style=''>14 <br/></span></span></code><!----></div>
</div>
</div>
方法三:<br/>$expr "$variable" : ".*"<br/>code:<br/>
<div style='margin: 5px 20px 20px 0px;'>
<div class='smallfont' style='margin-bottom: 2px;'>shell 代码:</div>
<div class='alt2' style='border: 1px solid #c6c6c6; margin: 0px; padding: 4px; overflow: auto; width: 500px; height: 66px;'>
<div dir='ltr' style='text-align: left;'><!----><code><span style='color: #000000;'><span style=''><span style='color: #0000bb;'>zhyfly</span><span style='color: #007700;'>: ~$ </span><span style='color: #0000bb;'>x</span><span style='color: #007700;'>=</span></span><span style=''><span style='color: #dd0000;'>"this is a test" <br/></span><span style='color: #0000bb;'>zhyfly</span><span style='color: #007700;'>: ~$ </span><span style='color: #0000bb;'>expr </span><span style='color: #dd0000;'>"$x" </span><span style='color: #007700;'>: </span></span><span style=''>".*" <br/></span><span style=''>14 <br/></span></span></code><!----></div>
</div>
</div>
<strong>2.查找字符串子串位置</strong><br/>方法:<br/>$expr index "$variable" "substring"<br/>code:<br/>
<div style='margin: 5px 20px 20px 0px;'>
<div class='smallfont' style='margin-bottom: 2px;'>shell 代码:</div>
<div class='alt2' style='border: 1px solid #c6c6c6; margin: 0px; padding: 4px; overflow: auto; width: 500px; height: 98px;'>
<div dir='ltr' style='text-align: left;'><!----><code><span style='color: #000000;'><span style=''><span style='color: #0000bb;'>zhyfly</span><span style='color: #007700;'>: ~$ </span><span style='color: #0000bb;'>x</span><span style='color: #007700;'>=</span></span><span style=''><span style='color: #dd0000;'>"this is a test" <br/></span><span style='color: #0000bb;'>zhyfly</span><span style='color: #007700;'>: ~$ </span><span style='color: #0000bb;'>expr index </span></span><span style=''>"$x" "is" <br/></span><span style=''><span style='color: #0000bb;'>3 <br/>zhyfly</span><span style='color: #007700;'>: ~$ </span><span style='color: #0000bb;'>expr index </span></span><span style=''>"$x" "t" <br/></span><span style=''>1 <br/></span></span></code><!----></div>
</div>
</div>
(ps:如果出现重复,好象只能查到第一个,第二个,第三个,...,怎么查到呢???)<br/><strong>3.得到字符串子字符串</strong><br/>方法一:<br/>$echo ${variable:position:length}<br/>code:<br/>
<div style='margin: 5px 20px 20px 0px;'>
<div class='smallfont' style='margin-bottom: 2px;'>shell 代码:</div>
<div class='alt2' style='border: 1px solid #c6c6c6; margin: 0px; padding: 4px; overflow: auto; width: 500px; height: 66px;'>
<div dir='ltr' style='text-align: left;'><!----><code><span style='color: #000000;'><span style=''><span style='color: #0000bb;'>zhyfly</span><span style='color: #007700;'>: ~$ </span><span style='color: #0000bb;'>x</span><span style='color: #007700;'>=</span></span><span style=''><span style='color: #dd0000;'>"this is a test" <br/></span><span style='color: #0000bb;'>zhyfly</span><span style='color: #007700;'>: ~$ echo ${</span><span style='color: #0000bb;'>x</span><span style='color: #007700;'>:</span><span style='color: #0000bb;'>1</span><span style='color: #007700;'>:</span><span style='color: #0000bb;'>5</span></span><span style=''>} <br/></span><span style=''>his i <br/></span></span></code><!----></div>
</div>
</div>
方法二:<br/>$expr substr "$variable" startposition length<br/>code:<br/>
<div style='margin: 5px 20px 20px 0px;'>
<div class='smallfont' style='margin-bottom: 2px;'>shell 代码:</div>
<div class='alt2' style='border: 1px solid #c6c6c6; margin: 0px; padding: 4px; overflow: auto; width: 500px; height: 66px;'>
<div dir='ltr' style='text-align: left;'><!----><code><span style='color: #000000;'><span style=''><span style='color: #0000bb;'>zhyfly</span><span style='color: #007700;'>: ~$ </span><span style='color: #0000bb;'>x</span><span style='color: #007700;'>=</span></span><span style=''><span style='color: #dd0000;'>"this is a test" <br/></span><span style='color: #0000bb;'>zhyfly</span><span style='color: #007700;'>: ~$ </span><span style='color: #0000bb;'>expr substr </span><span style='color: #dd0000;'>"$x" </span></span><span style=''>1 5 <br/>this <br/></span></span></code><!----></div>
</div>
</div>
(ps:注意方法一和方法二中位置的区别!)<br/><strong>4.匹配正则表达式之匹配长度</strong><br/>方法:<br/>$expr match "$x" "string"<br/>code:<br/>
<div style='margin: 5px 20px 20px 0px;'>
<div class='smallfont' style='margin-bottom: 2px;'>shell 代码:</div>
<div class='alt2' style='border: 1px solid #c6c6c6; margin: 0px; padding: 4px; overflow: auto; width: 500px; height: 130px;'>
<div dir='ltr' style='text-align: left;'><!----><code><span style='color: #000000;'><span style=''><span style='color: #0000bb;'>zhyfly</span><span style='color: #007700;'>: ~$ </span><span style='color: #0000bb;'>x</span><span style='color: #007700;'>=</span></span><span style=''><span style='color: #dd0000;'>"this is a test" <br/></span><span style='color: #0000bb;'>zhyfly</span><span style='color: #007700;'>: ~$ </span><span style='color: #0000bb;'>expr match </span></span><span style=''>"$x" "his" <br/></span><span style=''><span style='color: #0000bb;'>0 <br/>zhyfly</span><span style='color: #007700;'>: ~$ </span><span style='color: #0000bb;'>expr match </span></span><span style=''>"$x" "this" <br/></span><span style=''><span style='color: #0000bb;'>4 <br/>zhyfly</span><span style='color: #007700;'>: ~$ </span><span style='color: #0000bb;'>expr match </span></span><span style=''>"$x" "." <br/></span><span style=''>1 <br/></span></span></code><!----></div>
</div>
</div>
<strong>5.字符串的掐头去尾</strong><br/>方法:<br/>$echo ${variable#startletter*endletter} # #表示掐头,因为键盘上#在$前面,一个表示最小匹配<br/>$echo ${variable##tartletter*endletter} 两个表示最大匹配<br/>$echo ${variable%startletter*endletter} # %表示去尾,因为键盘上%在$后面,一个表示最小匹配<br/>$echo ${variable%%startletter*endletter} 两个表示最大匹配<br/>code:<br/>
<div style='margin: 5px 20px 20px 0px;'>
<div class='smallfont' style='margin-bottom: 2px;'>shell 代码:</div>
<div class='alt2' style='border: 1px solid #c6c6c6; margin: 0px; padding: 4px; overflow: auto; width: 500px; height: 338px;'>
<div dir='ltr' style='text-align: left;'><!----><code><span style='color: #000000;'><span style=''><span style='color: #0000bb;'>zhyfly</span><span style='color: #007700;'>: ~$ </span><span style='color: #0000bb;'>x</span><span style='color: #007700;'>=</span></span><span style=''><span style='color: #dd0000;'>"this is a test" <br/></span><span style='color: #0000bb;'>zhyfly</span><span style='color: #007700;'>: ~$ echo ${</span><span style='color: #0000bb;'>x</span></span><span style=''>#t} <br/></span><span style=''><span style='color: #0000bb;'>his is a test <br/>zhyfly</span><span style='color: #007700;'>: ~$ echo ${</span><span style='color: #0000bb;'>x</span></span><span style=''>#t*h} <br/></span><span style=''><span style='color: #0000bb;'>is is a test <br/>zhyfly</span><span style='color: #007700;'>: ~$ echo ${</span><span style='color: #0000bb;'>x</span></span><span style=''>#t*s} <br/></span><span style=''><span style='color: #0000bb;'>is a test <br/><br/>zhyfly</span><span style='color: #007700;'>: ~$ echo ${</span><span style='color: #0000bb;'>x</span></span><span style=''>##t*s} <br/></span><span style=''><span style='color: #0000bb;'>t <br/><br/>zhyfly</span><span style='color: #007700;'>: ~$ echo ${</span><span style='color: #0000bb;'>x</span><span style='color: #007700;'>%</span><span style='color: #0000bb;'>t</span></span><span style=''>} <br/></span><span style=''><span style='color: #0000bb;'>this is a tes <br/>zhyfly</span><span style='color: #007700;'>: ~$ echo ${</span><span style='color: #0000bb;'>x</span><span style='color: #007700;'>%</span><span style='color: #0000bb;'>s</span><span style='color: #007700;'>*</span><span style='color: #0000bb;'>t</span></span><span style=''>} <br/></span><span style=''><span style='color: #0000bb;'>this is a te <br/>zhyfly</span><span style='color: #007700;'>: ~$ echo ${</span><span style='color: #0000bb;'>x</span><span style='color: #007700;'>%</span><span style='color: #0000bb;'>e</span><span style='color: #007700;'>*</span><span style='color: #0000bb;'>t</span></span><span style=''>} <br/></span><span style=''><span style='color: #0000bb;'>this is a t <br/><br/>zhyfly</span><span style='color: #007700;'>: ~$ echo ${</span><span style='color: #0000bb;'>x</span><span style='color: #007700;'>%%</span><span style='color: #0000bb;'>i</span><span style='color: #007700;'>*</span><span style='color: #0000bb;'>t</span></span><span style=''>} <br/></span><span style=''>th <br/></span></span></code><!----></div>
</div>
</div>
<br/><strong>6.字符(串)的替换<br/></strong>方法:<br/>$echo ${variable/oldletter/newletter} #替换一个<br/>$echo ${variable//oldletter/newletter} #替换所有<br/>code:<br/>
<div style='margin: 5px 20px 20px 0px;'>
<div class='smallfont' style='margin-bottom: 2px;'>shell 代码:</div>
<div class='alt2' style='border: 1px solid #c6c6c6; margin: 0px; padding: 4px; overflow: auto; width: 500px; height: 98px;'>
<div dir='ltr' style='text-align: left;'><!----><code><span style='color: #000000;'><span style=''><span style='color: #0000bb;'>zhyfly</span><span style='color: #007700;'>: ~$ </span><span style='color: #0000bb;'>x</span><span style='color: #007700;'>=</span></span><span style=''><span style='color: #dd0000;'>"this is a test" <br/></span><span style='color: #0000bb;'>zhyfly</span><span style='color: #007700;'>: ~$ echo ${</span><span style='color: #0000bb;'>x</span><span style='color: #007700;'>/</span><span style='color: #0000bb;'>i</span><span style='color: #007700;'>/</span><span style='color: #0000bb;'>m</span></span><span style=''>} <br/></span><span style=''><span style='color: #0000bb;'>thms is a test <br/>zhyfly</span><span style='color: #007700;'>: ~$ echo ${</span><span style='color: #0000bb;'>x</span></span><span style=''><span style='color: #ff8000;'>//i/m} <br/></span><span style='color: #0000bb;'>thms ms a test </span></span></span></code></div>
</div>
</div>
<span style='border: 1px dashed #cccccc; margin: 3px;'>
&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-4504000360271476";
/* 468x60, 创建于 08-7-11 */
google_ad_slot = "6163349851";
google_ad_width = 468;
google_ad_height = 60;
//--&gt;
&lt;/script&gt;
&lt;script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script&gt; window.google_render_ad()&lt;/script&gt;
</span> </div>
2 楼 qianjigui 2008-10-12  
<p>在这里简单普及一下,管道的概念以解释为什么改进版本的速度较快。</p>
<div class='quote_title'>管道相关的概念 写道</div>
<div class='quote_div'>    在linux中管道是通过指向同一个临时的VFS inode的两个file数据结构来实现的,此VFS inode指向<span style='text-decoration: underline;'><strong><span style='color: #ff0000;'>内存</span></strong></span>中的同一个物理页面。这就隐藏了读写管道和读写普通文件的差别。管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道;只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程);<br/>管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,单独构成一种文件系统,<span style='text-decoration: underline;'><strong><span style='color: #ff0000;'>并且只存在与内存中</span></strong></span>。数据的读出和写入:一个进程向管道中写的内容被管道另一端的进程读出。写入的内容每次都添加在管道缓冲区的末尾,并且每次都是从缓冲区的头部读出数据。</div>
<p>由于以上原因,利用管道通信的改进版本在很大程度上提高了程序的速度。</p>
<p>其实整个系统的运行机制是:首先将pdf文件转换成一堆ppm图片文件,再将每个ppm文件转换为jpg文件。原理实验版本中的实现方式是首先将pdf转换为ppm并以临时文件的形式存储下来,然后通过一个个读取文件的方式做第二步的ppm-&gt;jpg文件的转换。通过这个原理大量的数据交换都发生在硬盘上,硬盘的读写速度就成为了耗时的一个重点。为了改进效率,实际版本利用管道机制将数据交换移到了内存中这样就大大提高了效率。</p>
<p> </p>
1 楼 qianjigui 2008-10-11  
<p>发生了一点小改动,主要是修改了totPage的获取方法,用字符串匹配取代了以前绝对定位的处理方式。</p>
<pre name='code' class='js'>原来:
x=`pdfinfo $pdfFile | grep 'Pages:*' ` 
totPage=${x:6:${#x}}

现在:
totPage=`pdfinfo $pdfFile | grep 'Pages:*' `
totPage=`echo $totPage|sed -e's/Pages: *//g'`
</pre>
<p> 现在的程式:</p>
<pre name='code' class='js'>#This shell is using for tanslate the pdf file to many jpg files.
#You can make your copyright more safely.
#Version 0.1.1
#Change the var of totPage 's getting value method, it use the sed to get the number
#Version 0.0.1
#The basic function

if [ $# != 1 ]
then
  echo 'pdftojpg version 0.1.1'
  echo 'Copyright 2001-2008 by QJGui(qianjigui@gmail.com)'
  echo 'Usage: pdftojpg &lt;PDF-file&gt;'
  exit
fi

###############Get the basic information about the pdf file
#pdf File name
pdfFile=$1
if [  -e $pdfFile ]
then
  echo "Find File: $pdfFile"
else
  echo "Can not find the pdf File: $pdfFile"
  exit
fi
#pdf File name without the type(.pdf)
pdfFileName=${pdfFile%.pdf}
#Create the dictionary
jpgDir=$pdfFileName-pdf2jpg
if [ -e $jpgDir ]
then
  echo "The dictionary of $jpgDir exists. Removing it......"
  rm -r $jpgDir
fi
echo "Make a new dictionary $jpgDir......"
mkdir $jpgDir
#Get the total page of the pdf file
count=0
totPage=`pdfinfo $pdfFile | grep 'Pages:*' `
totPage=`echo $totPage|sed -e's/Pages: *//g'`
echo "Total page number: $totPage"
#####################Get Basic Info End ###########

while [ $count -lt $totPage ]
do
  count=`expr $count + 1`
  jpgFile=$pdfFileName-$count.jpg
  echo "Convert the page $count/$totPage......"
  pdftoppm -f $count -l $count $pdfFile | pnmtojpeg &gt; ./$jpgDir/$jpgFile
done

echo "Success. Finish the job. Please see the $jpgDir "</pre>
 

相关推荐

    jpg转换成pdf文件在线转换

    jpg转换成pdf文件在线转换的优点是快速方便、操作简洁、支持批量文件转换、转换速度快等。这种转换方法非常适合需要频繁转换图片文件的用户,如设计师、摄影师、印刷工等。同时,jpg转换成pdf文件在线转换也适合需要...

    python pyqt5 PDF转jpg程序,实现PDF批量转成jpg

    在这个场景中,我们利用Python和PyQT5来创建一个实用程序,将PDF文件批量转换为JPEG图片格式。这个工具对于那些需要快速、大量地提取PDF中的图像或者进行无损分享PDF内容的用户非常有用。 首先,我们需要了解Python...

    pdf格式转换成jpg

    PDF 格式转换成 JPG 是一种非常常见的文件格式转换操作,许多用户和企业需要将 PDF 文件转换成 JPG 格式,以满足不同的需求和应用场景。为了满足这种需求,迅捷 PDF 转换器提供了一个批量支持的 PDF 到 JPG 格式转换...

    批量jpg转换成pdf

    使用该转换器进行批量转换的步骤如下: 1. 下载并安装:首先,从官方网站或可信赖的下载源获取“批量jpg转换成pdf.exe”程序,并按照提示进行安装。 2. 添加文件:启动软件后,点击界面中的“添加文件”或“添加...

    PDF转换图片JPG2

    可以把pdf文件转换成jpg, gif,bmp,tiff,png 的图片格式. 可以把jpg, gif,bmp,tiff,png 的图片格式转换成pdf文件. pdf to jpg的主要特性: 1.把pdf文件转换成jpg、bmp、tiff、gif、png等等图片格式. 2.把jpg、bmp、...

    Pdf批量转JPG_PDF批量转JPG_

    - 开始批量转换,软件会自动处理每个PDF文件并将每一页转换为JPG。 2. **其他工具**:除了PdfTools,还有许多免费或付费的第三方软件,如Smallpdf、ILovePDF等在线工具,以及Adobe Acrobat Pro、PDFtoImage等桌面...

    pdf批量转jpg+注册码

    它允许用户一次性将多个PDF文件转换成JPG图像,极大地提高了工作效率。 批量转换的优势在于,相比于逐个处理PDF文件,它节省了大量时间。例如,当你需要将一份包含多页的报告或书籍的PDF分享到社交媒体,或者上传到...

    Delphi jpg转换成pdf文件demo

    【Delphi jpg转换成pdf文件demo】是一个使用Delphi编程语言编写的示例程序,它演示了如何将JPEG图像文件转换为PDF文档。这个程序的核心是图像处理和PDF生成技术,对于那些想要在Delphi环境下处理图像并创建PDF文档的...

    pdf文件转换图片jpg3

    可以把pdf文件转换成jpg, gif,bmp,tiff,png 的图片格式. 可以把jpg, gif,bmp,tiff,png 的图片格式转换成pdf文件. pdf to jpg的主要特性: 1.把pdf文件转换成jpg、bmp、tiff、gif、png等等图片格式. 2.把jpg、bmp、...

    怎样把PDF转换成JPG

    该软件的一个显著优点是支持批量转换,这意味着你可以一次性处理多个PDF文件,大大提高了工作效率。 转换过程通常分为以下几个步骤: 1. **安装软件**:首先,你需要下载并安装"怎样把PDF转换成JPG.exe"这个程序。...

    pdf转换成jpg转换器

    2. **批量转换**:用户可以一次性上传多个PDF文件,批量进行转换操作,极大地提高了工作效率,特别是在处理大量文件时。 3. **保持原貌**:在转换过程中,工具会尽可能地保留PDF文档的原始布局、字体和图像质量,...

    XPS转JPG批量转换器XPS转JPG批量转换器

    【XPS转JPG批量转换器】是一款专为用户设计的高效工具,旨在将XPS格式的文件批量转换为常见的JPG图像文件。XPS(XML Paper Specification)是由微软公司推出的一种文档格式,类似于Adobe的PDF,用于存储和打印电子...

    (PDF批量转JPG)PDF TO JPG 1.1

    1. **批量转换**:此工具的一大亮点是支持批量处理,用户可以一次性上传多个PDF文件,节省了逐个转换的时间。这对于需要处理大量PDF文档的工作环境尤其有用,比如设计师、教师或文档管理员。 2. **保留质量**:在...

    PDG文件批量转换PDF

    功能: 将图像文件(包括TIFF、JPG、PNG、GIF、BMP、JPEG 2000)合并、转换成PDF文件的软件: 对有损/无损压缩的JPEG 2000、有损压缩的JPG文件及采用JPEG/OJPEG算法压缩的TIFF文件,直接将原始数据流嵌入PDF文件,...

    将PDF文件转换为JPG图片的小工具

    4. **批量转换**:如果你需要转换多个PDF文件,可以一次选择所有文件,工具会一次性处理它们。这在处理大量文件时非常有用。 5. **开始转换**:确认所有设置无误后,点击“转换”或“开始”按钮,软件会开始处理PDF...

    pdf文件拆分成JPG图片

    5. **批处理功能**:高级工具往往支持批量转换,一次可以处理多个PDF文件,大大提高了工作效率。 ### 应用场景 1. **在线发布**:将PDF转换为JPG后,更适合在网页上展示,用户无需下载PDF即可预览内容。 2. **社交...

    pdf格式转换成jpg格式

    然而,在某些情况下,我们可能需要将PDF文件转换为图像格式,例如JPG(Joint Photographic Experts Group),以便于在网页上快速加载、发送电子邮件或者在不支持PDF查看的应用程序中使用。本篇文章将详细介绍如何将...

    PDF批量转JPG工具

    3. **批量转换**:批量转换功能允许用户一次处理多个PDF文件,无需逐个操作,极大地提高了工作效率。这对于处理大量PDF文档的用户来说,如设计师、教育工作者或办公室职员,是一个非常实用的功能。 4. **转换过程**...

    JPG批量转PDF

    8. **兼容性和效率**:批量转换能确保所有JPG文件以统一的格式保存,提高了跨平台和设备的兼容性,同时也节省了时间和精力。 总的来说,"JPG批量转PDF"涉及了图像处理、文件格式转换、软件应用等多个IT基础知识点,...

    PDF文件怎么转换成excel表格.docx

    PDF 转换成 Excel 转换器还具有许多特色,例如批量 PDF 转换技术,支持同步转换成为不同的文件格式。此外,还具有深度 PDF 文件内容识别技术,全面提升内容识别率,转换质量优异。 如果在转换过程中遇到问题,不要...

Global site tag (gtag.js) - Google Analytics