天涯论坛

 找回密码
 立即注册
搜索
查看: 67|回复: 5

怎么样运用 Java 在 PDF 文档中添加、删除或旋转页面

[复制链接]

3070

主题

3万

回帖

9913万

积分

论坛元老

Rank: 8Rank: 8

积分
99138950
发表于 2024-8-17 10:09:20 | 显示全部楼层 |阅读模式

学习 API 处理方法,用于将页面从一个 PDF 添加到另一个、从 PDF 中删除页面、旋转 PDF 中的所有页面以及旋转 PDF 中的部分页面。

鉴于在线供给的免费 PDF 编辑工具的数量(包含 PDF 文件中存在的本机工具),在必须时对 PDF 文档进行小规模更改并不难。然而,在更大范围内进行一样的改变带来了全新的挑战。

假设您有 100 个 PDF 文件,每一个文件都必须相同的编辑操作。在这种状况下,手动执行更改是道理的:该过程的低效率最后会产生比它处理的问题更加多的问题,从而妨碍竞争任务/优先级。大规模更改海量 PDF 文档的最有效办法是以编程方式进行,运用旨在与压缩 PDF 文件通信并轻松操作其属性的 API。

在本文中,我将演示四种易于运用的 API 处理方法,它们准许您以编程方式在 PDF 文档中大规模添加、删除或旋转页面。这些处理方法供给以下特定服务:

将一个 PDF 文档中的页面插进/复制到另一个文档中

从 PDF 文档中删除/删除页面

旋转 PDF 文档中的所有页面

旋转 PDF 文档中的特定范围/页面子集

下面,我重点介绍了此列表中每一个 API 处理方法有些用例和所需参数,并供给了Java代码示例以帮忙您构建 API 调用。这些 API 完全免花费于有限规模的操作(每月触及不超过 800 次 API 调用的操作),且额外承诺为零。要得到安全的 API 密钥,您只需在咱们的网站上注册一个免费帐户就可。一旦你有了它,你就能够在下面供给的代码示例中容易且重复地验证 API 拜访

安装 API 客户端

在深入科研每一个 API 处理方法的用例和参数之前,咱们第1步是安装 Cloudmersive API 客户端。咱们能够经过首要添加对咱们的Maven POM 文件的引用来起始这样做,如下所示:

jitpack.io

https://jitpack.io

</repositories>

而后咱们能够在依赖项中包括以下引用,使 JitPack 能够编译库:

com.github.Cloudmersive

Cloudmersive.APIClient.Java

v4.25

</dependencies>

咱们能够经过在存储库末尾的根 build.gradle 中包括以下内容来安装Gradle :

allprojects {

repositories {

...

maven { url https://jitpack.io }

}

}

之后,咱们能够在 build.gradle 中添加依赖:

dependencies {

implementation

com.github.Cloudmersive:Cloudmersive.APIClient.Java:v4.25

}

最后,咱们必须在文件顶部包括以下导入:

// Import classes://import

com.cloudmersive.client.invoker.ApiClient;//import

com.cloudmersive.client.invoker.ApiException;//import

com.cloudmersive.client.invoker.Configuration;//import

com.cloudmersive.client.invoker.auth.*;//import

com.cloudmersive.client.EditPdfApi;

将页面从一个 PDF 插进、复制到另一个

正如这个 API 的标题所暗示的,咱们能够运用这种“插进、复制”处理方法将来自源 PDF 的特定范围的页面包括目的 PDF 中。这是快速编译大型报告、备忘录、营销样本等的绝佳工具。此 API 的参数准许咱们准确指定要从那些页面起始和结束复制,以及将这些复制的页面插进目的文档的详细位置。虽然源文件和目的文件输入很容易导航,但在配置以下三个参数时,咱们必须更加重视

pageStartSource:起始复制内容的页面(从 1 开始);此页面的内容将包括目的文件中。

pageEndSource:要从中复制内容的最后一页(从 1 起始);此页面的内容将包括目的文件中。

pageInsertBeforeDestination:目的 PDF 中应包括复制内容的页面(从 1 起始)。

随着咱们的参数平方,咱们能够这般构造 API 调用:

ApiClient defaultClient =

Configuration.getDefaultApiClient();

// Configure API key authorization: Apikey

ApiKeyAuth Apikey = (ApiKeyAuth)

defaultClient.getAuthentication("Apikey");

Apikey.setApiKey("YOUR API KEY");

// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)

//Apikey.setApiKeyPrefix("Token");

EditPdfApi apiInstance = new EditPdfApi();

File sourceFile = new File("/path/to/inputfile"); // File | Source PDF file to copy pages from.

File destinationFile = new File("/path/to/inputfile"); // File | Destination PDF file to copy pages into.

Integer pageStartSource = 56; // Integer | Page number (1 based) to start copying pages from (inclusive) in the Source file.

Integer pageEndSource = 56; // Integer | Page number (1 based) to stop copying pages pages from (inclusive) in the Source file.

Integer

pageInsertBeforeDesitnation = 56; // Integer | Page number (1 based) to insert the pages before in the Destination file.

try {

byte[] result =

apiInstance.editPdfInsertPages(sourceFile, destinationFile, pageStartSource, pageEndSource,

pageInsertBeforeDesitnation);

System.out.println(result);

} catch (ApiException e) {

System.err.println("Exception when calling EditPdfApi#editPdfInsertPages");

e.printStackTrace();

}

从 PDF 文档中删除、删除页面

倘若咱们目的是从 PDF 文件中大规模删除页面,咱们能够采用“删除,删除”处理方法。此页面删除处理方法有许多用例。举一个平常的例子,它在必须跨组织共享多个版本的私人报告/备忘录的状况尤其有用。要从输入 PDF 中删除页面,咱们必要包括 PDF 文件路径,而后满足以下参数:

pageStart:指定从哪个页面(从 1 起始起始删除,并删除该页面

pageEnd:指定从哪个页面(从 1 起始)完成删除,并删除该页面

咱们能够这般构造咱们的页面删除 API 调用,再次从咱们的 API 密钥授权片段起始

ApiClient defaultClient =

Configuration.getDefaultApiClient();

// Configure API key authorization: Apikey

ApiKeyAuth Apikey = (ApiKeyAuth)

defaultClient.getAuthentication("Apikey");

Apikey.setApiKey("YOUR API KEY");

// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)

//Apikey.setApiKeyPrefix("Token");

EditPdfApi apiInstance = new EditPdfApi();

File inputFile = new File("/path/to/inputfile"); // File | Input file to perform the operation on.

Integer pageStart = 56; // Integer | Page number (1 based) to start deleting pages from (inclusive).

Integer pageEnd = 56; // Integer | Page number (1 based) to stop deleting pages from (inclusive).

try {

byte[] result =

apiInstance.editPdfDeletePages(inputFile, pageStart, pageEnd);

System.out.println(result);

} catch (ApiException e) {

System.err.println("Exception when calling EditPdfApi#editPdfDeletePages");

e.printStackTrace();

}

旋转 PDF 文档中的所有页面

无论是有意还是因为疏忽,大型 PDF 文件(尤其是从 JPG、PNG、PowerPoint PPTX 等格式转换而来的文件)一般包括以不期盼方向旋转的页面。当 PDF 文件中的每一页都错误地旋转到相同的方向时,咱们很幸运:咱们能够运用简单的“旋转所有页面”处理方法来立即纠正问题。咱们必须密切关注rotationAngle这个处理方法中的参数,由于它只接受正(向右旋转)和负(向左旋转)整数,它们只能是 90 度的倍数。一旦咱们正确指定了这个参数,咱们能够构建 API,如下面的示例所示:

ApiClient defaultClient =

Configuration.getDefaultApiClient();

// Configure API key authorization: Apikey

ApiKeyAuth Apikey = (ApiKeyAuth)

defaultClient.getAuthentication("Apikey");

Apikey.setApiKey("YOUR API KEY");

// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)

//Apikey.setApiKeyPrefix("Token");

EditPdfApi apiInstance = new EditPdfApi();

File inputFile = new File("/path/to/inputfile"); // File | Input file to perform the operation on.

Integer rotationAngle = 56; // Integer | The angle to rotate the page in degrees, must be a multiple of 90 degrees, e.g. 90, 180, 270, or -90, -180, -270, etc.

try {

byte[] result =

apiInstance.editPdfRotateAllPages(inputFile, rotationAngle);

System.out.println(result);

} catch (ApiException e) {

System.err.println("Exception when calling EditPdfApi#editPdfRotateAllPages");

e.printStackTrace();

}

旋转 PDF 文档中的范围、页面子集

当 PDF 文档中仅有特定页面子集必须旋转调整时,无需担心:咱们能够容易执行先前概述的操作的更详细版本。咱们必须再次配置旋转方向,以及指定操作应该从哪里起始和结束的两个参数:

rotationAngle:定义指定页面将旋转多少度;接受正(向右旋转)和负(向左旋转)整数,它们是 90 度的倍数

pageStart:指定子集中的哪一页(从 1 起始),并包括该页

pageEnd:指定要在子集中的哪个页面(基于 1)完成,并包括此页面

此 API 调用的结构应如下所示:

ApiClient defaultClient =

Configuration.getDefaultApiClient();

// Configure API key authorization: Apikey

ApiKeyAuth Apikey = (ApiKeyAuth)

defaultClient.getAuthentication("Apikey");

Apikey.setApiKey("YOUR API KEY");

// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)

//Apikey.setApiKeyPrefix("Token");

EditPdfApi apiInstance = new EditPdfApi();

File inputFile = new File("/path/to/inputfile"); // File | Input file to perform the operation on.

Integer rotationAngle = 56; // Integer | The angle to rotate the page in degrees, must be a multiple of 90 degrees, e.g. 90, 180, 270, or -90, -180, -270, etc.

Integer pageStart = 56; // Integer | Page number (1 based) to start rotating pages from (inclusive).

Integer pageEnd = 56; // Integer | Page number (1 based) to stop rotating pages from (inclusive).

try {

byte[] result =

apiInstance.editPdfRotatePageRange(inputFile, rotationAngle, pageStart, pageEnd);

System.out.println(result);

} catch (ApiException e) {

System.err.println("Exception when calling EditPdfApi#editPdfRotatePageRange");

e.printStackTrace();

}

运用以上示例构建 API 调用后,一切就绪:再也不必须代码。每一个 API 响应都会为新的 PDF 文件生成一个编码字符串,可用于按照必须生成新文件或更新现有文档。





上一篇:Java实现删除某条信息并返回当前页操作
下一篇:jxls专题之多Sheet页回填
回复

使用道具 举报

1

主题

520

回帖

5

积分

新手上路

Rank: 1

积分
5
发表于 2024-8-21 12:05:14 | 显示全部楼层
你的努力一定会被看见,相信自己,加油。
回复

使用道具 举报

2949

主题

3万

回帖

9997万

积分

论坛元老

Rank: 8Rank: 8

积分
99979417
发表于 2024-10-4 07:54:45 | 显示全部楼层
大势所趋,用于讽刺一些制作目的就是为了跟风玩梗,博取眼球的作品。
回复

使用道具 举报

2949

主题

3万

回帖

9997万

积分

论坛元老

Rank: 8Rank: 8

积分
99979417
发表于 2024-10-10 06:54:13 | 显示全部楼层
论坛是一个舞台,让我们在这里尽情的释放自己。
回复

使用道具 举报

3126

主题

3万

回帖

9910万

积分

论坛元老

Rank: 8Rank: 8

积分
99108615
发表于 2024-10-11 02:55:25 | 显示全部楼层
你的话深深触动了我,仿佛说出了我心里的声音。
回复

使用道具 举报

3070

主题

3万

回帖

9913万

积分

论坛元老

Rank: 8Rank: 8

积分
99138950
 楼主| 发表于 2024-11-8 12:43:44 | 显示全部楼层
你的留言真是温暖如春,让我感受到了无尽的支持与鼓励。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|小黑屋|天涯论坛 ( 非经营性网站 )|网站地图

GMT+8, 2024-11-23 10:33 , Processed in 0.158679 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.