Java实现将彩色PDF转为灰度PDF的示例代码

目录
  • 配置程序环境
  • 转彩色PDF为灰度
    • 实现代码(Java)
  • 补充

本文以Java代码为例介绍如何实现将彩色PDF文件转为灰度(黑白)的PDF文件,即:将PDF文档里面的彩色图片或者文字等通过调用PdfGrayConverter.toGrayPdf()方法转为文档页面为灰色调、无彩色效果的文档,可实现缩小文档大小的目的。下面是程序运行环境及代码示例。

配置程序环境

IntelliJ IDEA

Spire.PDF for Java 5.3.1

PDF文档

关于如何引入jar文件:

1.通过Maven仓库下载,如下配置Pom.xml:

<repositories>
    <repository>
        <id>com.e-iceblue</id>
            <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
        </repository>
    </repositories>
<dependencies>
    <dependency>
        <groupId> e-iceblue </groupId>
        <artifactId>spire.pdf</artifactId>
        <version>5.3.1</version>
    </dependency>
</dependencies>

2.手动添加jar

下载jar包到本地,然后解压,找到lib文件夹下的Spire.Pdf.jar。然后在IDEA中打开如下界面,将本地路径下的jar文件添加至Java程序。

转彩色PDF为灰度

这里转换只需用到以下两个步骤:

  • 使用 PdfGrayConverter类加载PDF文件。
  • 调用 PdfGrayConverter.toGrayPdf() 方法将 PDF 转换为灰度。

实现代码(Java)

import com.spire.pdf.conversion.*;

public class ToGrayPDF {
    public static void main(String[] args) {
        //创建一个PdfGrayConverter实例并加载PDF文档
        PdfGrayConverter converter = new PdfGrayConverter("Booklet.pdf");

        //将彩色PDF转换为灰度
        converter.toGrayPdf("ToGray.pdf");
        converter.dispose();
    }
}

转换结果:

补充

Java不仅能将彩色PDF转换为灰度的PDF,还能实现将彩色图像转换为灰度图像,下面是实现步骤

黑白图像只有黑白两种颜色,所以用灰度值0-255来表示黑白的比例。

在彩色图像中有RGB三种颜色的分量来表示颜色,当R=G=B时,就显示出灰色。

由RGB来求得灰度值的方法有好几种,可以取RGB的比例3:6:1,这样算出的灰度应用到图像中就能生成不错的黑白图像。

下面放出2张效果图,分别是原图和转换的黑白图:

根据上面的RGB比例公式得出一个计算灰度值得函数

   //计算像素点的灰度
    public static int getGray(Color pixel) {
        return (pixel.getRed()*30+pixel.getGreen()*60+pixel.getBlue()*10)/100;
    }

接下来就是读取一个图片到BufferedImage然后遍历面一个像素点的颜色,用getGray算出灰度值再赋值成为该点新的颜色值(R=G=B=算出的灰度值)

代码如下

    JFileChooser jChooser = new JFileChooser();
    //设置默认的打开目录,如果不设的话按照window的默认目录(我的文档)
    jChooser.setCurrentDirectory(new File("f:/"));
    //打开一个对话框
    int index = jChooser.showDialog(null, "打开文件");
    if (index == JFileChooser.APPROVE_OPTION) {
     path=jChooser.getSelectedFile().getAbsolutePath();
    }
    Image img = new ImageIcon(path).getImage();
    BufferedImage bfi = new BufferedImage(img.getWidth(null),img.getHeight(null),BufferedImage.TYPE_INT_RGB);
    bfi.getGraphics().drawImage(img, 0, 0,null);
    for(int y=0;y<bfi.getHeight();y++)
        for(int x=0;x<bfi.getWidth();x++) {
            Color pixel = new Color(bfi.getRGB(x, y));
            bfi.setRGB(x, y,new Color(getGray(pixel),getGray(pixel),getGray(pixel)).getRGB());
        }
    ImageIO.write(bfi, "JPEG", new File("1.jpg"));

到此这篇关于Java实现将彩色PDF转为灰度PDF的示例代码的文章就介绍到这了,更多相关Java彩色PDF转灰度内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java给PDF加水印并合并多个文件

    目录 前言 准备环境 代码 添加依赖 工具类 测试 测试加水印与背景 测试pdf合并 总结 前言 本文基于itext7实现pdf加水印和合并的操作.实际上在我们实际项目应用中,对于pdf的操作也是比较常见的,我上一个项目中就有将结果转成pdf导出的需求. 准备环境 jdk8,idea2020.1.1,maven3 代码 添加依赖 <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all&

  • 利用Java实现在PDF中添加工具提示

    目录 导入jar包 添加工具提示ToolTip 本文,将介绍如何通过Java后端程序代码在PDF中创建工具提示.添加工具提示后,当鼠标悬停在页面上的元素时,将显示工具提示内容. 导入jar包 本次程序中使用的是 Free Spire.PDF for Java,具体导入jar文件的方法参考如下内容. 两种方法可导入jar到程序: 方法1. 通过Maven仓库下载导入.在pom.xml配置: <repositories> <repository> <id>com.e-ice

  • Java实现替换PDF中的字体功能

    目录 引入jar Java代码 1. 替换所有字体 2. 替换指定字体 文档中可通过应用不同的字体来呈现不一样的视觉效果,通过字体来实现文档布局.排版等设计需要.应用字体时,可在创建文档时指定字体,也可以用新字体去替换文档中已有的字体.下面,以Java代码展示如何来替换PDF中的已有字体,包括: 替换所有字体 替换指定字体 引入jar Maven程序中配置pom.xml: <repositories> <repository> <id>com.e-iceblue<

  • Java实现将PDF转为PDF/A

    目录 Jar包导入 将PDF转为PDF/A 通过将PDF格式转换为PDF/A格式,可保护文档布局.格式.字体.大小等不受更改,从而实现文档安全保护的目的,同时又能保证文档可读.可访问.本篇文章,将通过Java后端程序代码展示如何将PDF转为符合PDF/A1A, 2A, 3A, 1B, 2B和3B标准的PDF.以下是具体方法及步骤. Jar包导入 本次程序中导入的是Spire.Pdf.jar.可在Maven程序中配置pom.xml如下内容来实现下载导入: <repositories> <r

  • C#/VB.NET 实现彩色PDF转为灰度PDF

    目录 配置程序环境 转彩色PDF为灰度 转换结果 补充 本文以C#代码为例介绍如何实现将彩色PDF文件转为灰度(黑白)的PDF文件,即 将PDF文档里面的彩色图片或者文字等通过调用PdfGrayConverter.ToGrayPdf()方法转为文档页面为灰色调.无彩色效果的文档.下面的程序运行环境及代码示例. 配置程序环境 Visual Studio 2017 .Net Framework 4.6.1 Spire.PDF for .NET 关于如何引入dll文件: 1.通过NuGet安装dll(

  • Java实现合并多个PDF的示例代码

    这里合并用到了一个itext的包.使用maven直接导入依赖即可. <dependency> <groupId>com.lowagie</groupId> <artifactId>itext</artifactId> <version>2.1.7</version> </dependency> 这个是我写的一个utl工具类,里面还写了一个main方法,如果你有两个pdf,可以直接用main方法跑一下. impo

  • Java实现将彩色PDF转为灰度PDF的示例代码

    目录 配置程序环境 转彩色PDF为灰度 实现代码(Java) 补充 本文以Java代码为例介绍如何实现将彩色PDF文件转为灰度(黑白)的PDF文件,即:将PDF文档里面的彩色图片或者文字等通过调用PdfGrayConverter.toGrayPdf()方法转为文档页面为灰色调.无彩色效果的文档,可实现缩小文档大小的目的.下面是程序运行环境及代码示例. 配置程序环境 IntelliJ IDEA Spire.PDF for Java 5.3.1 PDF文档 关于如何引入jar文件: 1.通过Mave

  • Java实现PDF转为线性PDF详解

    目录 程序环境 方法步骤 步骤1. 导入PDF Jar包 步骤2. 编辑如下代码将PDF转为线性PDF 线性化PDF文件是PDF文件的一种特殊格式,可以通过Internet更快地进行查看.线性化的PDF,在页面数量很多的情况下,更能突出表现出快速浏览的优势.下面是通过后端Java程序实现将PDF文件转为线性化PDF的方法. 程序环境 IntelliJ IDEA Spire.PDF for Java 4.12.1 方法步骤 步骤1. 导入PDF Jar包 可通过以下两种方法实现: 方法1:通过Ma

  • Java 添加、替换、删除PDF中的图片的示例代码

    概述 本文介绍通过java程序向PDF文档添加图片,以及替换和删除PDF中已有的图片.另外,关于图片的操作还可参考设置PDF 图片背景.设置PDF图片水印.读取PDF中的图片.将PDF保存为图片等文章. 工具:Free Spire.PDF for Java (免费版) Jar获取及导入:官网下载,并解压将lib文件夹下的jar文件导入java程序,或者通过maven仓库下载并导入. jar导入效果: Java代码示例 [示例1]添加图片到PDF import com.spire.pdf.*; i

  • C#实现将PDF转为线性化PDF

    目录 程序环境 方法步骤 步骤1. 安装PDF插件. 步骤2. 编辑如下代码实现转换. 线性化PDF文件是PDF文件的一种特殊格式,可以通过Internet更快地进行查看.线性化的PDF,在页面数量很多的情况下,更能突出表现出快速浏览的优势.下面是通过后端.NET程序实现将PDF文件转为线性化PDF的方法. 程序环境 Visual Studio 2017 .NET Framework 4.6.1 Spire.PDF for .NET 7.12.1 方法步骤 步骤1. 安装PDF插件. 可通过以下

  • vue 使用 vue-pdf 实现pdf在线预览的示例代码

    背景 之前的demo增加了图片预览,于是今天下午追完番剧就突然想到能不能把pdf在线预览也做了,说干就干,刚开始查了很多教程,我发现很多人都在说什么pdf.js这个库,这当然没什么问题,pdf.js的确可以非常完美的实现pdf在线预览的过程,但是感觉这样直接进去有点不太优雅,于是找找看看有没有什么现成的组件,发现有vue-pdf这个组件,虽然说它没有原生那样强大,比如不支持pdf文字复制,打印会乱码,但是我感觉已经足以满足我的需求了.本篇笔记循序渐进,从基础的demo,到一个可用的程度,文末列出

  • Java实现驼峰和下划线互相转换的示例代码

    目录 前言 1.驼峰与下划线互转 2.测试 3.方法补充 前言 基本语法 首先我们要知道java的基础语法. 1.由26个英文字母大小写,0-9,_或$组成 2.数字不可以开头 3.不可以使用关键字和保留字,但是能包括关键字和保留字 4.Java中严格区分大小写,长度无限制 5.标识符不能包括空格 6.取名尽量做到“见名知意” 驼峰命名法 骆驼式命名法(Camel-Case)又称驼峰式命名法,是电脑程式编写时的一套命名规则(惯例). 正如它的名称CamelCase所表示的那样,是指混合使用大小写

  • java后台接收app上传的图片的示例代码

    整理文档,搜刮出一个java后台接受app上传的图片的示例代码,稍微整理精简一下做下分享 package com.sujinabo.file; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.List; import java.util.UUID; import javax.servlet.S

  • Java 批量文件压缩导出并下载到本地示例代码

    主要用的是org.apache.tools.zip.ZipOutputStream  这个zip流,这里以Execl为例子. 思路首先把zip流写入到http响应输出流中,再把excel的流写入zip流中(这里可以不用生成文件再打包,只需把execl模板读出写好数据输出到zip流中,并为每次的流设置文件名) 例如:在项目webapp下execl文件中 存在1.xls,2.xls,3.xls文件 1.Controller @RequestMapping(value = "/exportAll&qu

  • Java中Maven项目导出jar包配置的示例代码

    具体代码如下所示: <!-- 第一种打包方式 (maven-jar-plugin), 将依赖包和配置文件放到jar包外 --> <build> <sourceDirectory>src/main/java</sourceDirectory> <resources> <resource> <directory>src/main/resources</directory> <!-- 将<director

随机推荐