对于许多用户来说,在 Microsoft 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>14.9.5</version>
</dependency>
</dependencies>
Spire.Doc for Java 为在 Microsoft Word 文档间复制内容提供了一种灵活的方式。即复制单独的段落然后将它们添加到另一个文档中。
要将指定段落从一个 Word 文档复制到另一个文档,你可以参考下面的步骤:
import com.spire.doc.Document;
import com.spire.doc.FileFormat;
import com.spire.doc.Section;
import com.spire.doc.documents.Paragraph;
public class CopyParagraphs {
public static void main(String[] args) {
// 创建一个 Document 类的对象
Document sourceDoc = new Document();
// 加载源文档
sourceDoc.loadFromFile("样本1.docx");
// 获取指定节
Section section = sourceDoc.getSections().get(0);
// 从 Word 文档中获取特定段落
Paragraph p1 = section.getParagraphs().get(3);
Paragraph p2 = section.getParagraphs().get(4);
// 创建另一个 Document 类的对象
Document targetDoc = new Document();
// 加载目标文档
targetDoc.loadFromFile("空白文档.docx");
// 获取最后一节
Section lastSection = targetDoc.getLastSection();
// 将从源文档获取的段落添加到目标文档中
lastSection.getParagraphs().add((Paragraph)p1.deepClone());
lastSection.getParagraphs().add((Paragraph)p2.deepClone());
// 将目标文档另存为新的 Word 文档
targetDoc.saveToFile("复制段落.docx", FileFormat.Docx_2019);
// 释放资源
sourceDoc.dispose();
targetDoc.dispose();
}
}

复制 Microsoft Word 文档中的内容时,特别需要考虑到一个节中不止包含段落,还有其它的元素,如表格。为了能够将完整的节从一个文档转移到另一个文档中,你需要遍历该节中的所有子对象,并将它们逐一添加到目标文档的指定节。
下面就是在不同文档间复制节的步骤:
import com.spire.doc.Document;
import com.spire.doc.DocumentObject;
import com.spire.doc.FileFormat;
import com.spire.doc.Section;
public class CopySection {
public static void main(String[] args) {
// 创建一个 Document 类的对象
Document sourceDoc = new Document();
// 加载源文档
sourceDoc.loadFromFile("样本1.docx");
// 从源文档中获取指定节
Section section = sourceDoc.getSections().get(0);
// 实例化另一个 Document 类的对象
Document targetDoc = new Document();
// 加载目标文档
targetDoc.loadFromFile("空白文档.docx");
// 获取目标文档的最后一节
Section lastSection = targetDoc.getLastSection();
// 遍历选定节中的子对象
for (int i = 0; i < section.getBody().getChildObjects().getCount(); i++) {
// 获取指定子对象
DocumentObject childObject = section.getBody().getChildObjects().get(i);
// 将子对象添加到目标文档的最后一节
lastSection.getBody().getChildObjects().add(childObject.deepClone());
}
// 保存修改后的目标文档
targetDoc.saveToFile("复制节.docx", FileFormat.Docx_2019);
// 释放资源
sourceDoc.dispose();
targetDoc.dispose();
}
}

使用 Document.insertTextFromFile() 方法就能将一个 Word 文档的全部内容复制到另一个文档中。这个方法使你可以将源文档中的的内容无缝添加到目标文档中。
下面是复制文档全部内容并将其添加到另一个文档的步骤:
import com.spire.doc.Document;
import com.spire.doc.FileFormat;
public class CopyEntireDocument {
public static void main(String[] args) {
// 明确源文档的文件路径
String sourceFile = "样本1.docx";
// 创建 Document 类的对象
Document targetDoc = new Document();
// 加载目标文档
targetDoc.loadFromFile("空白文档.docx");
// 将源文档的内容插入到目标文档中
targetDoc.insertTextFromFile(sourceFile, FileFormat.Docx);
// 将目标文档保存为新的 Word 文档
targetDoc.saveToFile("复制整个文档.docx", FileFormat.Docx_2019);
// 释放资源
targetDoc.dispose();
}
}
Spire.Doc for Java 提供了一种简单的方法,通过 Document.deepClone() 方法来创建 Microsoft Word 文档的副本。
你可以参照下面的步骤来创建 Word 文档的副本:
import com.spire.doc.Document;
import com.spire.doc.FileFormat;
public class DuplicateDocument {
public static void main(String[] args) {
// 创建新的 Document 对象
Document sourceDoc = new Document();
// 加载一个 Word 文档
sourceDoc.loadFromFile("样本1.docx");
// 克隆该文档
Document newDoc = sourceDoc.deepClone();
// 将克隆的文档保存为 docx 格式的文件
newDoc.saveToFile("副本.docx", FileFormat.Docx);
// 释放资源
sourceDoc.dispose();
newDoc.dispose();
}
}
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
Excel 中的数据条是条件格式工具的功能之一,它能通过一系列条形图直观地表示数值。由于条形图的长度与所代表数值的大小相对应,因此该功能在比较数值时特别有用。在本文中,您将学习如何使用 Spire.XLS for Python 通过 Python 在 Excel 单元格区域中添加数据条。
此教程需要 Spire.XLS for Python 和 plum-dispatch v1.7.4。您可以通过以下 pip 命令将它们轻松安装到 Windows 中。
pip install Spire.XLS
如果您不确定如何安装,请参考: 如何在 Windows中安装 Spire.XLS for Python
使用 Spire.XLS for Python,您可以在指定的数据范围内添加数据条并设置其样式。具体步骤如下:
from spire.xls import *
from spire.xls.common import *
# 创建Workbook对象
workbook = Workbook()
# 加载Excel文档
workbook.LoadFromFile("文档1.xlsx")
# 获取第一张工作表
sheet = workbook.Worksheets[0]
# 在工作表中添加条件格式
xcfs = sheet.ConditionalFormats.Add()
# 设置条件格式要应用的范围
xcfs.AddRange(sheet.Range["B2:B13"])
# 添加条件并设置其格式类型为 DataBar
format = xcfs.AddCondition()
format.FormatType = ConditionalFormatType.DataBar
# 设置数据条的填充效果和颜色
format.DataBar.BarFillType = DataBarFillType.DataBarFillGradient
format.DataBar.BarColor = Color.get_Red()
# 保存结果文档
workbook.SaveToFile("Excel数据条.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
在 Excel 中,迷你图是一种紧凑的图表类型,它通常嵌入在单元格内,用于快速展示数据趋势。这种图表非常适合用于显示单元格区域中的数据变化,特别是在处理大量数据时,可以帮助我们轻松识别模式和趋势。在本文中,我们将介绍如何使用 Spire.XLS for Python 和 Python 在 Excel 中插入、修改和删除迷你图。
本教程需要 Spire.XLS for Python 和 plum-dispatch v1.7.4。您可以通过以下 pip 命令将它们轻松安装到 Windows 中。
pip install Spire.XLS
如果您不确定如何安装,请参考此教程: 如何在 Windows 中安装 Spire.XLS for Python
Spire.XLS for Python 支持向 Excel 工作表中插入三种迷你图,它们分别是:
以下是使用 Spire.XLS for Python 向 Excel 工作表插入迷你图的详细步骤:
from spire.xls import *
from spire.xls.common import *
# 创建Workbook对象
workbook = Workbook()
# 加载一个Excel文件
workbook.LoadFromFile("示例.xlsx")
# 获取第一个工作表
sheet = workbook.Worksheets[0]
# 添加折线迷你图组
sparkline_group1 = sheet.SparklineGroups.AddGroup()
sparkline_group1.SparklineType = SparklineType.Line
# 设置迷你图组的颜色
sparkline_group1.SparklineColor = Color.get_Orange()
# 设置迷你图组最高点的颜色
sparkline_group1.HighPointColor = Color.get_Red()
# 添加迷你图到图组
sparklines1 = sparkline_group1.Add()
sparklines1.Add(sheet.Range["B3:M3"], sheet.Range["N3"])
# 添加柱形迷你图组
sparkline_group2 = sheet.SparklineGroups.AddGroup()
sparkline_group2.SparklineType = SparklineType.Column
# 设置迷你图组的颜色
sparkline_group2.SparklineColor = Color.get_BlueViolet()
# 设置迷你图组最高点的颜色
sparkline_group2.HighPointColor = Color.get_Red()
# 添加迷你图到图组
sparklines2 = sparkline_group2.Add()
sparklines2.Add(sheet.Range["B4:M4"], sheet.Range["N4"])
# 添加盈亏迷你图组
sparkline_group3 = sheet.SparklineGroups.AddGroup()
sparkline_group3.SparklineType = SparklineType.Stacked
# 设置迷你图组的颜色
sparkline_group3.SparklineColor = Color.get_DarkBlue()
# 设置迷你图组最高点的颜色
sparkline_group3.HighPointColor = Color.get_Red()
# 添加迷你图到图组
sparklines3 = sparkline_group3.Add()
sparklines3.Add(sheet.Range["B5:M5"], sheet.Range["N5"])
# 保存文档
workbook.SaveToFile("添加迷你图.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

插入迷你图后,你可以修改其样式、颜色或数据源,以使其显示你需要的信息。以下是使用 Spire.XLS for Python 修改 Excel 工作表中迷你图的类型和数据源的详细步骤:
from spire.xls import *
from spire.xls.common import *
# 创建Workbook对象
workbook = Workbook()
# 加载一个Excel文件
workbook.LoadFromFile("添加迷你图.xlsx")
# 获取第一个工作表
sheet = workbook.Worksheets[0]
# 修改第一个迷你图组中迷你图的类型和数据范围
sparklineGroup = sheet.SparklineGroups[0]
sparklineGroup.SparklineType = SparklineType.Column
sparklines = sparklineGroup[0]
sparklines.RefreshRanges(sheet.Range["B3:G3"], sheet.Range["N3"])
# 保存结果文档
workbook.SaveToFile("修改迷你图.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

Spire.XLS for Python 支持删除 Excel 工作表中的特定迷你图,也支持删除整个迷你图组。以下是详细步骤:
from spire.xls import *
from spire.xls.common import *
# 创建Workbook对象
workbook = Workbook()
# 加载一个Excel文件
workbook.LoadFromFile("添加迷你图.xlsx")
# 获取第一个工作表
sheet = workbook.Worksheets[0]
# 获取第一个迷你图组
sparklineGroup = sheet.SparklineGroups[0]
# # 从工作表中删除第一个迷你图组
# sheet.SparklineGroups.Remove(sparklineGroup)
# 或删除第一个迷你图组中的第一个迷你图
sparklines = sparklineGroup[0]
sparklines.Remove(sparklines[0])
# 保存结果文档
workbook.SaveToFile("删除迷你图.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
Spire.PDF 10.9.0 现已正式发布。最新版本增强了 PDF 到图片、OFD、PDFA1B 和 SVG 到 PDF 的转换功能。此外,一些已知问题也在这次升级中被成功修复,例如多次提取文本时结果不正确的问题。更多详情请查阅以下内容。
问题修复:
验证 PDF 中的数字签名是确定文档未被篡改,并且确实由声明的签署者签署的关键步骤。这一验证过程对于保持文档的完整性和可信度至关重要。同时,提取数字签名可以让你获取签名的详细信息,包括签名图片和数字证书信息等,这些信息对于后续的验证和归档工作非常重要。这篇文章将介绍如何使用 Spire.PDF for Java 和 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>12.9.0</version>
</dependency>
</dependencies>
Spire.PDF for Java 提供了 PdfSignature.verifySignature() 方法,用于检查 PDF 文档中数字签名的有效性。详细步骤如下:
import com.spire.pdf.PdfDocument;
import com.spire.pdf.fields.PdfField;
import com.spire.pdf.security.PdfSignature;
import com.spire.pdf.widget.PdfFormWidget;
import com.spire.pdf.widget.PdfSignatureFieldWidget;
public class VerifySignature {
public static void main(String[] args) {
// 创建 PdfDocument 对象
PdfDocument pdf = new PdfDocument();
// 加载 PDF 文档
pdf.loadFromFile("签名.pdf");
// 获取 PDF 文档的表单
PdfFormWidget formWidget = (PdfFormWidget) pdf.getForm();
if (formWidget.getFieldsWidget().getCount() > 0) {
// 遍历表单中的所有域
for (int i = 0; i < formWidget.getFieldsWidget().getCount(); i++) {
PdfField field = formWidget.getFieldsWidget().get(i);
// 查找签名域
if (field instanceof PdfSignatureFieldWidget) {
PdfSignatureFieldWidget signatureField = (PdfSignatureFieldWidget) field;
// 获取签名
PdfSignature signature = signatureField.getSignature();
// 验证签名
boolean valid = signature.verifySignature();
if (valid) {
System.out.print("签名有效!");
} else {
System.out.print("签名无效!");
}
}
}
}
}
}

要验证已签名的 PDF 文档是否被修改,你可以使用 PdfSignature.VerifyDocModified() 方法。详细步骤如下:
import com.spire.pdf.PdfDocument;
import com.spire.pdf.fields.PdfField;
import com.spire.pdf.security.PdfSignature;
import com.spire.pdf.widget.PdfFormWidget;
import com.spire.pdf.widget.PdfSignatureFieldWidget;
public class CheckIfSignedPdfIsModified {
public static void main(String[] args) {
// 创建 PdfDocument 对象
PdfDocument pdf = new PdfDocument();
// 加载 PDF 文档
pdf.loadFromFile("签名.pdf");
// 获取 PDF 文档的表单
PdfFormWidget formWidget = (PdfFormWidget) pdf.getForm();
if (formWidget.getFieldsWidget().getCount() > 0) {
// 遍历表单中的所有域
for (int i = 0; i < formWidget.getFieldsWidget().getCount(); i++) {
PdfField field = formWidget.getFieldsWidget().get(i);
// 查找签名域
if (field instanceof PdfSignatureFieldWidget) {
PdfSignatureFieldWidget signatureField = (PdfSignatureFieldWidget) field;
// 获取签名
PdfSignature signature = signatureField.getSignature();
// 验证签名
boolean modified = signature.verifyDocModified();
if (modified) {
System.out.print("文档已被修改!");
} else {
System.out.print("文档未被修改!");
}
}
}
}
}
}

你可以使用 PdfFormWidget.extractSignatureAsImages() 和 PdfSignature.getCertificate().toString() 方法从 PDF 中提取签名图片和数字证书信息。详细步骤如下:
import com.spire.pdf.PdfDocument;
import com.spire.pdf.fields.PdfField;
import com.spire.pdf.security.PdfSignature;
import com.spire.pdf.widget.PdfFormWidget;
import com.spire.pdf.widget.PdfSignatureFieldWidget;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class ExtractSignatureImage {
public static void main(String[] args) {
// 创建 PdfDocument 对象
PdfDocument pdf = new PdfDocument();
// 加载 PDF 文档
pdf.loadFromFile("签名.pdf");
// 获取 PDF 文档的表单
PdfFormWidget formWidget = (PdfFormWidget) pdf.getForm();
// 提取签名图片
Image[] images = formWidget.extractSignatureAsImages();
// 遍历图片并将每个图片保存到文件
for (int i = 0; i < images.length; i++) {
try {
// 将 Image 转换为 BufferedImage
BufferedImage bufferedImage = (BufferedImage) images[i];
// 指定输出文件路径
File outputFile = new File("output\\签名_" + i + ".png");
// 将图片保存为 PNG 文件
ImageIO.write(bufferedImage, "png", outputFile);
} catch (IOException e) {
e.printStackTrace();
}
}
// 创建文本文件以保存数字证书信息
try (BufferedWriter writer = new BufferedWriter(new FileWriter("output\\数字证书信息.txt"))) {
if (formWidget.getFieldsWidget().getCount() > 0) {
// 遍历表单中的所有域
for (int i = 0; i < formWidget.getFieldsWidget().getCount(); i++) {
PdfField field = formWidget.getFieldsWidget().get(i);
// 查找签名域
if (field instanceof PdfSignatureFieldWidget) {
PdfSignatureFieldWidget signatureField = (PdfSignatureFieldWidget) field;
// 获取签名
PdfSignature signature = signatureField.getSignature();
// 获取签名的数字证书信息
String certificateInfo = signature.getCertificate() != null ? signature.getCertificate().toString() : "没有证书";
// 将数字证书信息写入文本文件
writer.write("数字证书信息: \n" + certificateInfo);
writer.write("-----------------------------------\n");
}
}
} else {
writer.write("未找到签名域。");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
在 PDF 文档中调整图像透明度对实现专业的文档效果至关重要。设置适当的图片透明度有助于图像与其他图像或文字内容更好地叠加,并与背景或底层元素自然融合。这样不仅能提升文档的视觉吸引力,还能在图文密集的场景下呈现统一、精致的外观。本文将演示如何在 Python 项目中,使用 Spire.PDF for Python 来设置 PDF 图像的透明度。
本教程需要用到 Spire.PDF for Python 和 plum-dispatch v1.7.4。可以通过以下 pip 命令将它们轻松安装到 Windows 中。
pip install Spire.PDF
如果您不确定如何安装,请参考:如何在 Windows 中安装 Spire.PDF for Python
使用 Spire.PDF for Python 中的 PdfPageBase.Canvas.DrawImage() 方法可以将图像绘制到 PDF 页面的指定位置。在绘制之前,可以通过 PdfPageBase.Canvas.SetTransparency() 方法设置画布的透明度,从而控制所绘制图像的透明效果。以下是详细操作步骤:
from spire.pdf import *
# 创建一个PdfDocument实例
pdf = PdfDocument()
# 加载一个PDF文件
pdf.LoadFromFile("示例.pdf")
# 获取第一页
page = pdf.Pages.get_Item(0)
# 加载一张图片
image = PdfImage.FromFile("Screen.jpg")
# 设置画布的透明度
page.Canvas.SetTransparency(0.1)
# 在指定位置绘制图片
page.Canvas.DrawImage(image, PointF(80.0, 70.0))
# 保存文档
pdf.SaveToFile("output/添加透明度图片到PDF.pdf")
pdf.Close()

要调整 PDF 页面上现有图像的透明度,可以获取图像及其边界信息并删除该图像,然后在相同位置以指定透明度重新绘制图像。这样可以调整图像的透明效果,同时保持其原始位置。具体操作步骤如下:
from spire.pdf import *
# 创建一个PdfDocument实例
pdf = PdfDocument()
# 加载一个PDF文件
pdf.LoadFromFile("示例1.pdf")
# 获取第一页
page = pdf.Pages.get_Item(0)
imageHelper = PdfImageHelper()
imageInformation = imageHelper.GetImagesInfo(page)
bounds = imageInformation[0].Bounds
imageStream =imageInformation[0].Image
# 删除原始图像
imageHelper.DeleteImage(imageInformation[0])
# 使用图像流创建一个PdfImage实例
image = PdfImage.FromStream(imageStream)
# 设置画布的透明度
page.Canvas.SetTransparency(0.3)
# 使用画布在同一位置绘制新图像
page.Canvas.DrawImage(image, bounds)
# 保存文档
pdf.SaveToFile("output/调整PDF图片透明度.pdf")
pdf.Close()

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
Markdown 是一种在作者和开发人员中非常流行的格式,因为它简单易读,可以使用简单的纯文本语法进行内容格式化。然而,将 Markdown 文件转换为 Word 和 PDF 文件等通用格式,对于与读者分享文档、实现复杂格式以及确保跨设备和平台的一致性和兼容性非常重要。本文将演示如何使用 Spire.Doc for Java,将 Markdown 文件转换为 Word 和 PDF 文件,从而增强您的书面内容的多功能性和分发潜力。
首先,您需要在 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>14.9.5</version>
</dependency>
</dependencies>
Spire.Doc for Java 提供了一种将 Markdown 格式转换为 Word 和 PDF 文档的简单方式。您可以使用 Document.loadFromFile(String: fileName, FileFormat.Markdown) 方法加载 Markdown 文件,然后使用 Document.saveToFile(String: fileName, FileFormat: fileFormat) 方法将该文件保存为 Word 或 PDF 文档。
需要注意的是在 Markdown 文件中,图片是以链接的形式保存的。如果要保留图片,还要在转换后进一步操作。
下面就是将 Markdown 文件转换为 Word 文档的具体步骤:
import com.spire.doc.Document;
import com.spire.doc.FileFormat;
public class MarkdownToWord {
public static void main(String[] args) {
// 创建一个 Document 类的实例
Document doc = new Document();
// 从文件路径加载 Markdown 文件
doc.loadFromFile("E:/Administrator/Python1/test.md", FileFormat.Markdown);
// 将 Markdown 文件保存为 Word 文档
doc.saveToFile("E:/Administrator/Python1/output/MarkdownToWord.docx", FileFormat.Docx);
doc.dispose();
}
}

通过将 FileFormat.PDF 枚举作为 Document.saveToFile() 方法的格式参数,可以直接将 Markdown 文件转换为 PDF 文档。
下面是将 Markdown 文件转换为 PDF 文档的详细步骤:
import com.spire.doc.Document;
import com.spire.doc.FileFormat;
public class MarkdownToPDF {
public static void main(String[] args) {
//创建一个 Document 类的对象
Document doc = new Document();
// 加载一个 Markdown 文件
doc.loadFromFile("E:/Administrator/Python1/test.md");
// 将 Markdown 文件保存为 PDF
doc.saveToFile("E:/Administrator/Python1/output/MarkdownToPDF.pdf", FileFormat.PDF);
doc.dispose();
}
}

Spire.Doc for Java 还提供了 PageSetup 类下的方法,用于在转换之前进行页面设置,使您能够控制生成文档的页面设置,例如页面边距和页面大小。
以下是自定义结果文档的页面设置的具体步骤:
import com.spire.doc.Document;
import com.spire.doc.FileFormat;
import com.spire.doc.PageSetup;
import com.spire.doc.Section;
import com.spire.doc.documents.MarginsF;
import com.spire.doc.documents.PageOrientation;
import com.spire.doc.documents.PageSize;
public class PageSettingMarkdown {
public static void main(String[] args) {
// 创建一个 Document 类的实例
Document doc = new Document();
// 加载 Markdown 文件
doc.loadFromFile("E:/Administrator/Python1/test.md");
// 获取第一个部分
Section section = doc.getSections().get(0);
// 设置页面大小、朝向和页面距
PageSetup pageSetup = section.getPageSetup();
pageSetup.setPageSize(PageSize.Letter);
pageSetup.setOrientation(PageOrientation.Landscape);
pageSetup.setMargins(new MarginsF(100, 100, 100, 100));
// 将 Markdown 文件保存为 PDF
doc.saveToFile("E:/Administrator/Python1/output/PageSetMarkdown.pdf", FileFormat.PDF);
doc.dispose();
}
}

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
Spire.OCR for Java 为开发人员提供了一个新的模型来从图片中提取文本。在本文中, 我们将演示如何使用 Spire.OCR for Java 的新模型在 Java 中实现从图片中提取文本。
具体步骤如下:
步骤 1:在 IntelliJ IDEA 中创建 Java 项目

步骤 2:通过 Maven 仓库拉取或手动导入 Spire.OCR.jar
1、通过 Maven 仓库拉取 Spire.OCR.jar
如果你的项目使用 Maven 构建,你可以通过在项目的 pom.xml 文件中添加如下依赖来引入 Spire.OCR.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.ocr</artifactId>
<version>2.1.5</version>
</dependency>
</dependencies>
2、手动导入 Spire.OCR.jar
首先,从以下链接下载 Spire.OCR.jar 文件,然后将其解压到特定目录。
https://www.e-iceblue.cn/Downloads/Spire-OCR-JAVA.html
其次,在 IDEA 主菜单栏中,依次点击:文件(Files) > 项目结构(Project Structure) > 模块(Modules) > 依赖(Dependencies),在右侧的“依赖项”窗格中,点击“+”号,选择“JARs或目录”(JARs or Directories…),在打开的窗口中,定位到 Spire.OCR.jar 所在的目录,选中 jar 文件后点击“确定”,将 jar 文件添加为项目的依赖。

步骤 3:下载 Spire.OCR for Java 的新模型
请从以下链接下载适合你的操作系统的模型:
Linux x64(须使用 CentOS 8、Ubuntu 18 及以上版本)
解压下载的压缩包并保存到计算机上的特定目录。在该示例中,我们将其放在 "E:\" 目录下。
步骤 4:使用 Spire.OCR for Java 的新模型实现从图片中提取文本
以下代码示例展示了如何使用 Spire.OCR for Java 的新模型实现从图片中提取文本:
import com.spire.ocr.ConfigureOptions;
import com.spire.ocr.OcrException;
import com.spire.ocr.OcrScanner;
import java.io.FileWriter;
import java.io.IOException;
public class ExtractTextFromImage {
public static void main(String[] args) throws OcrException {
// 设置许可证密钥
// com.spire.ocr.license.LicenseProvider.setLicenseKey("your-license-key");
// 创建OcrScanner实例
OcrScanner scanner = new OcrScanner();
// 设置扫描器配置
ConfigureOptions configureOptions = new ConfigureOptions();
// 指定文本识别的语言,默认设置为English(支持语言:English,Chinese,Chinesetraditional,French,German,Japanese和Korean)
configureOptions.setLanguage("Chinese");
// 指定模型的路径
configureOptions.setModelPath("E:\\win-x64");
// 将配置应用于扫描器
scanner.ConfigureDependencies(configureOptions);
// 识别图片中的文本
scanner.scan("测试.png");
// 获取识别出的文本
String scannedText = scanner.getText().toString();
// 将获取的文本写入文本文件
try (FileWriter writer = new FileWriter("输出.txt")) {
writer.write(scannedText);
System.out.println("文本已成功保存到 输出.txt");
} catch (IOException e) {
System.out.println("保存文本文件时发生错误。");
e.printStackTrace();
}
}
}
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
在应用程序中通过处理字节串(bytes)和字节数组(bytearray)来操作 PDF 文档是一种高效且灵活的方式。通过直接将 PDF 作为字节流处理,开发者可以在内存中管理文档或通过网络传输,而无需临时文件存储,从而优化空间并提高应用程序的整体性能。这种方法还可以与 Web 服务和 API 无缝集成。此外,使用字节数组(bytearray)还允许开发者对 PDF 文档进行精确的字节级修改。
本文将演示如何使用 Spire.PDF for Python 通过 Python 代码将 PDF 文档保存为字节串和字节数组,以及从字节串和字节数组中加载 PDF 文档。
本教程需要用到 Spire.PDF for Python 和 plum-dispatch v1.7.4。可以通过以下 pip 命令将它们轻松安装到 Windows 中。
pip install Spire.PDF
如果您不确定如何安装,请参考:如何在 Windows 中安装 Spire.PDF for Python
开发者可以使用 Spire.PDF for Python 提供的类和方法创建 PDF 文档,保存到 Stream 对象,然后将其转换为不可变的字节串对象(bytes)或可变的字节数组对象(bytearray)。Stream 对象也可用于执行字节级操作。详细步骤如下:
from spire.pdf import *
# 创建PdfDocument类的实例
pdf = PdfDocument()
# 设置文档的页面尺寸和页边距
pageSettings = pdf.PageSettings
pageSettings.Size = PdfPageSize.A4()
pageSettings.Margins.Top = 50
pageSettings.Margins.Bottom = 50
pageSettings.Margins.Left = 40
pageSettings.Margins.Right = 40
# 向文档添加新页面
page = pdf.Pages.Add()
# 为文档内容创建字体和画刷
titleFont = PdfTrueTypeFont("HarmonyOS Sans SC", 16.0, PdfFontStyle.Bold, True)
titleBrush = PdfBrushes.get_Brown()
contentFont = PdfTrueTypeFont("HarmonyOS Sans SC", 13.0, PdfFontStyle.Regular, True)
contentBrush = PdfBrushes.get_Black()
# 在页面上绘制标题
titleText = "云计算简要介绍"
titleSize = titleFont.MeasureString(titleText)
page.Canvas.DrawString(titleText, titleFont, titleBrush, PointF(0.0, 30.0))
# 在页面上绘制正文文本
contentText = ("云计算是一种服务模式,计算资源通过互联网按需提供。"
"它是一种基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)模型。"
"云计算通常以订阅制的方式提供,用户按月、按年或其他方式为云资源的使用付费。")
# 设置正文文本的字符串格式
contentFormat = PdfStringFormat()
contentFormat.Alignment = PdfTextAlignment.Justify # 文本对齐方式为两端对齐
contentFormat.LineSpacing = 20.0 # 设置行间距
# 创建TextWidget对象,并应用字符串格式
textWidget = PdfTextWidget(contentText, contentFont, contentBrush)
textWidget.StringFormat = contentFormat
# 创建TextLayout对象并设置布局选项
textLayout = PdfTextLayout()
textLayout.Layout = PdfLayoutType.Paginate # 设置分页布局
textLayout.Break = PdfLayoutBreakType.FitPage # 设置适合页面的换页模式
# 在页面上绘制TextWidget
rect = RectangleF(PointF(0.0, titleSize.Height + 50.0), page.Canvas.ClientSize)
textWidget.Draw(page, rect, textLayout)
# 将PDF文档保存到Stream对象
pdfStream = Stream()
pdf.SaveToStream(pdfStream)
# 将Stream对象转换为字节串(bytes)对象
pdfBytes = pdfStream.ToArray()
# 将Stream对象转换为字节数组(bytearray)对象
pdfBytearray = bytearray(pdfStream.ToArray())
# 将字节串对象和字节数组对象写入文件
with open("output/PDFBytes.pdf", "wb") as f:
f.write(pdfBytes)
with open("output/PDFBytearray.pdf", "wb") as f:
f.write(pdfBytearray)

开发者可以使用 PDF 文件的字节串创建 Stream 对象,并通过 PdfDocument.LoadFromStream() 方法将其加载为 PDF 文档,从而对文档执行各种操作,如读取、修改和转换等。以下是步骤示例:
from spire.pdf import *
# 从PDF文件创建字节数组
with open("示例.pdf", "rb") as f:
byteData = f.read()
# 从字节数组创建Stream对象
stream = Stream(byteData)
# 将Stream对象加载为PDF文档
pdf = PdfDocument(stream)
# 获取第一页的文本
page = pdf.Pages.get_Item(0)
textExtractor = PdfTextExtractor(page)
extractOptions = PdfTextExtractOptions()
extractOptions.IsExtractAllText = True # 设置为提取所有文本
text = textExtractor.ExtractText(extractOptions)
# 输出提取的文本
print(text)

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
Spire.PDF for Java 10.9.0 现已正式发布。该版本支持提取指定区域的文本,以及在转换 PDF 到 PDF/A 时保留 XMP 数据。此外,一些在替换、提取文本和压缩图片时遇到的问题也已成功被修复。详情请查阅以下内容。
新功能:
PdfStandardsConverter convert= new PdfStandardsConverter(outputFile_pdf);
convert.getOptions().setPreserveAllowedMetadata(true);
convert.toPdfA2A(outputFile_pdfA2A);PdfPageBase page = pdf.getPages().get(0);
PdfTextReplacer replacer= new PdfTextReplacer (page);
replacer.getOptions().setReplacementArea(new Rectangle2D.Float(10, 0, 841, 150));
replacer.getOptions().setReplaceType(EnumSet.of(ReplaceActionType.WholeWord));
replacer.replaceAllText("SQL","Now SQL");问题修复: