一、序言
在前文中祝迂,我曾介紹過如何使用Java程序來添加睦尽、讀取和刪除Word書簽。與Word文檔一樣型雳,PDF文檔同樣也可進(jìn)行書簽的添加当凡、修改及讀取。本文就將通過代碼演示來詳細(xì)講解其操作方法四啰。
二宁玫、環(huán)境搭建
本文代碼演示所用到的工具為Free Spire.PDF for Java, 可通過官網(wǎng)下載獲取。解壓文檔后將lib文件夾下的Spire.Pdf.jar手動導(dǎo)入Java程序柑晒。
另外欧瘪,也可通過Maven倉庫將JAR包安裝到Maven項目中。僅需在pom.xml文件中配置Maven倉庫路徑匙赞,并指定Free Spire.PDF for Java的Maven依賴佛掖。配置完成后,點(diǎn)擊“Import Changes”即可導(dǎo)入JAR包涌庭。
<repositories>? ? ? ? ?<repository>???????????<id>com.e-iceblue</id>?????????????<url>http://repo.e-iceblue.cn/repository/maven-public/</url>???????</repository></repositories>?<dependencies>???<dependency>???????<groupId>e-iceblue</groupId>???????<artifactId>spire.pdf.free</artifactId>???????<version>2.6.3</version>??? </dependency></dependencies>
三芥被、代碼演示
示例1 添加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) {
//創(chuàng)建PdfDocument實例
PdfDocument pdf =new PdfDocument();
//加載PDF文檔
pdf.loadFromFile("C:\\Users\\Test1\\Desktop\\Sample.pdf");
//獲取第一頁
PdfPageBase page = pdf.getPages().get(0);
//添加書簽
PdfBookmark bookmark = pdf.getBookmarks().add("貼春聯(lián)");
//設(shè)置書簽的目標(biāo)頁面和位置
PdfDestination destination =new PdfDestination(page,new Point2D.Float(0,0));
bookmark.setAction(new PdfGoToAction(destination));
//設(shè)置字體顏色
bookmark.setColor(new PdfRGBColor(new Color(2,139,2)));
//設(shè)置字體樣式
bookmark.setDisplayStyle(PdfTextStyle.Bold);
//添加子書簽
PdfBookmark childBookmark = bookmark.add("春聯(lián)的種類比較多,依其使用場所坐榆,可分為門心拴魄、框?qū)ΑM披、春條匹中、斗方等夏漱。");
//設(shè)置子書簽的目標(biāo)頁面和位置
PdfDestination childDestination =new PdfDestination(page,new Point2D.Float(0,100));
childBookmark.setAction(new PdfGoToAction(childDestination));
//設(shè)置字體顏色
childBookmark.setColor(new PdfRGBColor(new Color(255,80,226)));
//設(shè)置字體樣式
childBookmark.setDisplayStyle(PdfTextStyle.Italic);
//保存結(jié)果文檔
pdf.saveToFile("output/AddBookmarks.pdf");
}
}
添加效果:
示例2 修改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 EditBookmark {
public static void main(String[] args)? {
//創(chuàng)建PdfDocument實例
PdfDocument doc =new PdfDocument();
//加載PDF文檔
doc.loadFromFile("C:\\Users\\Test1\\Desktop\\AddBookmarks.pdf");
//獲取第一個書簽
PdfBookmark bookmark = doc.getBookmarks().get(0);
//修改書簽的標(biāo)題
bookmark.setTitle("新標(biāo)題");
//修改書簽的字體顏色
bookmark.setColor(new PdfRGBColor(new Color(255,0,0)));
//修改書簽的字體樣式
bookmark.setDisplayStyle(PdfTextStyle.Italic);
//修改第一個書簽的子書簽的字體顏色和字體樣式
for (PdfBookmark childBookmark : (Iterable ) bookmark) {
childBookmark.setColor(new PdfRGBColor(new Color(0,0,255)));
childBookmark.setDisplayStyle(PdfTextStyle.Bold);
}
//保存文檔
doc.saveToFile("output/EditBookmarks.pdf");
doc.close();
}
}
修改效果:
示例3 讀取PDF書簽
import com.spire.pdf.*;
import com.spire.pdf.bookmarks.PdfBookmark;
import com.spire.pdf.bookmarks.PdfBookmarkCollection;
import java.io.FileWriter;
import java.io.IOException;
public class ReadBookmark {
public static void main(String[] args) {
//加載包含書簽的PDF文檔
PdfDocument pdf =new PdfDocument();
pdf.loadFromFile("C:\\Users\\Test1\\Desktop\\AddBookmarks.pdf");
//獲取書簽集合
PdfBookmarkCollection bookmarkCollection = pdf.getBookmarks();
//實例化StringBuilder類
StringBuilder stringbuilder =new StringBuilder();
//定義方法獲取書簽
GetBookmarkTitle(bookmarkCollection, stringbuilder);
//聲明txt文件,并將獲得的多級書簽寫入到文件.txt
FileWriter writer;
try {
writer =new FileWriter("output/ReadBookmark.txt");
writer.write(stringbuilder.toString());
writer.flush();
}catch (IOException e) {
e.printStackTrace();
}
pdf.dispose();
}
//定義方法獲取書簽標(biāo)題
static void GetBookmarkTitle(PdfBookmarkCollection bookmarkCollection, StringBuilder stringbuilder)
{
if (bookmarkCollection.getCount()>0)
{
for(int i =0 ; i< bookmarkCollection.getCount(); i++ )
{
PdfBookmark parentBookmark = bookmarkCollection.get(i);
stringbuilder.append(parentBookmark.getTitle());
//遞歸文檔多級書簽
GetBookmarkTitle(parentBookmark, stringbuilder);
}
}
}
}
讀取效果:
(本文完)