用java生成包含图片的PDF

iText包是java生成PDF文件的一个挺好用的工具。

今天初次尝试使用,将代码记录一下。

	public void createPdf(String path){
		File file=new File(path);  
		String files[];  
		ArrayList<String> pictures = new ArrayList<String>();
		files=file.list();  
		for(int i=0;i<files.length;i++)
			if(files[i].matches(".+\\.(jpg|gif|png)"))
				pictures.add(files[i]);
		Document doc=new Document();
		try {
			PdfWriter.getInstance(doc, new FileOutputStream("D:"+File.separator+"root"
		           +File.separator+"picture.pdf"));
			doc.open();
            float width=doc.getPageSize().getWidth()-75;//取页面宽度并减去页边距
			for(String temp:pictures){
				Image tempImage=Image.getInstance(path+File.separator+temp);
				if(tempImage.getWidth()>width){
					tempImage.scalePercent(width/tempImage.getWidth()*100);//用页面显示宽度除以图片宽度算出缩小的合适百分比
				}				
				doc.add(tempImage);
			}
			doc.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (DocumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
	}
从指定的文件夹中取出所有iText可处理的图片文件,然后依次放入PDF中。第一次生成时发现有一个图片过大,超出PDF边界,后来发现有方法可以取出PDF的页面宽度以及图片宽度,用页面宽度减去页边距,然后再根据图片宽度算出应该缩放的百分比,有一个问题要注意,就是缩放后图片宽度不变,只是在PDF中显示的宽度变了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

热血大婶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值