不需要的图像水印会使 PDF 文档显得不专业,并阻碍后续处理。 GroupDocs.Watermark Cloud SDK for Java 提供了强大的 API,允许 Java 开发者以编程方式从 PDF 文件中剥离这些水印。本指南展示了如何使用 SDK 的移除端点 在 Java 中删除 PDF 的图像水印。完成后,您将能够将自动水印移除集成到任何 Java 应用程序中。

Java 开发环境 - 前置条件和设置

在开始之前,请确保您具备以下条件:

  • 已安装 Java 17 或更高版本。
  • 用于依赖管理的 Maven 或 Gradle。
  • 拥有 client IDclient secret 的 GroupDocs Cloud 账户。

使用下面的 Maven 依赖将 SDK 添加到您的项目中(您也可以使用等效的 Gradle 方式)。最新的二进制文件可在下载页面获取。

<dependency>
    <groupId>com.groupdocs</groupId>
    <artifactId>groupdocs-watermark-cloud</artifactId>
    <version>23.8</version>
</dependency>

使用您的凭据初始化 API 客户端。此代码片段直接取自示例代码。

ApiClient apiClient = new ApiClient("YOUR_CLIENT_ID", "YOUR_CLIENT_SECRET");
WatermarkApi watermarkApi = new WatermarkApi(apiClient);

当客户端准备好后,您可以继续实际的删除工作流。

Java 中删除 PDF 图像水印的分步指南

步骤 1:加载源文档

首先,指定要清理的 PDF。FileInfo 对象告诉 API 文件所在的位置,并可选地提供密码。

FileInfo inputFile = new FileInfo();
inputFile.setFilePath("input.pdf");
// inputFile.setPassword("pdfPassword"); // Uncomment if needed

第2步:定义图像水印标准

创建一个指向您希望删除的水印图像的 ImageSearchCriteria。这是 在 Java 中删除 PDF 的图像水印 操作的核心。

ImageSearchCriteria imageCriteria = new ImageSearchCriteria();
imageCriteria.setImagePath("watermark.png");

步骤 3:设置删除选项

将文件信息和搜索条件组合成一个 RemoveOptions 对象。您还可以定义清理后的 PDF 将保存的位置。

RemoveOptions removeOptions = new RemoveOptions();
removeOptions.setFileInfo(inputFile);
removeOptions.setOutputPath("output.pdf");
removeOptions.setSearchCriteria(Collections.singletonList(imageCriteria));

步骤 4:执行删除调用

WatermarkApi 上调用 remove 方法。调用返回一个包含已处理文件路径的 RemoveResult

RemoveResult result = watermarkApi.remove(removeOptions);
System.out.println("Watermark removal completed. Output file: " + result.getPath());

步骤 5:处理结果

处理可能出现的任何异常。SDK 会抛出 ApiException 表示服务端错误,并抛出通用的 Exception 表示意外问题。

try {
    // removal code above
} catch (ApiException e) {
    System.err.println("API exception occurred: " + e.getMessage());
} catch (Exception e) {
    System.err.println("Unexpected error: " + e.getMessage());
}

完整代码示例:使用 GroupDocs 删除图像水印

以下示例演示了从客户端初始化到结果处理的完整工作流。

import com.groupdocs.watermark.cloud.api.WatermarkApi;
import com.groupdocs.watermark.cloud.client.ApiClient;
import com.groupdocs.watermark.cloud.client.ApiException;
import com.groupdocs.watermark.cloud.model.FileInfo;
import com.groupdocs.watermark.cloud.model.ImageSearchCriteria;
import com.groupdocs.watermark.cloud.model.RemoveOptions;
import com.groupdocs.watermark.cloud.model.RemoveResult;
import java.util.Collections;

public class RemoveImageWatermarkFromPdf {
    public static void main(String[] args) {
        // Initialize API client with your credentials
        ApiClient apiClient = new ApiClient("YOUR_CLIENT_ID", "YOUR_CLIENT_SECRET");
        WatermarkApi watermarkApi = new WatermarkApi(apiClient);

// Prepare input file information
        FileInfo inputFile = new FileInfo();
        inputFile.setFilePath("input.pdf");
        // If the PDF is password protected, uncomment the following line and set the password
        // inputFile.setPassword("pdfPassword");

// Define the image watermark to be removed
        ImageSearchCriteria imageCriteria = new ImageSearchCriteria();
        imageCriteria.setImagePath("watermark.png");

// Set up removal options
        RemoveOptions removeOptions = new RemoveOptions();
        removeOptions.setFileInfo(inputFile);
        removeOptions.setOutputPath("output.pdf");
        removeOptions.setSearchCriteria(Collections.singletonList(imageCriteria));

try {
            // Execute removal
            RemoveResult result = watermarkApi.remove(removeOptions);
            System.out.println("Watermark removal completed. Output file: " + result.getPath());
        } catch (ApiException e) {
            System.err.println("API exception occurred: " + e.getMessage());
        } catch (Exception e) {
            System.err.println("Unexpected error: " + e.getMessage());
        }
    }
}

注意: 此代码示例演示了核心功能。在项目中使用之前,请确保更新任何文件路径和配置值以匹配实际环境,验证所有必需的依赖项已正确安装,并在开发环境中彻底测试。如遇到任何问题,请参阅官方文档或联系支持团队获取帮助。

使用 cURL 的 REST API 水印移除操作

如果您更喜欢纯 REST 方法,可以使用 cURL 命令执行相同的操作。

  1. 进行身份验证并获取访问令牌
curl -X POST "https://api.groupdocs.cloud/v2.0/auth/token" \
     -H "Content-Type: application/json" \
     -d '{"client_id":"YOUR_CLIENT_ID","client_secret":"YOUR_CLIENT_SECRET"}'
  1. 上传源 PDF
curl -X POST "https://api.groupdocs.cloud/v2.0/storage/upload?path=input.pdf" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -F "file=@/local/path/input.pdf"
  1. 执行水印删除
curl -X POST "https://api.groupdocs.cloud/v2.0/watermark/remove" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{
           "fileInfo": {"filePath":"input.pdf"},
           "outputPath":"output.pdf",
           "searchCriteria":[{"type":"Image","imagePath":"watermark.png"}]
         }'
  1. 下载已清理的 PDF
curl -X GET "https://api.groupdocs.cloud/v2.0/storage/download?path=output.pdf" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -o output.pdf

如需完整参考,请参阅 API 文档

微调删除选项

SDK 提供了多个属性,您可以根据不同场景进行调整。

  • 密码保护 - 如果源 PDF 已加密,请在 FileInfo 上设置密码。
  inputFile.setPassword("mySecret");
  • 多个搜索条件 - 通过向列表中添加更多 ImageSearchCriteria 对象,在一次调用中删除多个水印。
ImageSearchCriteria logoCriteria = new ImageSearchCriteria();
logoCriteria.setImagePath("logo.png");
removeOptions.setSearchCriteria(Arrays.asList(imageCriteria, logoCriteria));
  • 输出格式 - 虽然默认是 PDF,但您可以通过设置 outputPath 为不同的扩展名(例如 output.docx)来更改输出格式。
  removeOptions.setOutputPath("output.docx");

这些选项让您能够根据自己的确切需求定制 remove image watermark from PDF in Java 过程。

结论

使用 GroupDocs.Watermark Cloud SDK for Java 可以轻松以编程方式从 PDF 文件中移除图像水印。按照上述步骤,您可以将水印删除功能集成到任何 Java 后端,处理加密的 PDF,并通过灵活的选项对操作进行微调。请记得获取适用于生产环境的正式许可证;产品页面上提供了定价详情,您也可以通过临时许可证页面申请临时许可证。立即开始清理您的 PDF,为用户提供精美的文档。

常见问题

  • 如何在 Java 中删除 PDF 的图像水印?
    使用 remove 方法的 WatermarkApi,并提供指向水印图像的 ImageSearchCriteria。本文中的完整代码示例展示了具体步骤。

  • 如果我的 PDF 受密码保护怎么办?
    在调用删除 API 之前,在 FileInfo 对象上设置密码 (inputFile.setPassword("yourPassword"))。SDK 将自动解密、处理并重新加密文件。

  • 我可以从其他格式(例如 DOCX)中移除水印吗?
    是的。相同的 API 可用于 GroupDocs.Watermark 支持的任何格式。只需相应地更改 filePathoutputPath 的扩展名即可。

  • 我可以处理的 PDF 大小是否有限制?
    云服务每次请求可处理的文件大小上限为 500 MB。对于更大的文档,请考虑在处理前将 PDF 拆分为更小的部分。

阅读更多