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

news/2024/10/23 6:33:11/

本文章向大家介绍将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.htmlcb.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;}
}


http://www.ppmy.cn/news/659662.html

相关文章

横向的Excel输出为pdf自动分成两页怎么办?不分页,铺满整张纸的方法来了

我们工作中有时候会需要把Excel转换成pdf&#xff0c;一般我们用WPS的“输出为pdf”功能就可以转了。但是有些横向的Excel转换的时候&#xff0c;会自动分成两页&#xff0c;这并不是我们想要的效果。怎么才能不分成两页呢&#xff1f; 首先我们有一个Excel&#xff1a; 使用…

如何利用计算机打印较大的字,如何在一张A4纸上打印一个超大字?

是不是很想打印超大字?要是硬件上去了,就什么话也不用说了,可惜的是,手中只有一个A4的打印机。怎么办?还是有办法的,用Microsoft Office 2003就可以。 我由于学校工作的原因,打印机只能打A4的纸,有时又想打超大字,不得不用现有的条件来做。于是就从Microsoft Office 2…

如何在一张A4纸上合并打印多张发票

在处理日常文档时&#xff0c;我们经常需要合并多个PDF文件&#xff0c;然后在1张A4纸上多页打印。最常见的就是打印发票 现在发票大都是电子发票&#xff0c;但是报销时一般要求一张A4纸打印两张发票&#xff0c;以便节省纸张。但每次操作都很麻烦&#xff0c;这次推荐大家一…

打印小册子(一张A4纸4页内容)步骤分享

1、打开word格式说明书&#xff0c;另存为pdf格式&#xff08;如果文件是pdf格式忽略步骤1&#xff09; 2、用wps打开pdf文件 3、打印→打印方式&#xff1a;小册子→小册子子集&#xff1a;仅正面→装订&#xff1a;左→打印 4、等待打印→打印完成后→放纸&#xff08;打印出…

如何将多个条码标签打印在一张A4纸上

在平常制作标签的时候&#xff0c;一般都是将标签打印在专门的标签纸上。但是有的时候需要把设计好的标签打印在一张A4纸上&#xff0c;这时需要怎么做呢&#xff1f;今天就演示一下如何将多个条码标签打印在一张A4纸上。 首先打开条码标签打印软件&#xff0c;新建一个标签文…

如何把A3纸复印成A4纸

把A3纸复印成A4纸&#xff0c;利用夏普的复印机&#xff0c;调整固定倍率为70% 首先你把A4的纸横着放到纸盒&#xff0c;同时按住"副本尺寸"和"纸盒"键 等灯都在闪的时候选择副本尺寸为"A4R"&#xff0c;纸盒灯在纸盒处闪 然后按下"启动&…

一面A4纸打印多页pdf的方法

一面A4纸打印多页pdf的方法(例如&#xff1a;打印pdf版的PPT&#xff09;) 只针对Adobe Acrobat Pro这个软件&#xff0c;操作顺序为&#xff1a; 文件——打印——勾选双面打印&#xff0c;选择沿短边翻转——方向&#xff1a;横向——属性——布局——组合详情&#xff1a;9…

iReport —— A4打印,只占纸张的一半,如何解决

有没有遇到过这样的情况&#xff1a;用 iReport 生成的 pdf 文件在预览是好像挺好&#xff0c;但打印时却只占了A4 纸的一半&#xff08;或许有其他情况&#xff0c;反正是不能占满纸张&#xff09;&#xff1f; 新建报表时&#xff0c;默认的就是A4尺寸。 经过反复试验&#x…