Spire.PDF for Java 5.4.0已发布。该版本增强了PDF到Word、PDF到PDFA、PDF到OFD的转换功能,此外,还修复了应用程序在获取 PDF 第一页时抛出“NullPointerException”等已知问题。详情请阅读以下内容。
问题修复:
Word 文档中的图片往往与文本内容密切相关。相比通篇文字的文档,带有图片的文档更具说明性和吸引力。在本文中,您将学习如何使用 Spire.Doc for .NET 以编程方式在 Word 文档中插入图片。使用这款专业的 Word 库,您还可以设置图片的大小、位置以及环绕样式。
首先,您需要添加 Spire.Doc for .NET 包中包含的 DLL 文件作为 .NET 项目中的引用。DLL 文件可以从此链接下载或通过 NuGet 安装。
PM> Install-Package Spire.DocSpire.Doc for .NET 支持常见的环绕样式,例如嵌入型、四周型、紧密型、穿越型、上下型、衬于文字下方以及浮于文字上方。以下是插入图片然后设置环绕样式的详细步骤。
using System.Drawing;
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
namespace WordImage
{
class ImageinWord
{
static void Main(string[] args)
{
//创建一个文档实例
Document document = new Document();
//加载示例文档
document.LoadFromFile("https://cdn.e-iceblue.cn/C:\\Users\\Administrator\\Desktop\\input.docx");
//获取第一节
Section section = document.Sections[0];
//获取两个指定的段落
Paragraph para1 = section.Paragraphs[5];
Paragraph para2 = section.Paragraphs[9];
//在指定段落中插入图片
DocPicture Pic1 = para1.AppendPicture(Image.FromFile(@"C:\Users\Administrator\Desktop\pic1.jpg"));
DocPicture Pic2 = para2.AppendPicture(Image.FromFile(@"C: \Users\Administrator\Desktop\pic2.png"));
//将环绕样式分别设置为环绕型和嵌入型
Pic1.TextWrappingStyle = TextWrappingStyle.Square;
Pic2.TextWrappingStyle = TextWrappingStyle.Inline;
//保存文档
document.SaveToFile("InsertImage.docx", FileFormat.Docx);
}
}
}Imports System.Drawing
Imports Spire.Doc
Imports Spire.Doc.Documents
Imports Spire.Doc.Fields
Namespace WordImage
Class ImageinWord
Shared Sub Main(ByVal args() As String)
'创建一个文档实例
Dim document As Document = New Document()
'加载示例文档
document.LoadFromFile("https://cdn.e-iceblue.cn/C:\\Users\\Administrator\\Desktop\\input.docx")
'获取第一节
Dim section As Section = document.Sections(0)
'获取两个指定的段落
Dim para1 As Paragraph = section.Paragraphs(5)
Dim para2 As Paragraph = section.Paragraphs(9)
'在指定段落中插入图片
Dim Pic1 As DocPicture = para1.AppendPicture(Image.FromFile("C:\Users\Administrator\Desktop\pic1.jpg"))
Dim Pic2 As DocPicture = para2.AppendPicture(Image.FromFile("C:\Users\Administrator\Desktop\pic2.png"))
'将环绕样式分别设置为 环绕型 和 嵌入型
Pic1.TextWrappingStyle = TextWrappingStyle.Square
Pic2.TextWrappingStyle = TextWrappingStyle.Inline
'保存文档
document.SaveToFile("InsertImage.docx", FileFormat.Docx)
End Sub
End Class
End Namespace
Spire.Doc for .NET 提供的 DocPicture.HorizontalPosition 和 DocPicture.VerticalPosition 属性允许您在指定位置插入图片。详细步骤如下。
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using System.Drawing;
namespace InsertImage
{
class Program
{
static void Main(string[] args)
{
//创建一个文档实例
Document document = new Document();
//加载示例文档
document.LoadFromFile("https://cdn.e-iceblue.cn/C:\\Users\\Administrator\\Desktop\\input.docx");
//获取第一节
Section section = document.Sections[0];
//加载图片并将其插入到文档中
DocPicture picture = section.Paragraphs[0].AppendPicture(Image.FromFile(@"C:\Users\Administrator\Desktop\pic.jpg"));
//设置图片的位置
picture.HorizontalPosition = 90.0F;
picture.VerticalPosition = 50.0F;
//设置图片大小
picture.Width = 150;
picture.Height = 150;
//将环绕样式设置为衬于文字下方
picture.TextWrappingStyle = TextWrappingStyle.Behind;
//保存文档
document.SaveToFile("Insert.docx", FileFormat.Docx);
}
}
}Imports Spire.Doc
Imports Spire.Doc.Documents
Imports Spire.Doc.Fields
Imports System.Drawing
Namespace InsertImage
Class Program
Shared Sub Main(ByVal args() As String)
'创建一个文档实例
Dim document As Document = New Document()
'加载示例文档
document.LoadFromFile("https://cdn.e-iceblue.cn/C:\\Users\\Administrator\\Desktop\\input.docx")
'获取第一节
Dim section As Section = document.Sections(0)
'加载图片并将其插入到文档中
Dim picture As DocPicture = section.Paragraphs(0).AppendPicture(Image.FromFile("C:\Users\Administrator\Desktop\pic.jpg"))
'设置图片的位置
picture.HorizontalPosition = 90.0F
picture.VerticalPosition = 50.0F
'设置图片大小
picture.Width = 150
picture.Height = 150
'将环绕样式设置为衬于文字下方
picture.TextWrappingStyle = TextWrappingStyle.Behind
'保存文档
document.SaveToFile("Insert.docx", FileFormat.Docx)
End Sub
End Class
End Namespace
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请 该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。 获取有效期 30 天的临时许可证。
Spire.Doc for Java 5.4.2已发布。该版本增强了Word到PDF、Word到HTML、Word到OFD、XML到Word以及Word到图片的转换功能,此外还修复了将属性访问权限设置为“private”时,mailMerge 失败等已知问题。详情请阅读以下内容。
问题修复:
图像(如 JPG、PNG、BMP)是常见的数据载体,而 PDF 格式则在安全性、压缩率和跨平台一致性方面更具优势。在.NET 开发中,开发者常常需要可靠的 C# 图片转 PDF 解决方案,以简化报表生成、文档归档和数字记录管理等工作流程。
本文将演示如何使用 Spire.PDF for .NET 在 C#/ASP.NET 中高效实现图片到 PDF 的转换操作。作为一款功能强大的库,Spire.PDF 凭借其稳定的性能和卓越的兼容性,能够有效简化图片转 PDF 的操作流程,为开发者提供便捷的解决方案。
在开始编写将 JPG 或 PNG 等图像转换为 PDF 的代码前,需要先设置 C# 项目并添加 Spire.PDF 库。
步骤 1:创建新的 C# 项目
打开 Visual Studio,创建新的 C# 项目。可根据需求选择控制台应用程序、Windows 窗体应用程序或其他项目类型。
步骤 2:安装 Spire.PDF
有多种方式向项目中添加该 .NET PDF 库,常用方法是通过 NuGet 包管理器:
安装完成后,即可在 C# 代码中引用所需的命名空间。
Spire.PDF 没有提供直接的图片转 PDF 文件的方法,但可创建新的 PDF 文档并在特定页面的指定位置绘制图片。以下是两个转换单张图片或多张图片的代码示例。
此示例展示如何将一张 JPG 图像转换为 PDF 文档,并使 PDF 页面与图像的尺寸完全匹配。
JPG 转 PDF 的 C# 代码:
using System.Drawing;
using Spire.Pdf;
using Spire.Pdf.Graphics;
namespace ConvertImageToPdf
{
class Program
{
static void Main(string[] args)
{
// 创建PdfDocument对象
PdfDocument pdf = new PdfDocument();
// 将页边距设置为0
pdf.PageSettings.SetMargins(0);
// 加载JPG图像
Image image = Image.FromFile(@"C:\Users\Administrator\Desktop\Flyer.jpg");
// 获取图像的宽度和高度
float width = image.PhysicalDimension.Width;
float height = image.PhysicalDimension.Height;
// 添加与图像尺寸相同的页面
PdfPageBase page = pdf.Pages.Add(new SizeF(width, height));
// 将JPG图片绘制在页面指定位置
PdfImage pdfImage = PdfImage.FromImage(image);
page.Canvas.DrawImage(pdfImage, 0, 0, pdfImage.Width, pdfImage.Height);
// 保存PDF文件
pdf.SaveToFile("ConvertToPdfWithSameSize.pdf");
}
}
}
代码解析:
转换结果:

如果需要将多张图片合并为单个 PDF 文档,流程与转换单张图片类似,但需要通过循环处理每张图片。
将 JPG、PNG、TIFF、BMP 转换为 PDF 的 C# 代码:
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;
namespace ConvertMultipleImagesIntoPdf
{
class Program
{
static void Main(string[] args)
{
// 创建PdfDocument对象
PdfDocument pdf = new PdfDocument();
// 将页面边距设置为0
pdf.PageSettings.SetMargins(0);
// 指定要转换的图片
string[] imagePaths = { "Image-1.png", "Image-2.jpg", "Image-3.bmp", "Image-4.tiff" };
// 遍历每张图片
foreach (string path in imagePaths)
{
// 加载特定图像
Image image = Image.FromFile(path);
// 获取图像的宽度和高度
float width = image.PhysicalDimension.Width;
float height = image.PhysicalDimension.Height;
// 添加与图像尺寸相同的页面
PdfPageBase page = pdf.Pages.Add(new SizeF(width, height));
// 基于图片创建PdfImage对象
PdfImage pdfImage = PdfImage.FromImage(image);
// 在页面的指定位置绘制图片
page.Canvas.DrawImage(pdfImage, 0, 0, pdfImage.Width, pdfImage.Height);
}
// 保存PDF文件
pdf.SaveToFile("CombineImagesToPdf.pdf");
pdf.Dispose();
}
}
}
这段 C# 代码会遍历不同格式的图片文件数组,加载每张图像并将其添加到 PDF 文档的新页面中,最后保存包含所有图像的PDF文档。
转换效果:

在转换过程中,可根据图片的特性自定义 PDF 页面属性,如方向、边距和尺寸:
// 创建PDF文档
PdfDocument pdf = new PdfDocument();
// 设置页面方向
pdf.PageSettings.Orientation = PdfPageOrientation.Landscape;
// 设置页边距(以点为单位,1点=1/72英寸)
pdf.PageSettings.SetMargins(20);
// 设置页面尺寸
pdf.PageSettings.Size = PdfPageSize.A4;
如果需要保持固定的 PDF 页面尺寸,可缩放图像使其适配页面:
// 设置固定页面尺寸(如A4)
PdfPageBase page = pdf.Pages.Add(PdfPageSize.A4);
// 加载图像
Image image = Image.FromFile("sample.jpg");
// 获取页面的宽度和高度
float pageWidth = page.Canvas.ClientSize.Width;
float pageHeight = page.Canvas.ClientSize.Height;
// 缩放图像
float scale = Math.Min(pageWidth / image.Width, pageHeight / image.Height);
float scaledWidth = image.Width * scale;
float scaledHeight = image.Height * scale;
// 在页面上绘制缩放后的图像
page.Canvas.DrawImage(PdfImage.FromImage(image), 0, 0, scaledWidth, scaledHeight);
答:Spire.PDF 支持所有主流图像格式:
确保输入图片为受支持的格式,以实现无缝转换。
答:可以!通过遍历 TIFF 帧进行转换。完整代码示例可查看:C# 将多页 TIFF 图像转换为 PDF 文件。
答:可以!可使用 LoadFromSvg() 加载 SVG 文件,然后通过 SaveToFile (String, FileFormat.PDF) 方法将其保存为 PDF。
using Spire.Pdf;
namespace SVGtoPDF
{
class Program
{
static void Main(string[] args)
{
// 创建PdfDocument对象
PdfDocument doc = new PdfDocument();
// 加载示例SVG文件
doc.LoadFromSvg("示例.svg");
// 将SVG保存为PDF文档
doc.SaveToFile("SVG转PDF.pdf", FileFormat.PDF);
doc.Dispose();
}
}
}
答:Spire.PDF 完全支持VB.NET。可通过常见代码转换工具(如 Telerik Code Converter)将上述 C# 代码示例转换为VB.NET代码。
Spire.PDF for .NET 使得通过 C# 实现图片转 PDF 的操作变得简单直观。本教程详细展示了以下核心功能:
通过本教程提供的实操示例,开发者能够轻松将图片转 PDF 功能无缝集成至.NET 应用程序中,大幅提升文档处理效率。
Spire.Doc for Java 5.4.0已发布。该版本支持使用 NewEngine 转换 Word 文档,该NewEngine方法修复了大量在Word转PDF时出现的问题。详情请阅读以下内容。
新功能:
Document doc = new Document();
doc.loadFromFile(inputFile);
doc.setUseNewEngine(true);
问题修复:
Spire.Presentation for Java 5.4.0已发布。该版本增强了PPT到PDF的转换功能,还修复了应用程序在获取图表类别数量时抛出“NullPointerException”等已知问题。详情请阅读以下内容。
问题修复:
https://www.e-iceblue.cn/Downloads/Spire-Presentation-JAVA.html
Spire.Barcode 6.3.1发布。本次更新修复了数据中包含“-”时,生成的条码不正确的问题。详情请阅读以下内容。
问题修复:
https://www.e-iceblue.com/Download/download-barcode-for-net.html
更改特定段落或文本的字体颜色可以使段落或文本在 Word 文档中更加显眼。在本文中,我们将演示如何使用 Spire.Doc for Java 库在 Java 中更改 Word 中的字体颜色。
首先,您需要在 Java 程序中添加 Spire.Doc.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.doc</artifactId>
<version>13.12.2</version>
</dependency>
</dependencies>
以下是更改 Word 文档中段落字体颜色的步骤:
import com.spire.doc.Document;
import com.spire.doc.FileFormat;
import com.spire.doc.Section;
import com.spire.doc.documents.Paragraph;
import com.spire.doc.documents.ParagraphStyle;
import java.awt.*;
public class ChangeFontColorForParagraph {
public static void main(String []args){
//创建一个Document实例
Document document = new Document();
//加载Word文档
document.loadFromFile("https://cdn.e-iceblue.cn/C:\\Users\\Administrator\\Desktop\\Sample.docx");
//获取第一节
Section section = document.getSections().get(0);
//更改第一个段落的文本颜色
Paragraph p1 = section.getParagraphs().get(0);
ParagraphStyle s1 = new ParagraphStyle(document);
s1.setName("Color1");
s1.getCharacterFormat().setTextColor(new Color(188, 143, 143));
document.getStyles().add(s1);
p1.applyStyle(s1.getName());
//更改第二段的文本颜色
Paragraph p2 = section.getParagraphs().get(1);
ParagraphStyle s2 = new ParagraphStyle(document);
s2.setName("Color2");
s2.getCharacterFormat().setTextColor(new Color(0, 0, 139));;
document.getStyles().add(s2);
p2.applyStyle(s2.getName());
//保存结果文档
document.saveToFile("ChangeParagraphTextColor.docx", FileFormat.Docx);
}
}
以下是更改 Word 文档中特定文本的字体颜色的步骤:
import com.spire.doc.Document;
import com.spire.doc.FileFormat;
import com.spire.doc.documents.TextSelection;
import java.awt.*;
public class ChangeFontColorForText {
public static void main(String []args){
//创建一个Document实例
Document document = new Document();
//加载Word文档
document.loadFromFile("https://cdn.e-iceblue.cn/C:\\Users\\Administrator\\Desktop\\Sample.docx");
//找到要更改字体颜色的文本
TextSelection[] text = document.findAllString("Spire.Doc for .NET", false, true);
//更改搜索文本的字体颜色
for (TextSelection seletion : text)
{
seletion.getAsOneRange().getCharacterFormat().setTextColor(Color.red);
}
//保存结果文档
document.saveToFile("ChangeCertainTextColor.docx", FileFormat.Docx);
}
}
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请 该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。 获取有效期 30 天的临时许可证。
在 Word 文档中启用跟踪更改功能后,它会记录文档中的所有编辑行为,例如插入、删除、替换和格式更改。跟踪更改是一项很棒的功能,可让您查看文档进行了哪些更改。本教程展示了如何使用 Spire.Doc for Java 获取 Word 中所有修订。
首先,您需要在 Java 程序中添加 Spire.Doc.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.doc</artifactId>
<version>13.12.2</version>
</dependency>
</dependencies>
详细步骤如下。
import com.spire.doc.*;
import com.spire.doc.documents.*;
import com.spire.doc.fields.*;
import com.spire.doc.formatting.revisions.*;
import java.io.FileWriter;
public class getRevisions {
public static void main(String[] args) throws Exception {
//加载示例 Word 文档
Document document = new Document();
document.loadFromFile("https://cdn.e-iceblue.cn/C:\\Users\\Administrator\\Desktop\\test file.docx");
//创建一个 StringBuilder 对象以获取插入修订
StringBuilder insertRevision = new StringBuilder();
insertRevision.append("Insert revisions:"+"\n");
int index_insertRevision = 0;
//创建一个 StringBuilder 对象以获取删除修订
StringBuilder deleteRevision = new StringBuilder();
deleteRevision.append("Delete revisions:"+"\n");
int index_deleteRevision = 0;
//遍历所有节
for (Section sec : (Iterable<Section>) document.getSections())
{
//遍历section中body下的元素
for(DocumentObject docItem : (Iterable<DocumentObject>)sec.getBody().getChildObjects())
{
if (docItem instanceof Paragraph)
{
Paragraph para = (Paragraph)docItem;
//确定段落是否为插入修订
if (para.isInsertRevision())
{
index_insertRevision++;
insertRevision.append("Index: " + index_insertRevision+"\n");
//获取插入修订
EditRevision insRevison = para.getInsertRevision();
//获取插入修订类型
EditRevisionType insType = insRevison.getType();
insertRevision.append("Type: " + insType+"\n");
//获取插入修订作者
String insAuthor = insRevison.getAuthor();
insertRevision.append("Author: " + insAuthor + "\n");
}
//确定段落是否为删除修订
else if (para.isDeleteRevision())
{
index_deleteRevision++;
deleteRevision.append("Index: " + index_deleteRevision +"\n");
EditRevision delRevison = para.getDeleteRevision();
EditRevisionType delType = delRevison.getType();
deleteRevision.append("Type: " + delType+ "\n");
String delAuthor = delRevison.getAuthor();
deleteRevision.append("Author: " + delAuthor + "\n");
}
//遍历段落中的元素
for(DocumentObject obj : (Iterable<DocumentObject>)para.getChildObjects())
{
if (obj instanceof TextRange)
{
TextRange textRange = (TextRange)obj;
//确定文本范围是否为插入修订
if (textRange.isInsertRevision())
{
index_insertRevision++;
insertRevision.append("Index: " + index_insertRevision +"\n");
EditRevision insRevison = textRange.getInsertRevision();
EditRevisionType insType = insRevison.getType();
insertRevision.append("Type: " + insType + "\n");
String insAuthor = insRevison.getAuthor();
insertRevision.append("Author: " + insAuthor + "\n");
}
else if (textRange.isDeleteRevision())
{
index_deleteRevision++;
deleteRevision.append("Index: " + index_deleteRevision +"\n");
//确定文本范围是否为删除修订
EditRevision delRevison = textRange.getDeleteRevision();
EditRevisionType delType = delRevison.getType();
deleteRevision.append("Type: " + delType+"\n");
String delAuthor = delRevison.getAuthor();
deleteRevision.append("Author: " + delAuthor+"\n");
}
}
}
}
}
}
//保存到 .txt 文件
FileWriter writer1 = new FileWriter("insertRevisions.txt");
writer1.write(insertRevision.toString());
writer1.flush();
writer1.close();
//保存到 .txt 文件
FileWriter writer2 = new FileWriter("deleteRevisions.txt");
writer2.write(deleteRevision.toString());
writer2.flush();
writer2.close();
}
}
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请 该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。 获取有效期 30 天的临时许可证。
Word 中有 5 种常用的对齐方式,即左对齐、右对齐、居中对齐、两端对齐和分散对齐。我们在对文本段落进行排版时,可根据设计布局需要来选择适合的对齐方式。Spire.Doc for .NET 提供了 ParagraphFormat.HorizontalAlignment 属性用于设置段落对齐方式,通过枚举值可实现以上 5 种对齐方式的设置。本文将对此作详细介绍。
首先,您需要添加 Spire.Doc for .NET 包中包含的 DLL 文件作为 .NET 项目中的引用。DLL 文件可以从此链接下载或通过 NuGet 安装。
PM> Install-Package Spire.Doc下面是设置段落对齐方式的代码步骤:
using Spire.Doc;
using Spire.Doc.Documents;
namespace TextAlignment_Doc
{
class Program
{
static void Main(string[] args)
{
//实例化Document类,加载文档
Document doc = new Document();
doc.LoadFromFile(@"test.docx");
//获取第一节
Section section = doc.Sections[0];
//设置第1段文字居中对齐
Paragraph p = section.Paragraphs[0];
p.Format.HorizontalAlignment = HorizontalAlignment.Center;
//设置第2段文字左对齐
Paragraph p1 = section.Paragraphs[1];
p1.Format.HorizontalAlignment = HorizontalAlignment.Left;
//设置第3段文字右对齐
Paragraph p2 = section.Paragraphs[2];
p2.Format.HorizontalAlignment = HorizontalAlignment.Right;
//设置第4段文字两端对齐
Paragraph p3 = section.Paragraphs[3];
p3.Format.HorizontalAlignment = HorizontalAlignment.Justify;
//设置第5段文字分散对齐
Paragraph p4 = section.Paragraphs[4];
p4.Format.HorizontalAlignment = HorizontalAlignment.Distribute;
//保存文档
doc.SaveToFile("Alignment.docx", FileFormat.Docx);
}
}
}Imports Spire.Doc
Imports Spire.Doc.Documents
Namespace TextAlignment_Doc
Class Program
Private Shared Sub Main(args As String())
'实例化Document类,加载文档
Dim doc As New Document()
doc.LoadFromFile("https://cdn.e-iceblue.cn/test.docx")
'获取第一节
Dim section As Section = doc.Sections(0)
'设置第1段文字居中对齐
Dim p As Paragraph = section.Paragraphs(0)
p.Format.HorizontalAlignment = HorizontalAlignment.Center
'设置第2段文字左对齐
Dim p1 As Paragraph = section.Paragraphs(1)
p1.Format.HorizontalAlignment = HorizontalAlignment.Left
'设置第3段文字右对齐
Dim p2 As Paragraph = section.Paragraphs(2)
p2.Format.HorizontalAlignment = HorizontalAlignment.Right
'设置第4段文字两端对齐
Dim p3 As Paragraph = section.Paragraphs(3)
p3.Format.HorizontalAlignment = HorizontalAlignment.Justify
'设置第5段文字分散对齐
Dim p4 As Paragraph = section.Paragraphs(4)
p4.Format.HorizontalAlignment = HorizontalAlignment.Distribute
'保存文档
doc.SaveToFile("Alignment.docx", FileFormat.Docx)
End Sub
End Class
End Namespace
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请 该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。 获取有效期 30 天的临时许可证。