android iText图片转pdf

在使用iText将图片转换为PDF时,如果图片过长,一页无法完全显示,可以自定义Rectangle尺寸或调整图片比例来适应页面。通过设置新的Rectangle对象并创建Document,确保图片不会被截断。此外,还可以选择切割图片并逐个添加到文档中。
摘要由CSDN通过智能技术生成

项目场景:

使用iText进行图片转pdf时,图片过长,一页放不下导致多余部分失去


问题描述

图片过长,一页放不下导致多余部分失去

解决方案:

提示:这里填写该问题的具体解决方案:

1、iText创建Document时,默认使用A4大小
2、创建Rectangle对象,自定义长宽,放入Document对象中即可
3、PS:也可以选择切割图片,然后调用document.add(img);方法

Rectangle rect = new Rectangle(100.0,200.0);
Documentdocument = new Document(rect);

方法:

 public String image2Pdf(String path){
        String dest = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "/xxx.pdf";
        Image img = null;
        try {
            img = Image.getInstance(path);
        } catch (BadElementException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        float A4Width = PageSize.A4.getWidth();
        float A4Height = PageSize.A4.getHeight();
        float scale = A4Width/img.getWidth()*100;
        if (A4Height*100/scale>img.getHeight()){   
            document = new Document();
        }else{
            double i1 = (img.getHeight()*1.0 / 100.0) * scale + 20;
            Rectangle rect = new Rectangle(A4Width,(float) i1);
            document = new Document(rect);
        }
        /*当这个 PdfWriter 被添加到 PdfDocument 后,所有添加到 Document 的内容将会写入到与文件或网络关联的输出流中。*/
        PdfWriter pdfWriter = null;
        try {
            pdfWriter = PdfWriter.getInstance(document, new FileOutputStream(dest));
        } catch (DocumentException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        document.open();
        document.newPage();
        img.scalePercent(scale);
        img.setAlignment(Image.MIDDLE);

        try {
            document.add(img);
        } catch (DocumentException e) {
            e.printStackTrace();
        }
        document.close();
        pdfWriter.close();
        return dest;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值