如何使用Java缩小PDF文档中的内容?

注:iText开发环境设置,下载iText7 jar(社区版:http://github.com/itext/itext7/releases/tag/7.0.4 ) ,创建一个工程:java_itext,并将下载的itext7 jar包和slf4j( http://www.slf4j.org/download.html )工具包添加到构建路径中。项目结构如下图所示 -

以下是使用Java缩小PDF文档中的内容的程序。

package com.yiibai;

import com.itextpdf.kernel.geom.AffineTransform;

import com.itextpdf.kernel.geom.Rectangle;

import com.itextpdf.kernel.pdf.PdfDocument;

import com.itextpdf.kernel.pdf.PdfPage;

import com.itextpdf.kernel.pdf.PdfReader;

import com.itextpdf.kernel.pdf.PdfWriter;

import com.itextpdf.kernel.pdf.canvas.PdfCanvas;

import com.itextpdf.kernel.pdf.xobject.PdfFormXObject;

import com.itextpdf.layout.Document;

public class ShrinkPDF {

public static void main(String args[]) throws Exception {

// Creating a PdfWriter object

String dest = "shrinking.pdf";

PdfWriter writer = new PdfWriter(dest);

// Creating a PdfReader

String src = "imagsWithPDF.pdf";

PdfReader reader = new PdfReader(src);

// Creating a PdfDocument objects

PdfDocument destpdf = new PdfDocument(writer);

PdfDocument srcPdf = new PdfDocument(reader);

// Opening a page from the existing PDF

PdfPage origPage = srcPdf.getPage(1);

// Getting the page size

Rectangle orig = origPage.getPageSizeWithRotation();

// Adding a page to destination Pdf

PdfPage page = destpdf.addNewPage();

// Scaling the image in a Pdf page

AffineTransform transformationMatrix = AffineTransform.getScaleInstance(

page.getPageSize().getWidth() / orig.getWidth() / 2,

page.getPageSize().getHeight() / orig.getHeight() / 2);

// Shrink original page content using transformation matrix

PdfCanvas canvas = new PdfCanvas(page);

canvas.concatMatrix(transformationMatrix);

// Add the object to the canvas

PdfFormXObject pageCopy = origPage.copyAsFormXObject(destpdf);

canvas.addXObject(pageCopy, 0, 0);

// Creating a Document object

Document doc = new Document(destpdf);

// Closing the document

doc.close();

System.out.println("Shrink PDF successfully...");

}

}

执行上面示例代码,得到以下结果 -

Shrink PDF successfully...

输出文件内容如下所示 -

¥ 我要打赏

纠错/补充

收藏

下一篇:哥,这回真没有了

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

java缩小pdf,如何使用Java缩小PDF文档中的内容?相关推荐

  1. java文档打印_java 如何读取文档中的内容 并打印

    java 如何读取文档中的内容 并打印 关注:230  答案:2  信息版本:手机版 电脑版 解决时间 2021-01-25 16:31 提问者非莪莫属 2021-01-25 04:31 java 如 ...

  2. word中添加java代码怎么写_Java如何在word文档中写一个段落?

    在Java编程中,如何在word文档中写一个段落? 注意:需要访问网址:http://poi.apache.org/download.html , 下载一个Apache POI软件包.这里下载最新版本 ...

  3. 使用java将多种类型的文件如Word、PDF、JPG汇总到一个文档中(Word或者PDF)

    // 以下为两个文件的代码: 可直接下载运行,下载页面:(http://download.csdn.net/detail/lmf462696585/8800097)执行文件是WordUtil4.jav ...

  4. java 替换word文档中的内容

    文章内容来源: https://www.jb51.net/article/250141.htm#_label1 在maven项目的pom.xml里引入 <dependencies> < ...

  5. java dom xpath_Java:在org.w3c.dom文档中获取元素的xpath

    我写了我想要达到的目标.但是,getElementIdx()函数不会返回正确的计数. getPrevIoUsSibling()存在问题,但我不知道为什么. public static String g ...

  6. java excel 模板 替换_替换WORD/EXCEL模板文档中的内容并下载java

    /** 案件模板下载 * **/ public static voidgenerateFile(HttpServletRequest request,HttpServletResponse respo ...

  7. java word上传下载_JSP实现word文档的上传,在线预览,下载

    前两天帮同学实现在线预览word文档中的内容,而且需要提供可以下载的链接!在网上找了好久,都没有什么可行的方法,只得用最笨的方法来实现了.希望得到各位大神的指教.下面我就具体谈谈自己的实现过程,总结一 ...

  8. 如何翻译英文PDF?如何翻译英文word文档?

    如何翻译英文PDF?如何翻译英文word文档? 无论是写论文的学生,还是查阅需求文档的程序猿,都会接触各种英文的文档.大部分人的英语水平,在面对满是专业词汇的文献时想必都是一败涂地.现在市面上的一些翻 ...

  9. java中用流提取文档中的文字,语言实现从word文档中提取文本

    word中提取中文 打开Word,CTRL+F打开"查找替换"对话框. 点击下方的"查找替换"对话框的"高级"按钮. 点击"特殊字 ...

  10. Java 读取Word文档中的文本内容

    这篇文章将介绍如何使用Free Spire.Doc for Java组件在Java应用程序中读取Word文档的文本内容.Free Spire.Doc for Java提供了两种方法来读取Word文档中 ...

最新文章

  1. RDKit | 可视化官能团, 分子聚类, 相似图, 化合物高亮和骨架网络
  2. 网易伏羲三项研究入选CVPR:AI感知表情能力将达到人类水平
  3. Linux下php5.3编译oracle客户端
  4. golang 判断文件或文件夹是否存在
  5. python多态的概念_python中的多态
  6. tf.reshape的-1的错误理解
  7. avenue在科研文章中的意思
  8. Redis 新特性篇:100% 掌握多线程模型
  9. 后通用芯片时代: 专用芯片兴起背后的经济学
  10. 第三回 Bootstrap3.x 起步
  11. sqlyog怎么查找表_sqlyog各种搜索方法
  12. java 社招 简历_招聘java简历模板
  13. STM32-实现us延时
  14. vulnhub靶机渗透 | It's October
  15. Ubuntu系统安装及常用软件设置
  16. gh-ost修改数据量较大表结构实战
  17. React Native UI渲染流程分析(Android)
  18. 【微信小程序】Java岗面试12家大厂成功跳槽
  19. 市审计局充分利用大数据助力扶贫和“十个全覆盖”审计工作
  20. Category的用法

热门文章

  1. iOS底层:PAGEZERO的作用
  2. 2、开关灯、选项卡、隔行换色
  3. JDBC中的Statement和PreparedStatement的差别
  4. Codevs No.1553 互斥的数
  5. 【Andrioid】在Gradle编译时生成一个不同的版本号,动态设置应用程序标题,应用程序图标,更换常数...
  6. 【C语言】03-第一个C程序代码分析
  7. 图像处理:同态滤波(Homomorphic filter)
  8. 王者荣耀服务器维护七月三号,王者荣耀3月23日更新维护公告 自然之灵拼图活动开启...
  9. typescript面试题_vue 248+个知识点(面试题)为你保驾护航
  10. Android 动态调试和JEB启动调试命令