怎样使用PDFBox中的PDFToImage?急啊

熊爸爸的爸爸 2009-02-02 01:04:47
本人一新手,初次在Netbeans6.5中使用PDFBox
在PDFBox的官网上看到它的特性里有这么一条:“Create images from PDF pages”,看了http://incubator.apache.org/pdfbox/commandlineutilities/PDFToImage.html一点都没弄清楚应该怎样使用这一特性

请各位高手帮帮忙,小弟现在很急!
万分感谢!
...全文
587 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuda00001 2011-07-20
  • 打赏
  • 举报
回复
pdfbox0.8以后的版本(包含0.8)才有PDFImageWriter这个类,以前版本是不包含这个类的
chrhust 2009-06-23
  • 打赏
  • 举报
回复
楼上的我的pdfbox怎么没有PDFImageWriter这个类啊
shui0521 2009-02-23
  • 打赏
  • 举报
回复
package org.apache.pdfbox;

import javax.imageio.ImageIO;

import org.apache.pdfbox.exceptions.InvalidPasswordException;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.util.PDFImageWriter;

public class PDFToImage{

private static final String PASSWORD = "-password";
private static final String START_PAGE = "-startPage";
private static final String END_PAGE = "-endPage";
private static final String IMAGE_TYPE = "-imageType";
private static final String OUTPUT_PREFIX = "-outputPrefix";

private PDFToImage(){

}

public static void main( String[] args ) throws Exception {
String password = "";
String pdfFile = "c:/HelloWorld.pdf";
String outputPrefix = "d:/1/";
String outputfilename=null;
String imageType = "jpg";
int startPage = 1;
int endPage = Integer.MAX_VALUE;
for( int i=0; i<args.length; i++ ){
if( args[i].equals( PASSWORD ) ){
i++;
if( i >= args.length ){
usage();
}
password = args[i];
}else if( args[i].equals( START_PAGE ) ){
i++;
if( i >= args.length ){
usage();
}
startPage = Integer.parseInt( args[i] );
} else if( args[i].equals( END_PAGE ) ){
i++;
if( i >= args.length ){
usage();
}
endPage = Integer.parseInt( args[i] );
}else if( args[i].equals( IMAGE_TYPE ) ){
i++;
imageType = args[i];
}else if( args[i].equals( OUTPUT_PREFIX ) ){
i++;
outputPrefix = args[i];
}else{
if( pdfFile == null ){
pdfFile = args[i];
}
}
}

if( pdfFile == null ) {
usage();
}else{
if(outputPrefix == null){
outputPrefix = pdfFile.substring( 0, pdfFile.lastIndexOf( '.' ));
}
outputfilename = pdfFile.substring( pdfFile.lastIndexOf("/"),pdfFile.lastIndexOf( '.' ));
PDDocument document = null;
try{
document = PDDocument.load( pdfFile );
//document.print();
if( document.isEncrypted() ){
try{
document.decrypt( password );
}catch( InvalidPasswordException e ){
if( args.length == 4 ){//they supplied the wrong password
System.err.println( "Error: The supplied password is incorrect." );
System.exit( 2 );
}else{
//they didn't suppply a password and the default of "" was wrong.
System.err.println( "Error: The document is encrypted." );
usage();
}
}
}

//Make the call
PDFImageWriter W = new PDFImageWriter();
W.WriteImage(document, imageType, password, startPage, endPage, outputPrefix,outputfilename);
} catch(Exception e){
System.err.println( e);
}finally{
if( document != null ){
document.close();
}
}
}
}

/**
* This will print the usage requirements and exit.
*/
private static void usage() {
System.err.println( "Usage: java org.apache.pdfbox.PDFToImage [OPTIONS] <PDF file>\n" +
" -password <password> Password to decrypt document\n" +
" -imageType <image type> (" + getImageFormats() + ")\n" +
" -outputPrefix <output prefix> Filename prefix for image files\n" +
" -startPage <number> The first page to start extraction(1 based)\n" +
" -endPage <number> The last page to extract(inclusive)\n" +
" <PDF file> The PDF document to use\n"
);
System.exit( 1 );
}

private static String getImageFormats(){
StringBuffer retval = new StringBuffer();
String[] formats = ImageIO.getReaderFormatNames();
for( int i=0; i<formats.length; i++ ){
retval.append( formats[i] );
if( i+1<formats.length ){
retval.append( "," );
}
}
return retval.toString();
}
}
熊爸爸的爸爸 2009-02-09
  • 打赏
  • 举报
回复
高手帮忙看看啊!急啊
complier199 2009-02-03
  • 打赏
  • 举报
回复
不懂,up
noenoughmemory 2009-02-03
  • 打赏
  • 举报
回复
不懂,up
一洽客服系统 2009-02-03
  • 打赏
  • 举报
回复
路过~没写过这个东西:(
熊爸爸的爸爸 2009-02-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 froole 的回复:]
直接向classpath种设定PDFBox的lib就可以了。
[/Quote]
谢谢这位大哥,已经添加了lib

小弟只是不知道用什么样的代码实现这一功能
海诗美妆 2009-02-02
  • 打赏
  • 举报
回复
直接向classpath种设定PDFBox的lib就可以了。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧