如何在Java中将PDF转换为PNG或JPG


对于以dcopy 和digitally形式共享文档,PDF文件格式是首选。 由于PDF格式具有高度的多功能性和不同操作系统之间的兼容性,因此用户可以创建,编辑,加密和锁定重要文档,以便在任何浏览器或任何Adobe Adob​​e Acrobat等PDF查看应用程序中查看。此外,它的灵活性意味着几乎所有其他文件类型都可以转换为PDF格式,而不会降低质量或破坏格式。这意味着可以轻松地以受保护的格式转换和共享复杂的文件类型(例如DOCX和XLSX文档),这将限制意外编辑或格式错误的机会。

但是,如果您打算显示示例或在单独的文件或网页中插入PDF文档的图像,则将PDF文件转换为图像阵列将更加有用。例如,如果您要创建一个PowerPoint,以显示组织的入职流程,并且需要包括与该流程相关的不同文档或合同的图像,则将PDF文件转换为JPG将使您能够快速而轻松地插入图像并根据演示文稿的需要缩放或裁剪。当对网页执行类似的过程时,将您的文档作为PNG图像提供将对其进行优化,以便在您的网站中在线查看。它还可以防止用户像使用PDF一样下载和编辑文档。

在本文中,我们将介绍三种转换API,这些API可让您将任何PDF文档转换为图像。这包括转换为PNG或JPG数组,并在文档中每页创建一张图像。我们还将讨论如何合并和堆叠PDF页面以转换成单个PNG或“高”图像。

本教程的目标是简化和提高文档显示和共享的多功能性。此外,由于大多数文档都可以转换为PDF,因此您可以将这些API应用于PDF转换后的任何文件。这将大大增加您的可交付范围和生产价值。

我们将在这里讨论的第一个API提供了将PDF文档转换为PNG数组的自动化过程。作为数组,将为PDF文档中的每一页创建一个PNG图像,这意味着您可以选择要使用的特定页面,而无需额外的输入命令。

与下面显示的所有API一样,第一步是通过在pom.xml中添加对我们存储库的Jitpack引用来安装我们的库:

<repositories>
    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>
</repositories>

然后,我们需要对依赖项添加以下引用:

<dependencies>
<dependency>
    <groupId>com.github.Cloudmersive</groupId>
    <artifactId>Cloudmersive.APIClient.Java</artifactId>
    <version>v3.54</version>
</dependency>
</dependencies>

要使用Gradle进行安装,请将其添加到存储库末尾的root build.gradle中:

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

然后,在build.gradle中添加依赖项:

dependencies {
        implementation 'com.github.Cloudmersive:Cloudmersive.APIClient.Java:v3.54'
}

之后,我们可以将导入添加到文件顶部并调用我们的函数:

// 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.ConvertDocumentApi;

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");

ConvertDocumentApi apiInstance = new ConvertDocumentApi();
File inputFile = new File("/path/to/inputfile"); // File | Input file to perform the operation on.
try {
    PdfToPngResult result = apiInstance.convertDocumentPdfToPngArray(inputFile);
    System.out.println(result);
} catch (ApiException e) {
    System.err.println("Exception when calling ConvertDocumentApi#convertDocumentPdfToPngArray");
    e.printStackTrace();
}

该API唯一需要输入的就是您的PDF文件。为确保此API和其他API正常运行,您需要验证以下内容:

您输入的文件有效 您的API密钥已正确插入代码块中。可以在Cloudmersive网站上免费检索该文件,并将通过我们的API库提供对800个每月调用的访问。 如果您需要文档的PNG图像,但希望一次显示所有页面,则以下API将使您可以将PDF页面合并为一个“高” PNG图像。在这种格式下,页面将从第一页一直向下堆叠到最后一页。无论您的页面在文档中所处的顺序是什么,都会反映在高大的PNG中。

如上所示,您将需要使用Maven或Gradle安装我们的库,然后可以将导入添加到文件顶部。完成此操作后,您可以如下所示调用函数。

// 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.ConvertDocumentApi;
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");
ConvertDocumentApi apiInstance = new ConvertDocumentApi();
File inputFile = new File("/path/to/inputfile"); // File | Input file to perform the operation on.
try {
    byte[] result = apiInstance.convertDocumentPdfToPngSingle(inputFile);
    System.out.println(result);
} catch (ApiException e) {
    System.err.println("Exception when calling ConvertDocumentApi#convertDocumentPdfToPngSingle");
    e.printStackTrace();
}

转换之前,请确保文档的页面顺序正确,因为它们将在PNG中保持该顺序。这种格式将使用户可以一次滚动浏览整个文档,而无需多个PNG文件。

最后,由于PNG具有灵活性,因此更适合在线使用,因此JPG文件最适合用作其他文件中的静态图像或用于打印。例如,如果您需要在演示文稿或附录中包括文档的图像,则JPG文件格式将压缩图像,并允许您在项目中放置和缩放高保真图像而无需太多空间。

再一次,要启动我们的功能,我们需要使用Maven或Gradle安装我们的库,并将导入内容添加到文件顶部。

然后,我们可以调用最终函数:

// 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.ConvertDocumentApi;
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");

ConvertDocumentApi apiInstance = new ConvertDocumentApi();
File inputFile = new File("/path/to/inputfile"); // File | Input file to perform the operation on.
Integer quality = 56; // Integer | Optional; Set the JPEG quality level; lowest quality is 1 (highest compression), highest quality (lowest compression) is 100; recommended value is 75. Default value is 75.
try {
    PdfToJpgResult result = apiInstance.convertDocumentPdfToJpg(inputFile, quality);
    System.out.println(result);
} catch (ApiException e) {
    System.err.println("Exception when calling ConvertDocumentApi#convertDocumentPdfToJpg");
    e.printStackTrace();
}

在这里,您将需要输入源文件,还可以选择设置图像的质量级别。质量等级从最高压缩和最低质量的1到最高压缩和最高质量的100。我们建议的默认值为75。


原文链接:codingdict.com