冰蓝科技
|
028-81705109
|
|
微信扫一扫
|

Spire.Cloud 纯前端文档控件

Spire.Presentation for Java 4.5.3已发布。该版本新增方法支持通过流添加图片到PPT,优化了PPT转PDF的内存消耗过多的问题,同时还修复了插入的图片内容不正确的问题。详情请阅读以下内容。

新功能:

问题修复:


获取Spire.Presentation for Java 4.5.3请点击:

https://www.e-iceblue.cn/Downloads/Spire-Presentation-JAVA.html

Spire.PDF for Java 4.5.10已发布。该版本优化了PDF转HTML生成结果文档的大小,修复了添加水印等时出现的问题。详情请阅读以下内容。

问题修复:


获取Spire.PDF for Java 4.5.10请点击:

https://www.e-iceblue.cn/Downloads/Spire-PDF-JAVA.html

SVG 是一种基于 XML 的可缩放矢量图形格式,也是一种开放标准的图形标记语言。因为 SVG 与其他网页标准,如 CSS、 DOM、 JavaScript 等,有较好的兼容性,所以在网页制作中经常会用到。在制作网页时,如果想要将像 Excel 表格等 Office 文档直接添加到网页中展示,是非常困难的。但如果将这样的文档转换为 SVG 文件,就可以轻易呈现在网页上。本文将介绍如何使用 Spire.XLS for Java 将 Excel 文档转换为 SVG 文件

安装 Spire.XLS for Java

首先,您需要在 Java 程序中添加 Spire.XLS for Java 文件作为依赖项。JAR 文件可以从此链接下载。 如果您使用 Maven,则可以将以下代码添加到项目的 pom.xml 文件中,从而轻松地在应用程序中导入 JAR 文件。

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.xls</artifactId>
        <version>15.11.3</version>
    </dependency>
</dependencies>

将 Excel 文档的指定表格转换为 SVG 文件

详细操作步骤如下:

  • Java
import com.spire.xls.*;
import java.io.FileOutputStream;
import java.io.IOException;

public class ExcelToSVG {
    public static void main(String[] args) throws IOException {

        //创建 Workbook 类的对象
        Workbook workbook = new Workbook();

        //从磁盘加载 Excel 文档
        workbook.loadFromFile("C:/示例/示例.xlsx");

        //获取文档第二个表格
        Worksheet sheet = workbook.getWorksheets().get(1);

        //将第二个表格转换为 SVG 文件并保存
        FileOutputStream stream = new FileOutputStream("sheet.svg");
        sheet.toSVGStream(stream, sheet.getFirstRow(), sheet.getFirstColumn(), sheet.getLastRow(), sheet.getLastColumn());
        stream.flush();
        stream.close();
    }
}

Java 将 Excel 转为 SVG

将 Excel 文档的每个表格转换为一个 SVG 文件

详细操作步骤如下:

  • Java
import com.spire.xls.*;
import java.io.FileOutputStream;
import java.io.IOException;

public class ExcelToSVG {
    public static void main(String[] args) throws IOException {

        //创建 Workbook 类的对象
        Workbook workbook = new Workbook();

        //从磁盘加载 Excel 文档
        workbook.loadFromFile("C:/示例/示例.xlsx");
        
        //在文档的所有文档中循环获取所有表格
        for (int i = 0; i < workbook.getWorksheets().size(); i++)
        {
            FileOutputStream stream = new FileOutputStream("sheet"+i+".svg");
            
            //将表格转换为 SVG 文件并保存
            Worksheet sheet = workbook.getWorksheets().get(i);
            sheet.toSVGStream(stream, sheet.getFirstRow(), sheet.getFirstColumn(), sheet.getLastRow(), sheet.getLastColumn());
            stream.flush();
            stream.close();
        }
    }
}

Java 将 Excel 转为 SVG

申请临时 License

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。

本文介绍如何使用Spire.PDF for Java移除PDF文档中的数字签名。

import com.spire.pdf.PdfDocument;
import com.spire.pdf.widget.PdfFieldWidget;
import com.spire.pdf.widget.PdfFormWidget;
import com.spire.pdf.widget.PdfSignatureFieldWidget;

public class RemoveSignature {

    public static void main(String[] args) {

        //创建PdfDocument对象 
        PdfDocument pdf = new PdfDocument();

        //加载PDF文档
        pdf.loadFromFile("https://cdn.e-iceblue.cn/C:\\Users\\Administrator\\Desktop\\Signature.pdf");

        //从文档获取form widget集合
        PdfFormWidget widgets = (PdfFormWidget) pdf.getForm();

        //遍历集合中的每一个元素
        for (int i = 0; i < widgets.getFieldsWidget().getList().size(); i++)
        {
            //获取指定widget
            PdfFieldWidget widget = (PdfFieldWidget)widgets.getFieldsWidget().getList().get(i);

            //判断widget是否为PdfSignatureFieldWidget
            if (widget instanceof PdfSignatureFieldWidget)
            {
                //删除数字签名widget
                widgets.getFieldsWidget().remove(widget);
            }
        }

        //保存文档
        pdf.saveToFile("RemoveSignature.pdf");
    }
}

Java 删除 PDF 中的数字签名

当合并来自不同来源的数据集或复制其他工作表中的数据时,如果数据匹配不正确,可能会导致出现重复的行。这些重复行可能会扭曲数据分析和计算,从而产生不准确的结果。因此,删除重复行是一项经常需要执行的任务。本文将展示如何使用 Spire.XLS for .NET 以编程方式完成此任务。

安装 Spire.XLS for .NET

首先,您需要将 Spire.XLS for .NET 包含的 DLL 文件作为引用添加到您的 .NET 项目中。DLL 文件可以从 此链接 下载,也可以通过 NuGet 安装。

PM> Install-Package Spire.XLS

用 C# 和 VB.NET 删除 Excel 中的重复行

手动删除重复行是一项非常重复且耗时的任务。使用 Spire.XLS for .NET,您可以一次识别并删除所有重复行。详细步骤如下。

  • C#
  • VB.NET
using Spire.Xls;
using System.Linq;

namespace RemoveDuplicateRows
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建Workbook实例
            Workbook workbook = new Workbook();

            //加载示例Excel文档
            workbook.LoadFromFile("测试文档.xlsx");

            //获取指定工作表
            Worksheet sheet = workbook.Worksheets[0];

            //指定需要删除重复记录的单元格区域
            var range = sheet.Range["A1:A" + sheet.LastRow];

            //获取重复的行号
            var duplicatedRows = range.Rows
                   .GroupBy(x => x.Columns[0].DisplayedText)
                   .Where(x => x.Count() > 1)
                   .SelectMany(x => x.Skip(1))
                   .Select(x => x.Columns[0].Row)
                   .ToList();

            //移除重复行      
            for (int i = 0; i < duplicatedRows.Count; i++)
            {
                sheet.DeleteRow(duplicatedRows[i] - i);
            }

            //保存结果文档
            workbook.SaveToFile("删除重复行.xlsx");
        }
    }
}
Imports Spire.Xls

Namespace RemoveDuplicateRows
    Friend Class Program
        Private Shared Sub Main(ByVal args As String())
            '创建Workbook实例
            Dim workbook As Workbook = New Workbook()

            '加载示例Excel文档
            workbook.LoadFromFile("测试文档.xlsx")

            '获取指定工作表
            Dim sheet As Worksheet = workbook.Worksheets(0)

            '指定需要删除重复记录的单元格区域
            Dim range = sheet.Range("A1:A" & sheet.LastRow.ToString())

            '获取重复的行号
            Dim duplicatedRows = range.Rows.GroupBy(Function(x) x.Columns(0).DisplayedText).Where(Function(x) x.Count() > 1).SelectMany(Function(x) x.Skip(1)).[Select](Function(x) x.Columns(0).Row).ToList()

            '移除重复行      
            For i As Integer = 0 To duplicatedRows.Count - 1
                sheet.DeleteRow(duplicatedRows(i) - i)
            Next

            '保存结果文档
            workbook.SaveToFile("删除重复行.xlsx")
        End Sub
    End Class
End Namespace

C#/VB.NET 删除 Excel 中的重复行

申请临时 License

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。

Spire.XLS for Java 4.5.3已发布。该版本新增了getGroupBoxes方法支持获取分组框的功能,支持转换Excel到PDF时指定字体目录的功能,增强了转换Excel到PDF/图片的功能,此外,该版本还修复了添加图片到Excel后被拉伸的问题。详情请阅读以下内容。

新功能:

调整:

问题修复:


下载Spire.XLS for Java 4.5.3请点击:

https://www.e-iceblue.cn/Downloads/Spire-XLS-JAVA.html

本文介绍如何使用Spire.Doc for Java获取Word文档中指定图片的坐标位置、图片大小以及图片的文字环绕方式等。

import com.spire.doc.*;
import com.spire.doc.documents.DocumentObjectType;
import com.spire.doc.documents.Paragraph;
import com.spire.doc.fields.DocPicture;

public class GetPictureDetails {
    public static void main(String[] args) {
        //加载Word测试文档
        Document doc = new Document();
        doc.loadFromFile("测试.docx");

        //遍历section
        for (int a = 0; a<doc.getSections().getCount();a++)
        {
            Section section = doc.getSections().get(a);

            //遍历paragraph段落
            for (int b =0 ;b<section.getParagraphs().getCount();b++)
            {
                Paragraph paragraph = section.getParagraphs().get(b);

                //遍历段落中的对象
                for (int i = 0; i < paragraph.getChildObjects().getCount(); i++)
                {
                    DocumentObject docobj = paragraph.getChildObjects().get(i);

                    //判断对象是否为图片
                    if (docobj.getDocumentObjectType()== DocumentObjectType.Picture)
                    {
                        DocPicture picture = (DocPicture) docobj ;

                        //获取标题为“图片1”的图片
                        if (picture.getTitle().equals("图片1"))
                        {
                            //获取图片坐标位置
                            float x = picture.getHorizontalPosition();
                            float y = picture.getVerticalPosition();

                            //获取图片宽度、高度
                            float width = picture.getWidth();
                            float height = picture.getHeight();

                            //获取图片文字环绕
                            String wrappingstyle = picture.getTextWrappingStyle().toString();//图片文字环绕方式
                            String wrappingtype = picture.getTextWrappingType().toString();//环绕文字类型

                            System.out.println("坐标位置为: X =" + x + "  Y=" + y
                                    + "\n 图片宽:"+ width + "  图片高:" + height
                                    + "\n 图片的文字环绕方式:" + wrappingstyle + "  环绕文字类型:" + wrappingtype);

                        }
                    }
                }
            }
        }

    }
}

获取结果:

Java 获取 Word 中指定图片的位置、大小、环绕方式

Spire.PDF 7.5.7已发布。该版本支持PDF签名添加时间戳时设置用户名和密码,优化了转换PDF到图片/SVG/Excel的功能,并且还修复了合并和打印PDF文档等时出现的问题。详情请阅读以下内容。

新功能:

问题修复:


获取Spire.PDF 7.5.7请点击:

https://www.e-iceblue.cn/Downloads/Spire-PDF-NET.html

本文介绍如何使用Spire.PDF for Java在PDF文档中添加多级列表。

import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfNumberStyle;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.PdfPageSize;
import com.spire.pdf.graphics.*;
import com.spire.pdf.lists.PdfListItem;
import com.spire.pdf.lists.PdfOrderedMarker;
import com.spire.pdf.lists.PdfSortedList;

import java.awt.*;
import java.awt.geom.Point2D;

public class CreateMultiLevelList {

    public static void main(String[] args) {

        //创建PdfDocument对象
        PdfDocument doc = new PdfDocument();

        //设置页边距
        PdfMargins margin = new PdfMargins(60, 60, 40, 40);

        //添加一页
        PdfPageBase page = doc.getPages().add(PdfPageSize.A4, margin);

        //初始化x,y坐标
        float x = 0;
        float y = 15;

        //创建两个画刷
        PdfBrush blackBrush = PdfBrushes.getBlack();
        PdfBrush purpleBrush = PdfBrushes.getPurple();

        //创建两个字体
        PdfTrueTypeFont titleFont = new PdfTrueTypeFont(new Font("微软雅黑",Font.BOLD,9),true);
        PdfTrueTypeFont listFont = new PdfTrueTypeFont(new Font("微软雅黑",Font.PLAIN,9),true);

        //在指定位置绘制标题
        String title = "XHTML常见问题 :";
        page.getCanvas().drawString(title, titleFont, blackBrush, x, y);
        y = y + (float) titleFont.measureString(title).getHeight();
        y = y + 5;

        //创建两个ordered makers,用于设置有序列表的符号
        PdfOrderedMarker marker1 = new PdfOrderedMarker(PdfNumberStyle.Upper_Roman, listFont);
        PdfOrderedMarker marker2 = new PdfOrderedMarker(PdfNumberStyle.Numeric, listFont);

        //创建一个父列表
        String parentListContent = "XHTML 1.0简介\n"
                + "标签和属性语法介绍";
        PdfSortedList parentList = new PdfSortedList(parentListContent);
        parentList.setFont(listFont);
        parentList.setIndent(8);
        parentList.setBrush(purpleBrush);
        parentList.setMarker(marker1);

        //创建一个列表 - "subList_1"
        String subListContent_1 = "什么是XHTML?\n"
                + "XHMTL文档是什么样的?\n"
                + "XHTML和HTML之间有什么关系?\n"
                + "XHTML和XML之间有什么关系?";
        PdfSortedList subList_1 = new PdfSortedList(subListContent_1);
        subList_1.setIndent(16);
        subList_1.setFont(listFont);
        subList_1.setBrush(purpleBrush);
        subList_1.setMarker(marker2);

        //创建另一个列表 -"subList_2"
        String subListContent_2 = "什么是XHTML的元素?\n"
                + "如何在XHTML文档中添加注释?\n"
                + "如何为XHTML元素写一个开始标签?";
        PdfSortedList subList_2 = new PdfSortedList(subListContent_2);
        subList_2.setIndent(16);
        subList_2.setFont(listFont);
        subList_2.setBrush(purpleBrush);
        subList_2.setMarker(marker2);

        //将subList_1设置为父列表第一个元素下的子列表
        PdfListItem item_1 = parentList.getItems().get(0);
        item_1.setSubList(subList_1);

        //将subList_2设置为父列表第二个元素下的子列表
        PdfListItem item_2 = parentList.getItems().get(1);
        item_2.setSubList(subList_2);

        //绘制父列表到指定位置
        PdfTextLayout textLayout = new PdfTextLayout();
        textLayout.setBreak(PdfLayoutBreakType.Fit_Page);
        textLayout.setLayout(PdfLayoutType.Paginate);
        parentList.draw(page,new Point2D.Float(x,y),textLayout);

        //保存文档
        doc.saveToFile("MultiLevelList.pdf");
    }
}

Java 在 PDF 中创建多级列表

本文将介绍如何使用Spire.Doc for Java验证Word文档的限制编辑密码是否正确。

import com.spire.doc.Document;

public class VerifyRestrictEditingPassword {
    public static void main(String[] args) {
        //创建Document实例
        Document document = new Document();
        //加载Word文档
        document.loadFromFile("https://cdn.e-iceblue.cn/Input.docx");

        //验证文档的限制编辑密码是否正确
        boolean result = document.checkProtectionPassWord("123");

        if(!result) {
            System.out.println("密码错误!");
        }
        else {
            System.out.println("密码正确!");
        }
    }
}

结果:

Java 验证 Word 文档的限制编辑密码