itextPdf~将PDF页面大小转为A4格式

本文章向大家介绍将PDF页面大小转为A4格式---itextPdf实现,主要包括将PDF页面大小转为A4格式---itextPdf实现使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

将PDF页面大小转为A4格式(itextPdf实现)

1. 引入相关jar包

<!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf -->
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.5.13.2</version>
        </dependency>

2. 实现代码

package com.fan.study.common.util;

import com.itextpdf.text.Document;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfImportedPage;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfWriter;

import java.awt.geom.AffineTransform;
import java.io.FileOutputStream;

public class PdfConvertA4Utils {
    /**
     * @Param source 源文件
     * @Param target 转换后文件
     * @Description 将PDF转为A4格式
     * @Date: 2021/4/25
     **/
    private static void convert(String source, String target) {
        try {
            PdfReader pdfReader = new PdfReader(source);
            Document doc = new Document();
            PdfWriter writer = PdfWriter.getInstance(doc, new FileOutputStream(target));
            doc.open();
            PdfContentByte cb = writer.getDirectContent();
            for(int i = 1; i <= pdfReader.getNumberOfPages(); i++){
                PdfImportedPage page = writer.getImportedPage(pdfReader, i);
                float width = page.getWidth();
                float height = page.getHeight();
                if(height > width) {
                    //横向
                    doc.setPageSize(PageSize.A4);
                    doc.newPage();
                    //计算比例
                    float widthScale = getWidthScale(width);
                    float heightScale = getHeightScale(height);
                    //addTemplate方法中有6个float类型的参数,是通过二维图像仿射变换得到的
                    //cb.addTemplate(page, new AffineTransform(widthScale, 0, 0, heightScale,0,0));
                    //二维图像仿射变换:https://www.cnblogs.com/v2m_/archive/2013/05/09/3070187.html
                    cb.addTemplate(page, widthScale, 0, 0, heightScale,0,0);
                } else {
                    //纵向
                    doc.setPageSize(new com.itextpdf.text.Rectangle(PageSize.A4.getHeight(), PageSize.A4.getWidth()));
                    doc.newPage();
                    float widthScale = getWidthScale(height);
                    float heightScale = getHeightScale(width);
                    cb.addTemplate(page, widthScale, 0, 0, heightScale,0,0);
                }
            }
            doc.close();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
    private static float getWidthScale(float width) {
        float scale = PageSize.A4.getWidth() / width;
        return scale;
    }

    private static float getHeightScale(float height) {
        float scale = PageSize.A4.getHeight() / height;
        return scale;
    }
}

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
iText库中,你可以使用`com.itextpdf.text.Image`类来控制图片的缩放。以下是一个将图片缩放成A4大小的示例代码: ```java import com.itextpdf.text.Document; import com.itextpdf.text.Image; import com.itextpdf.text.PageSize; import com.itextpdf.text.Rectangle; import com.itextpdf.text.pdf.PdfWriter; import java.io.FileOutputStream; public class ScaleImageExample { public static void main(String[] args) throws Exception { // 创建文档对象 Document document = new Document(PageSize.A4); // 创建PdfWriter对象,并将文档对象与输出流关联 PdfWriter.getInstance(document, new FileOutputStream("path/to/output.pdf")); // 打开文档 document.open(); // 读取图片 Image image = Image.getInstance("path/to/image.jpg"); // 计算缩放比例 float widthScale = PageSize.A4.getWidth() / image.getWidth(); float heightScale = PageSize.A4.getHeight() / image.getHeight(); float scale = Math.min(widthScale, heightScale); // 缩放图片 image.scalePercent(scale * 100); // 将图片居中显示在A4纸上 Rectangle rect = document.getPageSize(); image.setAbsolutePosition((rect.getWidth() - image.getScaledWidth()) / 2, (rect.getHeight() - image.getScaledHeight()) / 2); // 添加图片到文档 document.add(image); // 关闭文档 document.close(); } } ``` 上面的代码将读取一张图片,将其缩放成A4纸的大小,并将缩放后的图片居中显示在A4纸上,最后将其添加到PDF文档中。你可以根据自己的需求修改代码中的参数。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值