Spire.Presentation 6.2.2已发布。该版本支持了替换视频文件的功能并且修复了加载和合并文档PPT文档时出现的问题。
新功能:
Presentation ppt= new Presentation();
ppt.LoadFromFile(inputFile);
VideoCollection videos = ppt.Videos;
foreach (ISlide sld in ppt.Slides)
{
foreach (Spire.Presentation.Shape sp in sld.Shapes)
{
if (sp is IVideo)
{
IVideo video = sp as IVideo;
byte[] bts = File.ReadAllBytes("C:/test.mp4");
VideoData videoData = videos.Append(bts);
video.EmbeddedVideoData = videoData;
}
}
}
ppt.SaveToFile(outputFile, FileFormat.Pptx2013);
问题修复:
https://www.e-iceblue.cn/Downloads/Spire-Presentation-NET.html
Spire.PDF 7.2.5已发布。该版本新增替换文本方法修复了转换PDF到图片等问题。详情请阅读以下内容。
新功能:
PdfTextReplacer ptr = new PdfTextReplacer(page);
ptr.ReplaceAllText("LONDON MIDLAND", "West Midlands Railway");//全部替换
ptr.ReplaceText("LONDON MIDLAND", "West Midlands Railway");//仅替换一个
问题修复:
该文将介绍如何使用Spire.PDF for .NET 检测PDF文档是否加密。Spire.PDF 提供方法 IsPasswordProtected(string fileName) 返回一个布尔值。如果返回值为true,则表明该文档被加密。
using Spire.Pdf;
using System;
namespace PdfDemo
{
class Program
{
static void Main(string[] args)
{
string fileName = "Sample.pdf";
bool value = PdfDocument.IsPasswordProtected(fileName);
Console.WriteLine(value);
Console.ReadKey();
}
}
}
Imports Spire.Pdf
Imports System
Namespace PdfDemo
Class Program
Private Shared Sub Main(ByVal args() As String)
Dim fileName As String = "Sample.pdf"
Dim value As Boolean = PdfDocument.IsPasswordProtected(fileName)
Console.WriteLine(value)
Console.ReadKey
End Sub
End Class
End Namespace
运行项目后,将返回结果如下:

本文介绍使用Spire.XLS for .NET来复制Excel中的指定单元格区域,包括复制单元格文本及单元格样式。复制时,可在工作簿中的同一个sheet工作表内复制,也可在不同工作簿的不同sheet工作表间复制。
在同一个sheet工作表中复制
using Spire.Xls;
namespace CopyRanges_XLS
{
class Program
{
static void Main(string[] args)
{
//加载Excel工作簿
Workbook book = new Workbook();
book.LoadFromFile("sample.xlsx", ExcelVersion.Version2013);
//获取第一个工作表
Worksheet sheet = book.Worksheets[0];
//将源数据数据复制到目标单元格区域
sheet.Copy(sheet.Range["A1:F1"], sheet.Range["A6:F6"], true);
//保存文档
book.SaveToFile("result.xlsx", ExcelVersion.Version2013);
System.Diagnostics.Process.Start("result.xlsx");
}
}
}
Imports Spire.Xls
Namespace CopyRanges_XLS
Class Program
Private Shared Sub Main(args As String())
'加载Excel工作簿
Dim book As New Workbook()
book.LoadFromFile("sample.xlsx", ExcelVersion.Version2013)
'获取第一个工作表
Dim sheet As Worksheet = book.Worksheets(0)
'将源数据数据复制到目标单元格区域
sheet.Copy(sheet.Range("A1:F1"), sheet.Range("A6:F6"), True)
'保存文档
book.SaveToFile("result.xlsx", ExcelVersion.Version2013)
System.Diagnostics.Process.Start("result.xlsx")
End Sub
End Class
End Namespace

在不同工作簿的sheet工作表间复制
using Spire.Xls;
namespace CopyRanges2
{
class Program
{
static void Main(string[] args)
{
//加载Excel工作簿1
Workbook book1 = new Workbook();
book1.LoadFromFile("sample.xlsx", ExcelVersion.Version2013);
//加载Excel工作簿2
Workbook book2 = new Workbook();
book2.LoadFromFile("test.xlsx");
//获取工作表
Worksheet sheet1 = book1.Worksheets[0];
Worksheet sheet2 = book2.Worksheets[1];
//将源数据数据复制到目标单元格区域
sheet1.Copy(sheet1.Range["A1:F1"], sheet2.Range["B4:G4"], true);
//保存工作簿2
book2.SaveToFile("result2.xlsx", ExcelVersion.Version2013);
System.Diagnostics.Process.Start("result2.xlsx");
}
}
}
Imports Spire.Xls
Namespace CopyRanges2
Class Program
Private Shared Sub Main(args As String())
'加载Excel工作簿1
Dim book1 As New Workbook()
book1.LoadFromFile("sample.xlsx", ExcelVersion.Version2013)
'加载Excel工作簿2
Dim book2 As New Workbook()
book2.LoadFromFile("test.xlsx")
'获取工作表
Dim sheet1 As Worksheet = book1.Worksheets(0)
Dim sheet2 As Worksheet = book2.Worksheets(1)
'将源数据数据复制到目标单元格区域
sheet1.Copy(sheet1.Range("A1:F1"), sheet2.Range("B4:G4"), True)
'保存工作簿2
book2.SaveToFile("result2.xlsx", ExcelVersion.Version2013)
System.Diagnostics.Process.Start("result2.xlsx")
End Sub
End Class
End Namespace

Spire.Office for Java 4.2.0 已发布。本次更新带来了一些新功能,例如:Spire.Doc for Java 新增了锁住内容控件的功能;Spire.XLS for Java 支持数字签名和透视表分组和取消分组的功能。此外,该版本还修复了大量问题。详情请阅读以下内容。
获取Spire.Office for Java 4.2.0,请点击:https://www.e-iceblue.cn/Downloads/Spire-Office-JAVA.html
问题修复:
问题修复:
新功能:
sd.getSDTProperties().setLockSettings(LockSettingsType.SDT_Locked);
sd.getSDTProperties().setLockSettings(LockSettingsType.SDT_Content_Locked);
问题修复:
问题修复:
新功能:
GetCertAndPrivateKeyFromPFX certAndPrivateKeyFromPFX=new GetCertAndPrivateKeyFromPFX();
HashMap<X509Certificate,PrivateKey> hashMap=certAndPrivateKeyFromPFX.getCertAndPrivateKeyFromPFX(inputFile_pfx);
IDigitalSignatures dsc = workbook.addDigitalSignature(hashMap.keySet().iterator().next(), hashMap.get(hashMap.keySet().iterator().next()), "e-iceblue", calendar.getTime());
workbook.isDigitallySigned();
workbook.removeAllDigitalSignatures();
//Group
Workbook wb = new Workbook();
wb.loadFromFile(inputFile);
Worksheet sheet = wb.getWorksheets().get("Sheet1");
XlsPivotTable pt = (XlsPivotTable)sheet.getPivotTables().get(0);
PivotField r1 = (PivotField)pt.getPivotFields().get("Count");
pt.setManualGroupField(r1,7,15, EnumSet.of(PivotGroupByType.RangeOfValues),5);
wb.saveToFile(outputFile, ExcelVersion.Version2013);
wb.dispose();
//Ungroup
Workbook wb = new Workbook();
wb.loadFromFile(inputFile);
Worksheet sheet = wb.getWorksheets().get("Sheet1");
XlsPivotTable pt = (XlsPivotTable)sheet.getPivotTables().get(0);
PivotField r1 = (PivotField)pt.getPivotFields().get("Count");
pt.setUngroup(r1);
wb.saveToFile(outputFile, ExcelVersion.Version2013);
wb.dispose();
问题修复:
Spire.XLS for Java 4.2.0已发布。该版本支持数字签名,增加透视表分组和取消分组的功能。此外,该版本还增强了转换Excel到图片/PDF的功能。详情请阅读以下内容。
新功能:
GetCertAndPrivateKeyFromPFX certAndPrivateKeyFromPFX=new GetCertAndPrivateKeyFromPFX();
HashMap<X509Certificate,PrivateKey> hashMap=certAndPrivateKeyFromPFX.getCertAndPrivateKeyFromPFX(inputFile_pfx);
IDigitalSignatures dsc = workbook.addDigitalSignature(hashMap.keySet().iterator().next(), hashMap.get(hashMap.keySet().iterator().next()), "e-iceblue", calendar.getTime());
workbook.isDigitallySigned();
workbook.removeAllDigitalSignatures();
//Group
Workbook wb = new Workbook();
wb.loadFromFile(inputFile);
Worksheet sheet = wb.getWorksheets().get("Sheet1");
XlsPivotTable pt = (XlsPivotTable)sheet.getPivotTables().get(0);
PivotField r1 = (PivotField)pt.getPivotFields().get("Count");
pt.setManualGroupField(r1,7,15, EnumSet.of(PivotGroupByType.RangeOfValues),5);
wb.saveToFile(outputFile, ExcelVersion.Version2013);
wb.dispose();
//Ungroup
Workbook wb = new Workbook();
wb.loadFromFile(inputFile);
Worksheet sheet = wb.getWorksheets().get("Sheet1");
XlsPivotTable pt = (XlsPivotTable)sheet.getPivotTables().get(0);
PivotField r1 = (PivotField)pt.getPivotFields().get("Count");
pt.setUngroup(r1);
wb.saveToFile(outputFile, ExcelVersion.Version2013);
wb.dispose();
问题修复:
Spire.Doc 9.2.0已发布。该版本增强了转换Word到PDF的功能,并且修复了加载Word文档时出现的问题。详情请阅读以下内容。
问题修复:
Spire.PDF 7.2.0已发布。该版本支持检测PDF是否是加密文档,支持检测PDF是否是加密文档,增强了转换PDF 到图片/Doc/SVG的功能。此外,该版本还修复了打印PDF时出现的问题。详情请阅读以下内容。
新功能:
PdfGrayConverter convert = new PdfGrayConverter(inputFile);
convert.ToGrayPdf(outputFile);
PdfDocument.IsPasswordProtected(inputFile);
public CustomPKCS7SignatureFormatter(X509Certificate2 certificate)
{
if (null == certificate)
{ throw new ArgumentNullException("certificate"); }
m_certificate = certificate;
Parameters.Add("Filter", "Adobe.PPKMS");
Parameters.Add("SubFilter", "adbe.pkcs7.detached");
Parameters.Add("SignatureLength", 975);
Parameters.Add("SoftwareModuleName", "Create by Spire.Pdf");
}
问题修复:
前面我们介绍了如何使用 Spire.Doc for Java 添加多行文本水印到 Word 文档。该文将详细介绍在Word页眉中添加多行图片水印的效果。
import com.spire.doc.Document;
import com.spire.doc.FileFormat;
import com.spire.doc.HeaderFooter;
import com.spire.doc.Section;
import com.spire.doc.documents.Paragraph;
import com.spire.doc.documents.TextWrappingStyle;
import com.spire.doc.fields.DocPicture;
public class WordImageWatermark {
public static void main(String[] args) throws Exception {
//加载示例文档
Document doc=new Document();
doc.loadFromFile("https://cdn.e-iceblue.cn/Sample.docx");
//加载图片
DocPicture picture = new DocPicture(doc);
picture.loadImage("https://cdn.e-iceblue.cn/Logo.png");
//设置图片环绕方式
picture.setTextWrappingStyle(TextWrappingStyle.Behind);
for (int n = 0; n < doc.getSections().getCount(); n++) {
Section section = doc.getSections().get(n);
//获取section的页眉
HeaderFooter header = section.getHeadersFooters().getHeader();
Paragraph paragrapg1;
if(header.getParagraphs().getCount()>0){
paragrapg1=header.getParagraphs().get(0);
}else {
//添加段落到页眉
paragrapg1 = header.addParagraph();
}
for (int p = 0; p < 3; p++) {
for (int q = 0; q < 2; q++) {
//复制图片并设置多行多列位置
picture = (DocPicture)picture.deepClone();
picture.setVerticalPosition(100 + 200 * p);
picture.setHorizontalPosition(50 + 210 * q);
paragrapg1.getChildObjects().add(picture);
}
}
}
//保存文档
doc.saveToFile("多行图片水印.docx", FileFormat.Docx_2013);
}
}
效果图:

本文介绍使用Spire.Doc for Java给Word不同页面设置不同背景的方法。可设置纯色背景、图片背景等。设置背景时,可以下两种方法设置,具体见下文。
1、仅设置首页页面背景和其他页面不同
1.1 设置纯色背景
import com.spire.doc.*;
import com.spire.doc.documents.Paragraph;
import com.spire.doc.documents.ShapeType;
import com.spire.doc.documents.VerticalOrigin;
import com.spire.doc.fields.ShapeObject;
import java.awt.*;
public class DifferentPageBackground1 {
public static void main(String[] args) {
//加载Word测试文档
Document doc = new Document();
doc.loadFromFile("https://cdn.e-iceblue.cn/test.docx");
//获取第一节
Section section = doc.getSections().get(0);
//获取页面宽度、高度
float width = (float) section.getPageSetup().getPageSize().getWidth();
float height = (float) section.getPageSetup().getPageSize().getHeight();
//设置首页页眉页脚不同
section.getPageSetup().setDifferentFirstPageHeaderFooter(true);
//设置首页页面背景颜色
HeaderFooter firstpageheader = section.getHeadersFooters().getFirstPageHeader();//获取首页页眉
firstpageheader.getParagraphs().clear();//清除首页页眉默认的段落格式
Paragraph firstpara= firstpageheader.addParagraph();//重新添加段落
ShapeObject shape = firstpara.appendShape(width, height, ShapeType.Rectangle);//添加形状
shape.setBehindText(true);//设置形状衬于文字下方
shape.setHorizontalAlignment(ShapeHorizontalAlignment.Center);//设置对齐方式,铺满页面
shape.setVerticalOrigin(VerticalOrigin.Top_Margin_Area);
shape.setFillColor(new Color(255,228,196));//形状颜色
//同理,设置其他页面背景颜色
HeaderFooter otherheader = section.getHeadersFooters().getHeader();
otherheader.getParagraphs().clear();
Paragraph otherpara = otherheader.addParagraph();
ShapeObject shape2 = otherpara.appendShape(width, height, ShapeType.Rectangle);//添加形状
shape2.setBehindText(true);//设置形状衬于文字下方
shape2.setHorizontalAlignment(ShapeHorizontalAlignment.Center);//设置对齐方式,铺满页面
shape2.setVerticalOrigin(VerticalOrigin.Top_Margin_Area);
shape2.setFillColor(new Color(221,160,221));//形状颜色
//保存文档
doc.saveToFile("ColorBackground.docx",FileFormat.Docx_2013);
doc.dispose();
}
}

1.2 设置图片背景
import com.spire.doc.*;
import com.spire.doc.documents.Paragraph;
import com.spire.doc.documents.TextWrappingStyle;
import com.spire.doc.documents.VerticalOrigin;
import com.spire.doc.fields.DocPicture;
public class DifferentPageBackground1 {
public static void main(String[] args) {
//加载Word测试文档
Document doc = new Document();
doc.loadFromFile("https://cdn.e-iceblue.cn/test.docx");
//获取第一节
Section section = doc.getSections().get(0);
//获取页面宽度、高度
float width = (float) section.getPageSetup().getPageSize().getWidth();
float height = (float) section.getPageSetup().getPageSize().getHeight();
//设置首页页眉页脚不同
section.getPageSetup().setDifferentFirstPageHeaderFooter(true);
//设置首页页面背景图片
HeaderFooter firstpageheader = section.getHeadersFooters().getFirstPageHeader();
firstpageheader.getParagraphs().clear();
Paragraph firstpara= firstpageheader.addParagraph();
DocPicture pic0 = firstpara.appendPicture("1.png");//添加图片到首页页眉段落
pic0.setTextWrappingStyle(TextWrappingStyle.Behind);
pic0.setHorizontalAlignment(ShapeHorizontalAlignment.Center);
pic0.setVerticalOrigin(VerticalOrigin.Top_Margin_Area);
pic0.setWidth(width);
pic0.setHeight(height);
//同理,设置其他页面背景图片
HeaderFooter otherheader = section.getHeadersFooters().getHeader();
otherheader.getParagraphs().clear();
Paragraph otherpara = otherheader.addParagraph();
DocPicture pic1 = otherpara.appendPicture("2.png");
pic1.setTextWrappingStyle(TextWrappingStyle.Behind);
pic1.setHorizontalAlignment(ShapeHorizontalAlignment.Center);
pic1.setVerticalOrigin(VerticalOrigin.Top_Margin_Area);
pic1.setWidth(width);
pic1.setHeight(height);
//保存文档
doc.saveToFile("ImageBackground.docx",FileFormat.Docx_2013);
doc.dispose();
}
}

2、设置多个页面背景不同
给多个页面设置不同背景时,是基于不同节上的页眉来添加形状或者图片。本次测试文档中,已设置了多个节。如需手动在文档中插入分节符,可参考这篇文章。
2.1 设置纯色背景
import com.spire.doc.*;
import com.spire.doc.documents.*;
import com.spire.doc.fields.ShapeObject;
import java.awt.*;
public class DifferentPageBackground2 {
public static void main(String[] args) {
//加载Word测试文档
Document doc = new Document();
doc.loadFromFile("https://cdn.e-iceblue.cn/test.docx");
//获取第一节中的页眉,添加形状,设置颜色,铺满页面
Section section1 = doc.getSections().get(0);
int width = (int) section1.getPageSetup().getPageSize().getWidth();
int height = (int) section1.getPageSetup().getPageSize().getHeight();
HeaderFooter header1 = section1.getHeadersFooters().getHeader();
header1.getParagraphs().clear();
Paragraph paragraph1 = header1.addParagraph();
ShapeObject shape1 = paragraph1.appendShape(width,height, ShapeType.Rectangle);
shape1.setBehindText(true);
shape1.setHorizontalAlignment(ShapeHorizontalAlignment.Center);
shape1.setVerticalOrigin(VerticalOrigin.Top_Margin_Area);
shape1.setFillColor(new Color(144,238,144));
//获取第二节中的页眉,添加形状
Section section2 = doc.getSections().get(1);
HeaderFooter header2 = section2.getHeadersFooters().getHeader();
header2.getParagraphs().clear();
Paragraph paragraph2 = header2.addParagraph();
ShapeObject shape2 = paragraph2.appendShape(width,height, ShapeType.Rectangle);
shape2.setBehindText(true);
shape2.setHorizontalAlignment(ShapeHorizontalAlignment.Center);
shape2.setVerticalOrigin(VerticalOrigin.Top_Margin_Area);
shape2.setFillColor(new Color(255,182,193));
//获取第三节中的页眉,添加形状
Section section3 = doc.getSections().get(2);
HeaderFooter header3 = section3.getHeadersFooters().getHeader();
header3.getParagraphs().clear();
Paragraph paragraph3 = header3.addParagraph();
ShapeObject shape3 = paragraph3.appendShape(width,height, ShapeType.Rectangle);
shape3.setBehindText(true);
shape3.setHorizontalAlignment(ShapeHorizontalAlignment.Center);
shape3.setVerticalOrigin(VerticalOrigin.Top_Margin_Area);
shape3.setFillColor(new Color(135,206,235));
//保存文档
doc.saveToFile("ColorBackground2.docx",FileFormat.Docx_2013);
doc.dispose();
}
}

2.2 设置图片背景
import com.spire.doc.*;
import com.spire.doc.documents.*;
import com.spire.doc.fields.DocPicture;
public class DifferentPageBackground2 {
public static void main(String[] args) {
//加载Word测试文档
Document doc = new Document();
doc.loadFromFile("https://cdn.e-iceblue.cn/test.docx");
//获取第一节中的页眉,添加图片,调整图片格式,铺满页面
Section section1 = doc.getSections().get(0);
int width = (int) section1.getPageSetup().getPageSize().getWidth();
int height = (int) section1.getPageSetup().getPageSize().getHeight();
HeaderFooter header1 = section1.getHeadersFooters().getHeader();
header1.getParagraphs().clear();
Paragraph para1= header1.addParagraph();
DocPicture pic1 = para1.appendPicture("1.png");
pic1.setTextWrappingStyle(TextWrappingStyle.Behind);
pic1.setHorizontalAlignment(ShapeHorizontalAlignment.Center);
pic1.setVerticalOrigin(VerticalOrigin.Top_Margin_Area);
pic1.setWidth(width);//设置图片宽度、高度等(铺满页面)
pic1.setHeight(height);
//同理设置第二节页眉中的图片
Section section2 = doc.getSections().get(1);
HeaderFooter header2 = section2.getHeadersFooters().getHeader();
header2.getParagraphs().clear();
Paragraph para2= header2.addParagraph();
DocPicture pic2 = para2.appendPicture("2.png");
pic2.setTextWrappingStyle(TextWrappingStyle.Behind);
pic2.setHorizontalAlignment(ShapeHorizontalAlignment.Center);
pic2.setVerticalOrigin(VerticalOrigin.Top_Margin_Area);
pic2.setWidth(width);
pic2.setHeight(height);
//同理设置第三节中的页眉中的图片
Section section3 = doc.getSections().get(2);
HeaderFooter header3 = section3.getHeadersFooters().getHeader();
header3.getParagraphs().clear();
Paragraph para3= header3.addParagraph();
DocPicture pic3 = para3.appendPicture("3.png");
pic3.setTextWrappingStyle(TextWrappingStyle.Behind);
pic3.setHorizontalAlignment(ShapeHorizontalAlignment.Center);
pic3.setVerticalOrigin(VerticalOrigin.Top_Margin_Area);
pic3.setWidth(width);
pic3.setHeight(height);
//保存文档
doc.saveToFile("ImageBackground2.docx",FileFormat.Docx_2013);
doc.dispose();
}
}
