PDF 文件添加矢量图形是生成报告、发票和交互式文档的常见需求。 Conholdate.Total for Java 是一个强大的 SDK,可简化服务器端的 PDF 操作。在本指南中,您将学习如何使用 Graph 对象向 PDF 插入矩形、椭圆和线条,配置它们的外观,并处理性能考虑,所有示例均提供清晰的 Java 代码。

在 Java 中向 PDF 添加形状的步骤

  1. 添加 Maven 仓库和依赖 - 在你的 pom.xml 中包含 Conholdate Maven 仓库和 conholdate-total 依赖。这将使诸如 DocumentPageGraph 等 SDK 类可用。

    <repositories>
        <repository>
            <id>conholdate-repo</id>
            <name>Conholdate Maven Repository</name>
            <url>https://repository.conholdate.com/repo/</url>
        </repository>
    </repositories>
    
    <dependency>
        <groupId>com.conholdate</groupId>
        <artifactId>conholdate-total</artifactId>
        <version>24.9</version>
        <type>pom</type>
    </dependency>
    
  2. 创建 PDF 文档和页面 - 创建 Document 的实例并将页面添加到其页面集合中。该类在 API 参考 中有文档说明。

// Create Document instance
Document doc = new Document();
// Add page to pages collection of PDF file
com.aspose.pdf.Page page = doc.getPages().add();
  1. 创建形状对象 - 首先创建一个 Graph 对象,然后实例化矩形、椭圆或直线并将它们添加到其 shapes 集合中。通过每个形状的 GraphInfo 设置位置、大小和视觉属性。
// Create Graph instance
com.aspose.pdf.drawing.Graph graph = new com.aspose.pdf.drawing.Graph(100, 600);

// Rectangle
com.aspose.pdf.drawing.Rectangle rect = new com.aspose.pdf.drawing.Rectangle(100, 100, 170, 120);
graph.getShapes().add(rect);

// Ellipse
com.aspose.pdf.drawing.Ellipse ellipse = new com.aspose.pdf.drawing.Ellipse(300, 150, 150, 100);
ellipse.getGraphInfo().setColor(com.aspose.pdf.Color.getGreen());
ellipse.getGraphInfo().setLineWidth(1.5f);
graph.getShapes().add(ellipse);

// Line
com.aspose.pdf.drawing.Line line = new com.aspose.pdf.drawing.Line((new float[]{100, 300, 400, 300}));
line.getGraphInfo().setColor(com.aspose.pdf.Color.getRed());
line.getGraphInfo().setLineWidth(3);
graph.getShapes().add(line);
  1. Add Shapes to a Page - 各个形状位于 Graph 对象的 shapes 集合中。将 Graph 本身添加到页面的 paragraphs 集合中,以便其包含的所有形状都在该页面上渲染。

    // Add graph object to paragraphs collection of page instance
    page.getParagraphs().add(graph);
    
  2. 保存更新后的 PDF - 在将图形(包括所有形状)添加到页面后,将文档保存为新文件。

    // Save PDF file
    doc.save("Shapes.pdf");
    

在 Java 中向 PDF 添加形状 - 完整代码示例

以下示例将所有步骤组合成一个可直接运行的程序。

import com.aspose.pdf.Document;
import com.aspose.pdf.Color;

public class AddShapesDemo {
    public static void main(String[] args) throws Exception {
        // Create Document instance
        Document doc = new Document();
        // Add page to pages collection of PDF file
        com.aspose.pdf.Page page = doc.getPages().add();

// Create Graph instance
        com.aspose.pdf.drawing.Graph graph = new com.aspose.pdf.drawing.Graph(100, 600);

// Create Rectangle instance
        com.aspose.pdf.drawing.Rectangle rect = new com.aspose.pdf.drawing.Rectangle(100, 100, 170, 120);
        // Add rectangle object to shapes collection of Graph object
        graph.getShapes().add(rect);

// Create ellipse
        com.aspose.pdf.drawing.Ellipse ellipse = new com.aspose.pdf.drawing.Ellipse(300, 150, 150, 100);
        ellipse.getGraphInfo().setColor(com.aspose.pdf.Color.getGreen());
        ellipse.getGraphInfo().setLineWidth(1.5f);
        // Add ellipse object to shapes collection of Graph object
        graph.getShapes().add(ellipse);

// Create line
        com.aspose.pdf.drawing.Line line = new com.aspose.pdf.drawing.Line((new float[]{100, 300, 400, 300}));
        line.getGraphInfo().setColor(com.aspose.pdf.Color.getRed());
        line.getGraphInfo().setLineWidth(3);
        // Add line object to shapes collection of Graph object
        graph.getShapes().add(line);

// Add graph object to paragraphs collection of page instance
        page.getParagraphs().add(graph);

// Save PDF file
        doc.save("Shapes.pdf");
    }
}

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

在 Java 中的安装和设置

要开始使用 Conholdate.Total for Java,请从官方网站下载最新版本,并添加前面显示的 Maven 依赖项。该 SDK 可在任何 Java 8+ 运行时上运行,且不需要额外的本机库。

关键特性与概述

在 Java 中使用 Conholdate.Total 向 PDF 添加形状

Conholdate.Total for Java 提供了一个统一的 API,用于创建和编辑 PDF 内容。形状绘制功能通过 Graph 对象及其形状集合处理矢量图形,确保添加的元素在任何缩放级别下都保持清晰。您可以绘制基本的原语(矩形、椭圆、直线),并在将其放置到页面之前,将多个原语组合到单个 Graph 中。

对此任务重要的 Conholdate.Total 功能

  • 跨平台兼容性: 在 Windows、Linux 和 macOS 服务器上运行。
  • 高性能渲染: 形状使用生成本机 PDF 内容的相同引擎进行渲染,避免光栅化。
  • 对外观的完整控制: 通过其 GraphInfo 对象为每个形状设置描边颜色和线宽。
  • 分组图形: 将多个形状添加到单个 Graph 对象中,以便在页面上一起定位和管理。

配置形状属性以实现最佳渲染

在添加形状时,请考虑以下属性以实现所需的视觉效果:

  • 位置和大小: Shape 构造函数接受以点为单位的坐标和尺寸,例如 new Rectangle(100, 100, 170, 120)new Ellipse(300, 150, 150, 100)
  • 图形放置: Graph 对象本身使用 new Graph(width, height) 定位,并通过 page.getParagraphs().add(graph) 添加到页面。
  • 颜色: 使用 com.aspose.pdf.Color 类(例如 Color.getGreen()Color.getRed()),并通过 shape.getGraphInfo().setColor(...) 将其设置到形状上。
  • 线宽: 使用 shape.getGraphInfo().setLineWidth(...) 设置,单位为点;值为 1 等于 1/72 英寸。
  • 线条: Line 形状通过坐标数组创建,例如 new Line(new float[]{100, 300, 400, 300}),表示线的起始和结束点。

设置形状外观的示例:

ellipse.getGraphInfo().setColor(com.aspose.pdf.Color.getGreen());
ellipse.getGraphInfo().setLineWidth(1.5f);

在 PDF 中添加形状时的性能考虑

添加大量矢量对象可能会增加处理时间和内存使用。请遵循以下指南:

  • 批量绘制: 在将该图形添加到页面之前,将相关形状分组到单个 Graph 对象中。
  • 重用对象: 如果需要在多个页面上使用相同的形状,请重用形状配置逻辑,而不是复制它。
  • 避免过度缩放: 在最终显示尺寸下定义形状,以避免昂贵的光栅转换。
  • 释放资源: 在添加完所有形状后,及时保存并释放 Document

结论

Conholdate.Total for Java 为 Java 开发者提供了一种直接的方法,将形状添加到 PDF 文档中,从而实现丰富的交互式报告和发票。通过遵循本指南中的步骤、配置技巧和性能指南,您可以自信地将矢量图形集成到 PDF 工作流中。请记得为生产环境获取合适的许可证;评估期间可使用临时许可证,完整的定价信息请参阅定价页面

常见问题

我需要为每个形状创建一个 Graph 对象吗?
不需要。单个 Graph 对象可以容纳多个形状——矩形、椭圆和线条都可以在将图形添加到页面之前,添加到同一图形的 shapes 集合中。

是否可以向多页 PDF 的特定页面添加形状?
是的。从 doc.getPages() 检索目标页面,然后在该特定的 Page 实例上调用 page.getParagraphs().add(graph)

添加形状后,我可以导出哪些文件格式?
Conholdate.Total for Java 的 Document.save() 方法可以写入 PDF 以及 SDK 支持的其他格式。使用 doc.save("Shapes.pdf") 将结果保存为标准的 PDF 文件。