一个基于HTML5转PDF的电子书阅读插件有些html5项目一般使用pdf.js插件来阅读PDF文件,但是阅读体验不理想,参考手机电子书阅读器,使用国外链接描述http://fliphtml5.com制作电子书实例。完整代码已经上传到git,搜索标题即可。该插件功能强大,缩略图,鼠标翻页,放大缩小,部分配置代码config.js如下varbookConfig={appName:'flippdf',totalPageCount:0,largePageWidth:1080,largePageHeight:第1440章bookDescription:“”,ButtonsBar:“”,ShareButton:“”,ThumbnailsButton:“”,ThumbnailsButtonVisible:“隐藏”,ZoomButton:“”,ZoomButtonVisible:“否”,FlashDisplaySettings:“”,MainBgConfig:“”,bgBeginColor:“#cccccc",bgEndColor:"#eeeeee",bgMRotation:45,pageBackgroundColor:"#FFFFFF",flipshortcutbutton:"隐藏",BookMargins:"",topMargin:10,bottomMargin:10,leftMargin:10,rightMargin:10,HTMLControlSettings:"",linkconfig:"",LinkDownColor:"#808080",LinkAlpha:0.5,OpenWindow:"_Blank",BookMarkButtonVisible:'False',productName:'演示创建者FlipPDF',homePage:'http://www.html5.com/',isFlipPdf:"False",TableOfContentButtonVisible:"False",searchTextJS:'javascript/search_config.js',searchPositionJS:undefined};java部分插件显示实际使用的jpg图片可以从pdf文档生成,其中涉及普通图片和缩略图的生成具体如下maven导入org.apache.pdfboxfontbox2.0.9org.apache.pdfboxpdfbox2.0.9核心程序importjava.awt.Graphics2D;importjava.awt.RenderingHints;importjava.awt.geom.AffineTransform;导入java.awt.image.BufferedImage;导入java.awt.image.ColorModel;导入java.awt.image.WritableRaster;导入java.io.File;导入java.io.IOException;导入javax.imageio.ImageIO;导入org.apache.pdfbox.pdmodel.PDDocument;导入org.apache.pdfbox.rendering.PDFRenderer;公共类pdftest{publicstaticvoidmain(String[]args){StringfileAddress="D:\\data";Stringfilename="qqq";字符串类型e="jpg";pdf2png(文件地址、文件名、类型);}/***转换所有pdf*@paramfileAddress文件地址*@paramfilenamePDF文件名*@paramtype图片类型*/publicstaticvoidpdf2png(StringfileAddress,Stringfilename,Stringtype){//加载带图片的pdf并自定义图片格式大小Filefile=newFile(fileAddress+"\\"+filename+.pdf");尝试{PDDocumentdoc=PDDocument.load(file);PDFRenderer渲染器=newPDFRenderer(doc);intpageCount=doc.getNumberOfPages();对于(inti=0;isy){sx=sy;targetW=(int)(sx*source.getWidth());}else{sy=sx;targetH=(int)(sy*source.getHeight());}if(type==BufferedImage.TYPE_CUSTOM){ColorModelcm=source.getColorModel();WritableRaster栅格=cm.createCompatibleWritableRaster(targetW,targetH);booleanalphaPremultiplied=cm.isAlphaPremultiplied();target=newBufferedImage(cm,raster,alphaPremultiplied,null);}else{target=newBufferedImage(targetW,targetH,type);}Graphics2Dg=target.createGraphics();g.setRenderingHint(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY);g.drawRenderedImage(来源,AffineTransform.getScaleInstance(sx,sy));g.处置();返回目标;}}