Spire.PDF 6.7.8 现已发布。该版本主要修复了一些XPS转PDF,加载、合并及操作PDF文档时出现的问题。详情参加下文。
问题修复:
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>12.9.0</version>
</dependency>
</dependencies>
Spire.PDF for Java 提供的 PdfDocument.getBookmarks().add() 方法可以添加书签到 PDF 文档中。除了添加主书签,还可以使用 PdfBookmark.add() 方法添加子书签到主书签中。PdfBookmark 类下还有许多其他方法可以对书签的链接目标、字体颜色和字体样式等进行设置。在 PDF 文档中添加书签的详细操作步骤如下:
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.actions.PdfGoToAction;
import com.spire.pdf.bookmarks.PdfBookmark;
import com.spire.pdf.bookmarks.PdfTextStyle;
import com.spire.pdf.general.PdfDestination;
import com.spire.pdf.graphics.PdfRGBColor;
import java.awt.*;
import java.awt.geom.Point2D;
public class addBookmark {
public static void main(String[] args) {
//创建一个PdfDocument类的对象
PdfDocument pdf = new PdfDocument();
//载入PDF文件
pdf.loadFromFile("地球没有替代品.pdf");
//循环遍历PDF文档中的页面
for(int i = 0; i< pdf.getPages().getCount();i++) {
PdfPageBase page = pdf.getPages().get(i);
//添加一个书签
PdfBookmark bookmark = pdf.getBookmarks().add(String.format("书签-%s", i + 1));
//设置书签链接页面和位置
PdfDestination destination = new PdfDestination(page, new Point2D.Float(0, 0));
bookmark.setAction(new PdfGoToAction(destination));
//设置字体颜色
bookmark.setColor(new PdfRGBColor(new Color(139, 69, 19)));
//设置字体格式
bookmark.setDisplayStyle(PdfTextStyle.Bold);
//添加一个子书签
PdfBookmark childBookmark = bookmark.add(String.format("子书签-%s", i + 1));
//设置链接页面和位置
PdfDestination childDestination = new PdfDestination(page, new Point2D.Float(0, 100));
childBookmark.setAction(new PdfGoToAction(childDestination));
//设置字体颜色
childBookmark.setColor(new PdfRGBColor(new Color(255, 127, 80)));
//设置字体格式
childBookmark.setDisplayStyle(PdfTextStyle.Italic);
}
//保存文档
pdf.saveToFile("添加书签.pdf");
}
}
Spire.PDF for Java 中的 PdfBookmark 类下的方法也可以用来编辑 PDF 文档中的书签。详细操作步骤如下:
import com.spire.pdf.PdfDocument;
import com.spire.pdf.bookmarks.PdfBookmark;
import com.spire.pdf.bookmarks.PdfTextStyle;
import com.spire.pdf.graphics.PdfRGBColor;
import java.awt.*;
public class editBookmarks {
public static void main(String[] args) {
//创建一个PdfDocument类的对象
PdfDocument doc = new PdfDocument();
//载入PDF文件
doc.loadFromFile("添加书签.pdf");
//获取第一个书签
PdfBookmark bookmark = doc.getBookmarks().get(0);
//更改书签的标题
bookmark.setTitle("新标题");
//更改书签的字体颜色
bookmark.setColor(new PdfRGBColor(new Color(255,0,0)));
//更改书签的字体格式
bookmark.setDisplayStyle(PdfTextStyle.Italic);
//编辑第一个书签的子书签
for (Object obj : (Iterable) bookmark) {
PdfBookmark childBookmark=(PdfBookmark)obj;
childBookmark.setColor(new PdfRGBColor(new Color(0,0,255)));
childBookmark.setDisplayStyle(PdfTextStyle.Bold);
}
//保存文档
doc.saveToFile("编辑书签.pdf");
doc.close();
}
}
Spire.PDF for Java 还可以用来删除 PDF 文档中的单个、多个或所有书签。其中,PdfDocument.getBookmarks().removeAt() 方法用于删除指定的主书签,PdfDocument.getBookmarks().clear() 方法用于删除所有书签,PdfBookmark.removeAt() 方法用于删除一个主书签的指定子书签。删除 PDF 书签的详细操作步骤如下:
import com.spire.pdf.PdfDocument;
import com.spire.pdf.bookmarks.PdfBookmark;
public class deleteBookmarks {
public static void main(String[] args) {
//创建一个PdfDocument类的对象
PdfDocument pdf = new PdfDocument();
//载入PDF文档
pdf.loadFromFile("添加书签.pdf");
//获取第一个书签
PdfBookmark pdfBookmark = pdf.getBookmarks().get(0);
//删除第一个书签的子书签
pdfBookmark.removeAt(0);
//删除第一个书签及其子书签
//pdf.getBookmarks().removeAt(0);
//删除所有书签
//pdf.getBookmarks().clear();
//保存文档
pdf.saveToFile("删除书签.pdf");
}
}
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
Spire.PDF for Java 3.7.4 现已发布。该版本成功修复了一些在转换PDF到Word/Html/图片以及查找文本时出现的问题。详情见下文。
问题修复:
Spire.Office for Java 3.7.3现已正式发布。该版本新增了一些功能,如Spire.Presentation支持获取形状在幻灯片母版的版式中的原型以及获取当前的主题颜色集合,Spire.PDF支持设置PdfPopupAnnotation的作者和主题。与此同时,一些在加载、转换和操作Word、Presentation和PDF文档时出现的问题也得以成功解决。新功能及问题修复详情如下。
获取Spire.Office for Java 3.7.3,请点击:https://www.e-iceblue.cn/Downloads/Spire-Office-JAVA.html
问题修复:
新功能:
Shape layoutPrototype = shape.getLayoutPrototype();
StringBuilder sb = new StringBuilder();
IMasterSlide masterSlide = presentation.getMasters().get(0);
for (SchemeColor schemeColor : masterSlide.getColorMap().keySet()) {
masterSlide.getColorMap().get(schemeColor);
String content = "key : " +schemeColor +"\tvalue : "+
masterSlide.getColorMap().get(schemeColor) + "\r\n";
sb.append(content);
}
问题修复:
新功能:
PdfPopupAnnotation annotation = new PdfPopupAnnotation(rectangle2D, markupText);
annotation.setAuthor("e-iceblue");
annotation.setSubject("subject_popup");
问题修复:
Spire.Presentation 5.7.2已发布。该版本主要修复了转PPT到PDF、加载PPTX文档和设置动画持续时间时出现的问题。问题修复详情如下。
问题修复:
https://www.e-iceblue.cn/Downloads/Spire-Presentation-NET.html
Spire. Office 5.7.3已正式发布。该版本新增加了一些功能,如Spire.PDF支持转换PDF到Excel;Spire.XLS支持转换根据数据透视表数据生成的图表到PDF时保留字段名标签的效果;Spire.Spreadsheet支持获取设置了数字格式的单元格的文本;Spire.Barcode包含了支持.Net Standard 2.0、MonoAndroid、Xamarin.iOS的dll;Spire.Email新增了netcoreapp2.0, netcoreapp3.0, netstandard2.0, MonoAndroid 以及 Xamarin.iOS。与此同时,一些在加载、转换和操作PDF、Word、Excel、Presentation文档时出现的问题也得以成功解决。新功能及问题修复详情如下。
该版本涵盖了最新版的Spire.Doc、Spire.PDF、Spire.XLS、Spire.Presentation、Spire.DataExport、Spire.Barcode、Spire.DocViewer、Spire.PDFViewer、Spire.OfficeViewer、Spire.Email。
版本信息如下:
https://www.e-iceblue.cn/Downloads/Spire-Office-NET.html
新功能:
PdfDocument pdfDocument = new PdfDocument();
pdfDocument.LoadFromFile(inputPdfFilePath);
pdfDocument.SaveToFile(outputExcelFilePath,FileFormat.XLSX);
问题修复:
新功能:
问题修复:
问题修复:
问题修复:
新功能:
string text = spreadsheet1.ActiveWorksheet[0,0].Text;
问题修复:
新功能:
新功能:
问题修复:
Spire.Doc 8.7.5已发布。此版本主要修复了Word转换为PDF、Word转换为PDF/A、Html转换为PDF、更新TOC和加载Html文档时出现的一些问题。问题修复详情如下。
问题修复:
本文介绍使用 Spire.Office for Java 在 Word 文档中添加条码、二维码的方法。可在文档正文段落中添加,也可在页眉页脚中添加。除了使用本文中的方法外,也可以通过条码字体来创建,具体方法可参考这篇文章。
1、添加条码到 Word(添加到正文段落、页脚为例)
import com.spire.barcode.*;
import com.spire.doc.*;
import com.spire.doc.documents.HorizontalAlignment;
import com.spire.doc.documents.Paragraph;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class AddBarcode {
public static void main(String[] args) throws IOException {
//创建Document对象,加载Word文档
Document doc = new Document();
doc.loadFromFile("test.docx");
//获取所有section
for (int i = 0 ; i < doc.getSections().getCount();i++)
{
Section section = doc.getSections().get(i);
//使用Spire.Barcode的BarcodeSettings和BarcodeGenerator类创建条码并保存为图片
BarcodeSettings settings = new BarcodeSettings();
settings.setType(BarCodeType.Code_128);
settings.setData("123456789");
settings.setData2D("123456789");
settings.setShowText(false);
settings.setBarHeight(4);
settings.setX(0.3f);
settings.hasBorder(true);
settings.setBorderWidth(0.5f);
settings.setBorderColor(new Color(135,206,250));
settings.setBackColor(new Color(240,255,255));
BarCodeGenerator barCodeGenerator = new BarCodeGenerator(settings);
BufferedImage bufferedImage = barCodeGenerator.generateImage();
ImageIO.write(bufferedImage, "png", new File("Barcode.png"));
//添加条码到正文段落
Paragraph paragraph = section.addParagraph();
paragraph.setText("收货码:");
paragraph.appendPicture("Barcode.png");
paragraph.getFormat().setHorizontalAlignment(HorizontalAlignment.Right);
//添加条码图片到Word页脚
HeaderFooter footer = section.getHeadersFooters().getFooter();
Paragraph footerpara = footer.addParagraph();
footerpara.setText("扫码识真伪:");
footerpara.appendPicture("Barcode.png");
footerpara.getFormat().setHorizontalAlignment(HorizontalAlignment.Left);
}
//保存文档
doc.saveToFile("BarCodeToWord.docx", FileFormat.Docx_2013);
doc.dispose();
}
}
条码添加效果:

2、添加二维码到 Word(添加到正文段落、页眉为例)
import com.spire.barcode.*;
import com.spire.doc.*;
import com.spire.doc.documents.HorizontalAlignment;
import com.spire.doc.documents.Paragraph;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.RenderedImage;
import java.io.File;
import java.io.IOException;
public class AddQRCode {
public static void main(String[] args) throws IOException {
//创建Document对象,加载Word文档
Document doc = new Document();
doc.loadFromFile("test.docx");
//获取所有section
for (int i = 0 ; i < doc.getSections().getCount();i++)
{
Section section = doc.getSections().get(i);
//使用Spire.Barcode的BarcodeSettings和BarcodeGenerator类创建二维码并保存为图片
BarcodeSettings settings = new BarcodeSettings();
settings.setType(BarCodeType.QR_Code);
settings.setData("123456");
settings.setData2D("123456");
settings.setX(0.7f);
settings.setLeftMargin(0);
settings.setShowTextOnBottom(true);
settings.setQRCodeECL(QRCodeECL.Q);
settings.setQRCodeDataMode(QRCodeDataMode.Numeric);
BarCodeGenerator generator = new BarCodeGenerator(settings);
Image image = generator.generateImage();
ImageIO.write((RenderedImage) image, "png", new File("QRCode.png"));
//添加二维码到正文段落
Paragraph paragraph = section.addParagraph();
paragraph.appendPicture("QRCode.png");
paragraph.getFormat().setHorizontalAlignment(HorizontalAlignment.Right);
//添加二维码图片到Word页眉
HeaderFooter header = section.getHeadersFooters().getHeader();
Paragraph headerpara = header.addParagraph();
headerpara.appendPicture("QRCode.png");
headerpara.getFormat().setHorizontalAlignment(HorizontalAlignment.Center);
}
//保存文档
doc.saveToFile("QRCodeToWord.docx", FileFormat.Docx_2013);
doc.dispose();
}
}
二维码添加效果:

今天,我们发布了Spire.Doc for Java 3.7.2,该版本加强了Word转PDFA,同时修复加载和操作Word文档时出现的一些问题。
问题修复:
在一篇 PDF 格式的文档中,如果文档中包含表格数据,想要编辑表格里面的数据,通常可以通过将该 PDF 文档转为 Excel 格式后,再进行编辑。本文,将以 C# 及 VB.NET 代码为例,介绍如何使用 Spire.PDF for .NET 将 PDF 转为 Excel。下面是具体步骤。
首先,您需要添加 Spire.PDF for .NET 包中包含的 DLL 文件作为.NET项目中的引用。DLL 文件可以从此链接下载或通过 NuGet 安装。
PM> Install-Package Spire.PDFSpire.PDF for .NET 提供了方法可直接用于加载 PDF 文档并保存为目标文件格式。下面是实现转换的主要代码步骤:
using Spire.Pdf;
namespace PDFtoExcel
{
class Program
{
static void Main(string[] args)
{
//加载PDF文档
PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile("sample.pdf");
//保存为Excel文档
pdf.SaveToFile("ToExcel.xlsx",FileFormat.XLSX);
}
}
}Imports Spire.Pdf
Namespace PDFtoExcel
Class Program
Private Shared Sub Main(args As String())
'加载PDF文档
Dim pdf As New PdfDocument()
pdf.LoadFromFile("sample.pdf")
'保存为Excel文档
pdf.SaveToFile("ToExcel.xlsx", FileFormat.XLSX)
End Sub
End Class
End Namespace
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请 该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。 获取有效期 30 天的临时许可证。