当您使用密码保护您的 PDF 文档时,您可以选择指定一组权限。 权限决定用户可以与文件交互。例如,您可以对文档应用权限以禁止用户打印或使用剪切和粘贴操作。在本文中,您将学习如何使用 Spire.PDF for .NET 更改 PDF 文档的安全权限。
首先,您需要添加 Spire.PDF for .NET 包中包含的 DLL 文件作为 .NET 项目中的引用。DLL 文件可以从此链接下载或通过 NuGet 安装。
PM> Install-Package Spire.PDF以下是使用 Spire.PDF for .NET 更改 PDF 文档安全权限的具体步骤:
using Spire.Pdf;
using Spire.Pdf.Security;
namespace ChangeSecurityPermission
{
class Program
{
static void Main(string[] args)
{
//创建一个 PdfDocument 对象
PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile(@"test.pdff");
// 定义用户密码和所有者密码
string userPassword = "user";
string ownerPassword = "owner";
// 使用指定的密码创建安全策略
PdfSecurityPolicy securityPolicy = new PdfPasswordSecurityPolicy(userPassword, ownerPassword);
// 设置加密算法为 AES 128位
securityPolicy.EncryptionAlgorithm = PdfEncryptionAlgorithm.AES_128;
// 允许打印文档
securityPolicy.DocumentPrivilege.AllowPrint = true;
// 允许在文档中填写表单字段
securityPolicy.DocumentPrivilege.AllowFillFormFields = true;
// 允许从文档中复制内容
securityPolicy.DocumentPrivilege.AllowContentCopying = true;
// 使用指定的安全策略加密PDF文档
pdf.Encrypt(securityPolicy);
// 将加密的PDF文档保存到名为"SecurityPermission.pdf"的文件中
pdf.SaveToFile("安全权限.pdf");
}
}
}Imports Spire.Pdf
Imports Spire.Pdf.Security
Namespace ChangeSecurityPermission
Friend Class Program
Private Shared Sub Main(ByVal args As String())
'创建一个 PdfDocument 对象
Dim doc As PdfDocument = New PdfDocument()
'加载示例 PDF 文件
doc.LoadFromFile("https://cdn.e-iceblue.cn/test.pdf")
'指定开启密码
Dim openPsd = String.Empty
'指定权限密码
Dim permissionPsd = "e-iceblue"
'对文档进行加密,并设置文档安全权限
doc.Security.Encrypt(openPsd, permissionPsd, PdfPermissionsFlags.FullQualityPrint, PdfEncryptionKeySize.Key128Bit)
'保存文件
doc.SaveToFile("安全权限.pdf")
End Sub
End Class
End Namespace
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
ODS(OpenDocument Spreadsheet)是一种基于 XML 的文件格式,可以使用 OpenOffice.org 的 Calc 组件打开和建立。与 MS Excel 文件类似,ODS 文件将数据存储在组织成行和列的单元格中,并可以包含文本、数学函数、格式化等内容。有时,你可能需要将一个 Excel 文件转换为 ODS 文件,以确保该文件能被不同操作系统中的更多应用程序查看。本文将演示如何使用 Spire.XLS for Java 以编程的方式完成这项任务。
首先,您需要在 Java 程序中添加 Spire.Xls.jar 文件作为一个依赖项。您可以从这个链接下载 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>
详细步骤如下。
import com.spire.xls.*;
public class toODS {
public static void main(String[] args) {
//创建一个Workbook实例
Workbook workbook = new Workbook();
//加载Excel样本文件
workbook.loadFromFile("C:\\Files\\sample.xlsx");
//转换为ODS文件
workbook.saveToFile("ExcelToODS.ods", FileFormat.ODS);
}
}
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
当你在较新版本的 Microsoft Excel 中打开一个 XLS 文件,如 Excel 2016 或 2019,你会在文件名后的标题栏中看到“兼容模式”。如果你想从兼容模式改为正常模式,你可以把 XLS 文件保存为较新的 Excel 文件格式,如 XLSX。在这篇文章中,你将学习如何在 Java 中使用 Spire.XLS for Java 将 XLS 转换为 XLSX 或 XLSX 转换为 XLS。
首先,您需要在 Java 程序中添加 Spire.Xls.jar 文件作为一个依赖项。您可以从这个链接下载 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>
以下是使用 Spire.XLS for Java 将 XLS 文件转换为 XLSX 格式的步骤。
import com.spire.xls.ExcelVersion;
import com.spire.xls.Workbook;
public class ConvertXlsToXlsx {
public static void main(String[] args){
//初始化一个Workbook类的实例
Workbook workbook = new Workbook();
//加载XLS文件
workbook.loadFromFile("Input.xls");
//将XLS文件保存为XLSX格式
workbook.saveToFile("ToXlsx.xlsx", ExcelVersion.Version2016);
}
}
以下是使用 Spire.XLS for Java 将 XLSX 文件转换为 XLS 格式的步骤。
import com.spire.xls.ExcelVersion;
import com.spire.xls.Workbook;
public class ConvertXlsxToXls {
public static void main(String[] args){
//初始化一个Workbook类的实例
Workbook workbook = new Workbook();
//加载XLSX文件
workbook.loadFromFile("Input.xlsx");
//将XLSX文件保存为XLS格式
workbook.saveToFile("ToXls.xls", ExcelVersion.Version97to2003);
}
}
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
HTML 文件是超文本标记语言文件,允许嵌入图像与对象,可用于创建交互式表单,用来结构化显示信息。通常,要获得 html 文件,可以通过格式转换的方式,本篇文章,我们就将介绍如何实现将 Excel 文件保存为 Html,转换时,使用 Spire.XLS for Java,具体可分为以下两种情况:
首先,您需要在 Java 程序中添加 Spire.Xls.jar 文件作为依赖项。您可以从这个链接下载 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>
转换时执行如下步骤:
import com.spire.xls.*;
public class ExcelToHtml {
public static void main(String[] args) {
//加载Excel工作簿
Workbook wb = new Workbook();
wb.loadFromFile("input.xlsx");
//将工作簿保存为html
wb.saveToFile("WorkbookToHtml.html",FileFormat.HTML);
}
}
转换步骤如下:
import com.spire.xls.*;
import com.spire.xls.core.spreadsheet.HTMLOptions;
public class ExcelToHtml {
public static void main(String[] args) {
//加载Excel工作簿
Workbook wb = new Workbook();
wb.loadFromFile("test.xlsx");
//获取工作表
Worksheet sheet = wb.getWorksheets().get(1);
//设置嵌入图片
HTMLOptions options = new HTMLOptions();
options.setImageEmbedded(true);
//将工作表保存为html
sheet.saveToHtml("SheetToHtml.html",options);
}
}
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
Spire.Office 7.9.2 已发布。本次更新带来了一些新功能,如:Spire.PDF 支持设置书签的缩放类型为承前缩放及添加包含图片的数字签名;Spire.XLS 支持获取条件格式的颜色;Spire.Presentation 支持查找幻灯片中第一个出现的匹配文本并修改其样式。此外,该版本还修复很多已知问题。详情请阅读以下内容。
该版本涵盖了最新版的 Spire.Doc,Spire.PDF,Spire.XLS,Spire.Email,Spire.DocViewer, Spire.PDFViewer,Spire.Presentation,Spire.Spreadsheet, Spire.OfficeViewer, Spire.DocViewer, Spire.Barcode, Spire.DataExport。
版本信息如下:
https://www.e-iceblue.cn/Downloads/Spire-Office-NET.html
新功能:
float width = PdfPageSize.A4.Width * 2;
float height = PdfPageSize.A4.Height;
Stream outputstreaml = File.Open(outputFile, FileMode.Create, FileAccess.ReadWrite, FileShare.Read);
BookletOptions bookletOptions = new BookletOptions();
bookletOptions.BookletBinding = Spire.Pdf.Utilities.PdfBookletBindingMode.Left;//left是左装订,第一页靠右
SizeF size = new SizeF(width, height);
PdfBookletCreator.CreateBooklet(doc, outputstreaml, size, bookletOptions);PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile(https://cdn.e-iceblue.cn/inputFile);
PdfBookmarkCollection bookmarks = pdf.Bookmarks;
for(int i = 0; i<bookmarks.Count; i++)
{
PdfBookmark bookmark = bookmarks[i];
SetBookmarkAction(bookmark);
}
pdf.SaveToFile(outputFile, FileFormat.PDF);
private void SetBookmarkAction(PdfBookmark bookmark)
{
PdfDestination dest = bookmark.Destination;
dest.Mode = PdfDestinationMode.Location;
dest.Zoom = 0;
for (int i = 0; i < bookmark.Count; i++)
{
PdfBookmark childbookmark = bookmark[i];
SetBookmarkAction(childbookmark);
}PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile(https://cdn.e-iceblue.cn/inputFile);
PdfAnnotationCollection annotations = pdf.Pages[0].AnnotationsWidget;
for(int i = 0; i<annotations.Count; i++)
{
PdfDocumentLinkAnnotationWidget anno = annotations[i] as PdfDocumentLinkAnnotationWidget;
PdfDestination dest = anno.Destination;
dest.Mode = PdfDestinationMode.Location;
dest.Zoom = 0;
anno.Destination = dest;
}
pdf.SaveToFile(outputFile, FileFormat.PDF);
pdf.Close();static void Main(string[] args)
{
PdfDocument doc = new PdfDocument();
doc.LoadFromFile(@"test.pdf");
PdfPageBase pagebase = doc.Pages[0];
X509Certificate2 x509 = new X509Certificate2(@"gary.pfx", "e-iceblue");
PdfOrdinarySignatureMaker signatureMaker = new PdfOrdinarySignatureMaker(doc, x509);
IPdfSignatureAppearance signatureAppearance = new PdfCustomSignatureAppearance();
signatureMaker.MakeSignature("Signature", signatureAppearance);
doc.SaveToFile(@"new.pdf", Spire.Pdf.FileFormat.PDF);
doc.Close();
}
public class PdfCustomSignatureAppearance : IPdfSignatureAppearance
{
public void Generate(PdfCanvas g)
{
Image image = Image.FromFile("test.png");
g.DrawImage(PdfImage.FromImage(image), new PointF(0, 0));
}
}问题修复:
新功能:
Color color = cRange.GetConditionFormatsStyle().Color;问题修复:
新功能:
Presentation ppt = new Presentation();
ppt.LoadFromFile(inputFile);
string text = "create";
TextRange textRange = ppt.Slides[0].FindFirstTextAsRange(text);
textRange.Fill.FillType = FillFormatType.Solid;
textRange.Fill.SolidColor.Color = Color.Red;
textRange.FontHeight = 28;
textRange.LatinFont = new TextFont("微软雅黑");
textRange.IsBold = TriState.True;
textRange.IsItalic = TriState.True;
textRange.TextUnderlineType = TextUnderlineType.Double;
textRange.TextStrikethroughType = TextStrikethroughType.Single; Presentation presentation = new Presentation();
presentation.LoadFromFile(https://cdn.e-iceblue.cn/input);
presentation.SaveToPdfOption.ContainHiddenSlides = false;
presentation.SaveToFile(output, FileFormat.PDF);问题修复:
问题修复:
问题修复:
Spire.PDF 8.9已发布。该版本支持设置书签的缩放类型为承前缩放,支持设置超链接的缩放类型为承前缩放以及支持添加包含图片的数字签名。此外还修复了打印PDF后,文本位置不正确等已知问题。详情请阅读以下内容。
新功能:
PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile(https://cdn.e-iceblue.cn/inputFile);
PdfBookmarkCollection bookmarks = pdf.Bookmarks;
for(int i = 0; i<bookmarks.Count; i++)
{
PdfBookmark bookmark = bookmarks[i];
SetBookmarkAction(bookmark);
}
pdf.SaveToFile(outputFile, FileFormat.PDF);
private void SetBookmarkAction(PdfBookmark bookmark)
{
PdfDestination dest = bookmark.Destination;
dest.Mode = PdfDestinationMode.Location;
dest.Zoom = 0;
for (int i = 0; i < bookmark.Count; i++)
{
PdfBookmark childbookmark = bookmark[i];
SetBookmarkAction(childbookmark);
}PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile(https://cdn.e-iceblue.cn/inputFile);
PdfAnnotationCollection annotations = pdf.Pages[0].AnnotationsWidget;
for(int i = 0; i<annotations.Count; i++)
{
PdfDocumentLinkAnnotationWidget anno = annotations[i] as PdfDocumentLinkAnnotationWidget;
PdfDestination dest = anno.Destination;
dest.Mode = PdfDestinationMode.Location;
dest.Zoom = 0;
anno.Destination = dest;
}
pdf.SaveToFile(outputFile, FileFormat.PDF);
pdf.Close();static void Main(string[] args)
{
PdfDocument doc = new PdfDocument();
doc.LoadFromFile(@"test.pdf");
PdfPageBase pagebase = doc.Pages[0];
X509Certificate2 x509 = new X509Certificate2(@"gary.pfx", "e-iceblue");
PdfOrdinarySignatureMaker signatureMaker = new PdfOrdinarySignatureMaker(doc, x509);
IPdfSignatureAppearance signatureAppearance = new PdfCustomSignatureAppearance();
signatureMaker.MakeSignature("Signature", signatureAppearance);
doc.SaveToFile(@"new.pdf", Spire.Pdf.FileFormat.PDF);
doc.Close();
}
public class PdfCustomSignatureAppearance : IPdfSignatureAppearance
{
public void Generate(PdfCanvas g)
{
Image image = Image.FromFile("test.png");
g.DrawImage(PdfImage.FromImage(image), new PointF(0, 0));
}
}问题修复:
Spire.Office for Java 7.9.9 已发布。本次更新带来了一些新功能,如:Spire.Doc for Java 支持比较 Word 文档时以单词层级 (Word level) 进行比较;Spire.Presentation for Java 支持添加 MathML 公式以及在打印对话框中选择打印范围。此外,该版本还成功修复了许多已知问题。详情请阅读以下内容。
获取 Spire.Office for Java 7.9.9请点击:https://www.e-iceblue.cn/Downloads/Spire-Office-JAVA.html
新功能:
Document doc1 = new Document();
doc1.loadFromFile(folder + "a.docx");
Document doc2 = new Document();
doc2.loadFromFile(folder + "b.docx");
CompareOptions options = new CompareOptions();
options.setLevel(ComparisonLevel.Word);
doc1.compare(doc2, "E-iceblue",options);
doc1.saveToFile(result, FileFormat.Docx);问题修复:
新功能:
Presentation ppt = new Presentation();
String mathMLCode="<mml:math xmlns:mml=\"http://www.w3.org/1998/Math/MathML\" xmlns:m=\"http://schemas.openxmlformats.org/officeDocument/2006/math\">" + "<mml:msup><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>+</mml:mo><mml:msqrt><mml:msup><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:msqrt><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:math>";
IAutoShape shape=ppt.getSlides().get(0).getShapes().appendShape(ShapeType.RECTANGLE, new Rectangle2D.Float(30,100,400,30));
shape.getTextFrame().getParagraphs().clear();
ParagraphEx tp=shape.getTextFrame().getParagraphs().addParagraphFromMathMLCode(mathMLCode);
ppt.saveToFile(outputFile, FileFormat.PDF);
ppt.dispose(); Presentation ppt = new Presentation();
ppt.loadFromFile("C:\\1.pptx");
PrinterJob printerJob=PrinterJob.getPrinterJob();
printerJob.setPrintable(ppt);
printerJob.printDialog();
printerJob.print();
ppt.dispose();问题修复:
尊敬的顾客朋友:
2022国庆将至,成都冰蓝科技有限公司全体职工在此向您致以最诚挚的祝福与问候!为满足节日期间的客户需求,我司就国庆放假安排做出如下通知:
因放假给您带来的不便,我们深表歉意。
恭祝:节日快乐,万事顺遂!
邮件地址:
Spire.Doc for Java 10.9.8 已发布。此版本新增支持比较 Word 文档时以单词层级(Word level)进行比较。该版本还增强了 Word 到 PDF 的转换。此外,还修复了更新目录页码显示不正确等已知问题。详情请阅读以下内容。
新功能:
Document doc1 = new Document();
doc1.loadFromFile(folder + "a.docx");
Document doc2 = new Document();
doc2.loadFromFile(folder + "b.docx");
CompareOptions options = new CompareOptions();
options.setLevel(ComparisonLevel.Word);
doc1.compare(doc2, "E-iceblue",options);
doc1.saveToFile(result, FileFormat.Docx);问题修复:
当你编辑一个 PDF 文档时,有时需要删除文档中多余的页面或向文档中添加新的页面。本文将向您演示如何使用 Spire.PDF for Java 在 PDF 文档中添加或删除页面。
首先,你需要在你的 Java 程序中添加 Spire.Pdf.jar 文件作为一个依赖项。该 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.pdf</artifactId>
<version>11.11.11</version>
</dependency>
</dependencies>
下面是如何在一个 PDF 文档的特定位置添加空页并结束的步骤。
import com.spire.pdf.*;
import com.spire.pdf.graphics.PdfMargins;
public class InsertEmptyPage {
public static void main(String[] args) {
//创建一个PdfDocument实例
PdfDocument pdf = new PdfDocument();
//加载一个样本PDF文档
pdf.loadFromFile("https://cdn.e-iceblue.cn/C:\\Users\\Test1\\Desktop\\sample.pdf");
//将空白页插入文档作为第二页
pdf.getPages().insert(1);
//添加一个空白页到文档末尾
pdf.getPages().add(PdfPageSize.A4, new PdfMargins(0, 0));
//将文档保存到另一个文件
pdf.saveToFile("output/insertEmptyPage.pdf");
pdf.close();
}
}
下面是删除一个 PDF 文档的特定页面的步骤。
import com.spire.pdf.*;
public class DeletePage {
public static void main(String[] args) {
//创建一个PdfDocument实例
PdfDocument pdf = new PdfDocument();
//加载一个样本PDF文档
pdf.loadFromFile("https://cdn.e-iceblue.cn/C:\\Users\\Test1\\Desktop\\sample.pdf");
//删除文档的第二页
pdf.getPages().removeAt(1);
//将文档保存到另一个文件
pdf.saveToFile("output/deletePage.pdf");
pdf.close();
}
}
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。