> 技术文档 > Spire.Office.jar:Java全能办公组件实践指南

Spire.Office.jar:Java全能办公组件实践指南

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:Spire.Office.jar是一个强大的Java库,提供了处理Word、Excel、PowerPoint等多种Office文档的能力。它支持文档的创建、编辑、转换和打印。本文深入解析了Spire.Office.jar的核心特性、使用方法以及相关的许可协议。包含代码示例和API文档等资源目录,为Java开发者提供了一站式的文档处理解决方案,有助于提高开发效率并简化项目集成。
Spire.Office.jar

1. Spire.Office.jar介绍

Spire.Office.jar 是一款功能强大的 Java 库,它提供了操作 Office 文档的能力,支持多种 Office 文件格式,如 Word、Excel、PowerPoint、PDF 等。本章节旨在为读者展示 Spire.Office.jar 的基本概念、功能范围以及如何将其纳入您的开发环境。接下来的章节将进一步详细探讨如何利用该库进行文档的创建、编辑、转换、打印等操作。

1.1 Spire.Office.jar 简介

Spire.Office.jar 允许 Java 开发人员轻松地集成 Office 文档处理功能到他们的应用程序中,无论是桌面应用还是基于 Web 的服务。这意味着你可以轻松读取、写入和操作 Excel 和 Word 文档,而无需安装 Microsoft Office 软件。

1.2 功能概述

  • 文档创建与编辑: 可以在不启动 Microsoft Office 的情况下,进行文档的创建、编辑和保存操作。
  • 格式转换与支持: 支持将 Office 文档转换为多种格式,如 PDF、HTML 和多种图像格式。
  • 打印和页面设置: 实现对文档打印选项的设置,包括打印预览。

1.3 入门指南

为了开始使用 Spire.Office.jar,首先需要在项目中添加相应的依赖项。这通常通过添加 Maven 或 Gradle 依赖来完成。下面是一个 Maven 示例:

 com.spire spire.office 版本号

确保替换 版本号 为当前可用的最新版本。完成这一步骤之后,你就可以在项目中使用 Spire.Office.jar 提供的功能了。

这一章为读者提供了一个基础的了解,而接下来的章节会深入探讨如何实现具体的文档处理任务,以及更高级的应用场景。

2. Office文档处理功能

2.1 文档创建与编辑

2.1.1 文档创建的基本流程

在办公软件的使用中,文档的创建是一个基础且至关重要的功能。Spire.Office.jar提供了一系列API来支持文档的创建与编辑。下面是创建文档的基本流程:

  1. 加载文档模板 :如果需要,首先可以加载一个预设的文档模板,这在很多时候可以大大减少重复的工作量。
  2. 创建文档实例 :使用Spire提供的工厂方法来创建文档实例,比如 Document 类的实例用于处理Word文档。
  3. 添加内容 :向文档实例中添加所需的内容,这可以是文本、图片、表格、图表等。
  4. 保存文档 :最后将文档保存到磁盘上的文件系统,可以选择不同的保存格式,比如.docx,.pdf等。

2.1.2 文档编辑的核心操作

文档编辑是创建文档的后续过程,包括对文档内容的增删改查。核心操作包括但不限于:

  • 文本编辑 :对文档中的文本进行操作,如字体样式、大小、颜色等。
  • 页面设置 :包括页边距、纸张方向和大小等。
  • 对象插入 :包括插入图片、图表、形状等。
  • 表格操作 :创建和编辑表格,设置单元格样式和属性。

为了实现这些操作,Spire提供了丰富的API集合,如 Paragraph Table TextRange 等类,它们分别对应于文档的段落、表格和文本范围。

// 示例代码:创建文档并添加一些文本内容Document document = new Document();Section section = document.addSection();Paragraph paragraph = section.addParagraph();TextRange textRange = paragraph.appendText(\"Hello, Spire!\");textRange.getCharacterFormat().setFontName(\"Arial\");textRange.getCharacterFormat().setFontSize(20);document.saveToFile(\"output.docx\", FileFormat.Docx_2013);

在上述代码中,我们首先创建了一个文档实例,然后添加了一个新的段落,并在段落中添加了文本。文本格式通过 CharacterFormat 类进行设置,最后将文档保存到了指定位置。

2.2 文档转换与格式支持

2.2.1 支持的文档格式转换概览

文档转换功能使得Spire.Office.jar成为一个强大的文档处理工具。它支持多种格式之间的转换,包括但不限于:

  • .doc .docx
  • .txt .docx
  • .html .docx
  • .pdf .docx

这个列表只是冰山一角,Spire的强大之处在于它能够处理许多其他不常见的格式,为用户提供极大的便利。

2.2.2 文档转换过程中的关键点

文档转换过程中的关键点是保持格式的一致性以及内容的完整性。Spire旨在简化这一流程,通过自动处理格式转换和布局调整,尽可能减少人工干预。

// 示例代码:将HTML文档转换为Word文档HtmlLoadOptions loadOptions = new HtmlLoadOptions(LoadFormat.Html);Document document = new Document(\"input.html\", loadOptions);document.save(\"output.docx\", FileFormat.Docx_2013);

上述代码展示了如何使用Spire将HTML格式的文件转换为Word文档。通过设置 HtmlLoadOptions 类,我们可以指定文件的加载格式,并且最终保存为.docx格式的Word文档。

2.3 文档打印与页面设置

2.3.1 如何设置文档打印选项

文档打印选项允许用户自定义打印输出。Spire提供了如下几个关键的打印设置:

  • 打印页码
  • 页眉页脚设置
  • 打印颜色或黑白
  • 打印多份副本
  • 打印方向(横向或纵向)
// 示例代码:设置文档的打印选项PrinterSettings printerSettings = new PrinterSettings();printerSettings.setCopies(2); // 打印两份副本printerSettings.setCollate(true); // 合并打印document.print(printerSettings);

在这个代码示例中,我们使用了 PrinterSettings 类来设置打印选项。这里我们设置了打印两份副本,并选择合并打印。

2.3.2 页面布局与打印预览功能

页面布局和打印预览功能对于最终的打印输出至关重要。Spire通过以下方式来支持这两项功能:

  • 提供API来修改页面的边距、大小等布局属性。
  • 提供打印预览功能,让用户在打印之前查看文档的最终表现形式。
// 示例代码:设置文档页面布局并预览PageSetup pageSetup = document.getSections().get(0).getPageSetup();pageSetup.setMargins(new Margins(72, 72, 72, 72)); // 设置所有边距为1英寸document.getPageLayout().show();

在这段代码中,我们修改了页面的边距,然后调用 show 方法来显示页面布局预览。

在下一章中,我们将深入探讨如何创建、编辑、转换和打印文档,同时也会给出更多实际应用案例分析。

3. 创建、编辑、转换和打印文档的能力

3.1 文档创建功能深入剖析

3.1.1 创建过程中的编程接口介绍

在深入理解文档创建功能时,编程接口的介绍是一个不可或缺的部分。Spire.Office.jar 提供了一套丰富的API,使得开发者可以通过编程的方式创建、编辑和处理Office文档。

以下是创建文档的基本步骤的代码块及其详细的逻辑分析:

// 导入Spire.Doc包中的类import com.spire.doc.*;public class CreateWordDocument { public static void main(String[] args) { // 创建一个文档实例 Document document = new Document(); // 添加一个段落到文档中 Section section = document.addSection(); Paragraph paragraph = section.addParagraph(); // 设置段落格式 paragraph.getFormat().setCharacterFormat(new CharacterFormat(document)); paragraph.getFormat().getCharacterFormat().setBold(true); // 向段落中添加文本 paragraph.appendText(\"Hello, Spire.Doc!\"); // 保存文档 document.saveToFile(\"HelloWorld.docx\", FileFormat.Docx); }}

在上述代码中,首先导入了 com.spire.doc 包中的 Document 类,这个类是创建文档的核心。通过 new Document() 实例化一个文档对象,接下来通过 addSection 方法添加一个章节,并通过 addParagraph 方法创建一个段落。段落的格式,例如字体样式和大小,通过 CharacterFormat 类进行设置。最后,将文本内容添加到段落中,并通过 saveToFile 方法将文档保存为 .docx 格式。

3.1.2 实际应用案例分析

假设需要为公司生成一个周报模板,在这个案例中,我们可以利用Spire.Office.jar提供的功能,自动填充报告中的基本信息,并保存为模板。

public class GenerateWeeklyReport { public static void main(String[] args) { Document doc = new Document(); Section section = doc.addSection(); // 添加报告标题和子标题 String title = \"Weekly Report\"; Paragraph titlePara = section.addParagraph(); titlePara.appendText(title); titlePara.getFormat().getCharacterFormat().setFontName(\"Arial\"); titlePara.getFormat().getCharacterFormat().setBold(true); titlePara.getFormat().getCharacterFormat().setFontSize(20); // 添加报告日期和作者 String date = \"2023-04-25\"; String author = \"John Doe\"; Paragraph para = section.addParagraph(); para.appendText(\"Date: \").appendText(date); para.appendText(\"\\nAuthor: \").appendText(author); // 保存文档为模板 doc.saveToFile(\"WeeklyReportTemplate.docx\", FileFormat.Docx); }}

在这个案例中,我们首先创建了一个新的Word文档,并为其添加了一个章节和两个段落。第一个段落用于添加报告的标题,并将其格式化为粗体和20号字体大小。接着,我们添加了日期和作者信息。最后,将这个文档保存为 WeeklyReportTemplate.docx ,作为后续生成周报的模板使用。

3.2 文档编辑与格式化技巧

3.2.1 文本与图形内容的编辑

在文档编辑的过程中,我们不仅需要关注文本的编辑,还需要知道如何插入和编辑图形内容。Spire.Office.jar 对于图形内容的处理提供了全面的支持。

import com.spire.doc.*;public class EditTextAndGraphics { public static void main(String[] args) { Document document = new Document(); Section section = document.addSection(); // 添加段落并设置格式 Paragraph paragraph = section.addParagraph(); paragraph.appendText(\"This is a text with a graphic inserted.\"); // 添加图形 Shape shape = section.getShapes().addShape(ShapeType.RECTANGLE, 30, 10, 100, 60); shape.getFillFormat().setFillType(FillFormatType.SOLID); shape.getFillFormat().getSolidFillColor().setColor(Color.RED); // 设置文本环绕方式 shape.getTextWrappingStyle().setTextWrappingStyle(TextWrappingStyle.BehindText); document.saveToFile(\"EditedDocument.docx\", FileFormat.Docx); }}

在上述代码中,我们添加了一个包含文本和图形的文档。首先,我们创建了一个段落并添加了文本。然后,我们使用 addShape 方法添加了一个矩形图形,并设置了图形填充颜色为红色。此外,我们将文本环绕方式设置为“BehindText”,这样图形就会出现在文本的后面。

3.2.2 文档格式化和样式设置

格式化和样式设置是编辑文档中不可或缺的环节,它们不仅能够提升文档的可读性,还能增强文档的专业度。

import com.spire.doc.*;public class FormatAndStyleDocument { public static void main(String[] args) { Document document = new Document(); Section section = document.addSection(); // 设置段落样式 ParagraphStyle style = document.getStyles().add(ParagraphStyle.class, \"MyStyle\"); style.getCharacterFormat().setBold(true); style.getCharacterFormat().setFontSize(14); // 应用样式到段落 Paragraph paragraph = section.addParagraph(); paragraph.applyStyle(\"MyStyle\"); paragraph.appendText(\"This is a formatted paragraph using custom style.\"); document.saveToFile(\"StyledDocument.docx\", FileFormat.Docx); }}

在此代码段中,我们首先创建了一个新的段落样式 MyStyle ,并对其应用了加粗和14号字体大小的格式。然后,我们创建了一个段落,并将此自定义样式应用到该段落中。最后,文档以 .docx 格式保存。

3.3 文档转换与打印高级应用

3.3.1 高级转换功能与限制

Spire.Office.jar 支持多种文档格式之间的转换,包括但不限于将Word转换为PDF、将Excel转换为CSV等。但在实际应用过程中,也会遇到一些限制,比如在转换为PDF时,某些复杂的排版可能无法完美保留。

import com.spire.doc.*;import com.spire.pdf.*;public class AdvancedConversion { public static void main(String[] args) { // 加载Word文档 Document document = new Document(); document.loadFromFile(\"Sample.docx\"); // 将Word转换为PDF PdfDocument pdf = new PdfDocument(); pdf.loadFromDocument(document); // 保存PDF文档 pdf.saveToFile(\"Sample.pdf\", FileFormat.PDF); // 释放资源 document.dispose(); pdf.dispose(); }}

在该代码块中,首先加载了一个Word文档,然后使用Spire.Doc提供的方法将其转换为PDF格式,并保存。需要注意的是,当转换的文件内容复杂,或包含特殊格式时,可能需要额外的参数或处理步骤以保持其原貌。

3.3.2 打印任务的管理与错误处理

文档的打印功能也是办公自动化中的重要环节。Spire.Office.jar 提供了一系列工具类,帮助开发人员管理和执行打印任务。

import com.spire.doc.*;import com.spire打印.*;public class PrintManagement { public static void main(String[] args) { Document document = new Document(); try { document.loadFromFile(\"Sample.docx\"); PrinterSettings printerSettings = new PrinterSettings(); printerSettings.setPrinterName(\" printers/打印机名称\"); document.print(printerSettings); } catch (Exception e) { System.out.println(e.getMessage()); } finally { document.dispose(); } }}

在这个代码示例中,我们加载了一个Word文档,并设置打印参数(如打印机名称)。通过调用 document.print(printerSettings) 进行打印,并且在打印前捕获可能出现的异常,以便于错误处理和资源的正确释放。需要注意的是,在不同的操作系统和环境中,打印设置可能需要进行相应的调整。

通过本章节的介绍,我们可以了解到Spire.Office.jar在文档创建、编辑、转换和打印方面提供的强大功能以及高级应用的处理方法。这一系列的工具和方法为开发人员提供了强大的支持,使得在Java平台上的文档处理变得简单高效。

4. .jar文件格式及其特性

4.1 .jar文件基础与作用

4.1.1 .jar文件的定义和使用场景

在Java编程世界中,.jar文件格式被广泛使用,它是一种压缩文件格式,用于封装Java类文件、元数据、声音、图片等资源文件。简而言之,.jar文件就是一种Java归档文件,可以看作是ZIP格式的一种变体。它使得开发者能够将大量的类和资源文件打包成一个文件,便于分发、部署和使用。.jar文件在Java应用中承担了代码库、插件和小型应用服务器的角色。使用场景包括但不限于:

  • Java类库:通过打包成.jar文件,可以将一系列相关类库打包成一个单元,便于在项目中引用。
  • 应用程序:小型独立应用程序可以通过.jar文件进行打包,用户下载后可以双击直接运行。
  • 插件和扩展:许多应用平台,例如Eclipse IDE,允许安装.jar格式的插件来扩展其功能。

4.1.2 .jar文件的构成和特性

一个标准的.jar文件由三个主要部分组成:文件列表、压缩数据和manifest(清单)文件。Manifest文件位于META-INF目录下,提供了关于.jar文件自身和包含的文件的元数据信息。例如,它可以指定哪个类是应用程序的入口点,还可以包含签名信息用于验证文件的完整性和来源。.jar文件的特性包括:

  • 可移植性:.jar文件遵循ZIP文件标准,可以在任何支持ZIP的系统上创建和打开。
  • 再压缩:.jar文件可以包含对自身内容的进一步压缩,这使得它们非常适合处理大量小文件。
  • 签名:.jar文件支持数字签名,这允许在不破坏现有应用程序代码的情况下对其进行验证。
  • 类加载:Java运行时环境(JRE)内置了对.jar文件的支持,能够从.jar文件中加载类和资源。

4.2 .jar文件的管理与部署

4.2.1 管理工具和方法

管理.jar文件可以通过多种工具和方法进行。命令行工具如 jar java -cp 是处理.jar文件的基本方式。同时,集成开发环境(IDE)如IntelliJ IDEA和Eclipse提供更友好的用户界面来管理依赖和打包项目为.jar文件。常见的管理方法包括:

  • 使用Java的jar命令行工具:通过命令行执行jar打包、解压和更新操作。
  • 使用IDE内置打包工具:如IntelliJ IDEA的Artifact功能或Eclipse的Export选项。
  • 使用构建工具:Maven和Gradle等构建工具可以自动化.jar文件的创建和版本管理。
  • 使用版本控制系统:如Git,管理.jar文件的变更历史和协同工作。

4.2.2 .jar文件在不同环境下的部署策略

部署.jar文件涉及将它们放置在适合运行Java代码的环境中。这些环境可能包括本地计算机、服务器或者云平台。有效的部署策略取决于应用的特定需求和目标运行环境。部署策略主要包括:

  • 单体应用部署:对于单体应用,只需要将.jar文件放置在目标服务器上,并使用 java -jar 命令启动即可。
  • 微服务部署:对于微服务架构,每个微服务都是独立运行的.jar文件,通常使用容器化技术,如Docker,进行部署。
  • 云平台部署:在云平台上部署时,可以使用云服务商提供的特定工具和服务,如AWS的Elastic Beanstalk。
  • 自动化部署:借助持续集成/持续部署(CI/CD)工具如Jenkins、GitLab CI等,可以实现.jar文件的自动化部署和管理。

了解了.jar文件的基础和作用,以及如何管理和部署.jar文件,可以更好地掌握Java应用的生命周期管理。这不仅能够提高开发效率,还能保证应用的可维护性和可扩展性。随着技术的演进,新的工具和实践不断出现,开发者应保持对最佳实践的关注和学习。

5. 示例代码和许可协议内容

5.1 示例代码的功能展示

5.1.1 示例代码的基本结构和功能

示例代码通常是作为软件包或库的一部分,用来向开发者展示如何使用该软件包或库中的功能。Spire.Office.jar提供了一系列丰富的API用于处理Office文档,示例代码在这方面起到了示范作用。这些代码片段通常包括创建文档、编辑、格式化、保存以及转换文档等多种操作。

以下是一个使用Spire.Office.jar库创建一个简单的Word文档的示例代码:

import com.spire.doc.*;import com.spire.doc.documents.*;public class CreateSimpleWord { public static void main(String[] args) { // 创建一个文档对象 Document document = new Document(); // 添加一个段落 Section section = document.addSection(); Paragraph paragraph = section.addParagraph(); paragraph.appendText(\"Hello, World!\"); // 保存文档到指定路径 String output = \"output.docx\"; document.saveToFile(output, FileFormat.Docx_2013); document.dispose(); System.out.println(\"Word document was successfully created: \" + output); }}

该示例代码展示了创建一个简单Word文档的整个过程,包括初始化 Document 对象,添加一个 Section ,在该 Section 中添加一个 Paragraph ,以及最终保存文档为 .docx 格式。

5.1.2 示例代码在实际开发中的应用

示例代码能够帮助开发者快速掌握如何在实际的项目中运用Spire.Office.jar来处理Office文档。例如,在开发办公自动化软件时,可能需要生成报告文档或者对现有文档进行编辑和格式设置,示例代码可以作为脚手架快速搭建起项目的基础框架。

开发者可以参考示例代码,根据实际需求进行定制化开发。例如,将文本内容替换为从数据库或API获取的数据,或者根据用户输入动态添加更多内容到文档中。

5.2 许可协议的解读与遵守

5.2.1 许可协议的主要条款

软件的许可协议是规定用户如何使用软件的一份法律文件。Spire.Office.jar作为商业库,由北京华创瑞泽软件股份有限公司提供,并配有相应的许可协议。主要条款通常包括:

  • 版权信息,明确所有者及版权归属。
  • 使用条款,确定用户如何合法使用软件。
  • 许可类型,例如是个人使用、内部使用或商业使用。
  • 版权和专利声明,声明软件包含的知识产权。
  • 限制和禁止条款,如禁止非法分发、修改或逆向工程。
  • 责任限制,限定提供商的法律责任范围。

开发者需要仔细阅读和理解这些条款,以确保在法律允许的范围内使用软件。

5.2.2 合规使用和避免侵权的建议

为了避免因使用不当而造成的侵权问题,开发者应该:

  • 阅读并理解许可协议的全部条款。
  • 在公司或团队内部进行许可协议的培训,确保所有相关人员都了解相关规则。
  • 使用Spire.Office.jar时遵守协议规定,例如只在授权的数量和范围内使用。
  • 在需要分发或部署使用了Spire.Office.jar的应用时,确保已经获取了正确的部署许可。
  • 在应用的文档或帮助页面中明确声明使用的第三方库及其许可信息。

合规使用Spire.Office.jar不仅保护了开发者和公司的利益,同时也尊重了软件提供者的知识产权,有助于维护整个软件生态的健康发展。

6. 样本项目和代码片段

在本章节中,我们将探讨如何构建和运行样本项目以及如何分析和实践代码片段。这有助于您更好地理解如何将Spire.Office.jar应用于您的开发环境,并通过具体代码来提高文档处理的能力。

6.1 样本项目的构建和运行

6.1.1 样本项目的设计理念和结构

样本项目旨在展示如何使用Spire.Office.jar来处理Word文档,Excel工作表和PDF文件。它的设计理念是通过一个简单的接口实现文档的创建、编辑、转换和打印等功能,使开发者能够快速理解库的使用方法,并将其集成到自己的项目中。

样本项目的基本结构如下:

  • src :源代码目录,包含了所有使用Spire.Office.jar的Java文件。
  • lib :库文件目录,存放Spire.Office.jar以及可能的依赖库。
  • resources :资源文件目录,存放项目中需要使用的各种资源,如模板、配置文件等。
  • build.xml :Ant构建脚本,用于自动化构建过程。
  • pom.xml :Maven项目对象模型文件,用于定义项目的构建配置和依赖关系。

6.1.2 如何导入和运行样本项目

导入项目到您的IDE(例如IntelliJ IDEA或Eclipse)非常简单:

  1. 打开您的IDE,选择 “File” -> “New” -> “Project from Existing Sources…”。
  2. 导航到样本项目的根目录,并选择它,然后按照您的IDE的指示导入项目。
  3. 确保所有依赖项都已正确解析。如果您使用的是Maven,它将自动处理依赖关系。
  4. 如果您需要手动添加库,右键点击项目,选择 “Properties”,然后在 “Java Build Path” -> “Libraries” 中添加Spire.Office.jar。

运行项目:

  1. 在IDE中找到主类,通常会有一个带有 main 方法的类。
  2. 右键点击该主类,并选择 “Run”。
  3. 观察控制台输出,检查程序是否成功执行,并查看是否生成了预期的文档。

6.2 代码片段的分析与实践

6.2.1 代码片段的选取和分析

在样本项目中,我们选取了几个关键代码片段来演示Spire.Office.jar的核心功能。下面是一个创建和编辑Word文档的简单代码片段:

import com.spire.doc.*;public class CreateAndEditWord { public static void main(String[] args) { // 创建文档实例 Document document = new Document(); // 添加一个新的节 Section section = document.addSection(); // 添加一个段落 Paragraph paragraph = section.addParagraph(); paragraph.appendText(\"Hello, this is a sample text created by Spire.Doc for Java.\"); // 保存文档 document.saveToFile(\"Sample.docx\", FileFormat.Docx); }}

6.2.2 代码片段在项目中的应用实例

您可以将上述代码片段作为项目的一部分,并在自己的应用程序中进行调用。例如,您可以创建一个服务类,封装文档创建的逻辑,然后在需要的地方调用该服务:

public class DocumentService { public void createSampleDocument() { Document document = new Document(); Section section = document.addSection(); Paragraph paragraph = section.addParagraph(); paragraph.appendText(\"Hello, this is a sample text created by Spire.Doc for Java.\"); document.saveToFile(\"Sample.docx\", FileFormat.Docx); }}// 在您的主应用程序中使用DocumentServicepublic class MainApp { public static void main(String[] args) { DocumentService service = new DocumentService(); service.createSampleDocument(); }}

这个例子演示了如何将文档处理功能封装在一个服务类中,这样可以在应用程序的多个位置重用该功能,而无需重复代码。您可以根据需要进一步扩展该服务类,以包含更多复杂的文档操作和业务逻辑。

通过运行这个项目,您将看到一个简单的Word文档被创建,并且包含了预设的文本内容。这个例子是实际应用中的起点,您可以根据实际需求添加更多的功能和复杂的操作。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:Spire.Office.jar是一个强大的Java库,提供了处理Word、Excel、PowerPoint等多种Office文档的能力。它支持文档的创建、编辑、转换和打印。本文深入解析了Spire.Office.jar的核心特性、使用方法以及相关的许可协议。包含代码示例和API文档等资源目录,为Java开发者提供了一站式的文档处理解决方案,有助于提高开发效率并简化项目集成。

本文还有配套的精品资源,点击获取
menu-r.4af5f7ec.gif