概述
本文介紹通過Java程式來操作PDF書簽,根據對書簽的不同操作要求,分以下情況來介紹:
1. 添加書簽(包括添加一級書簽、多級子書簽)
2. 編輯書簽(包括重置書簽標題、書簽樣式等)
3. 洗掉書簽(包括洗掉所有書簽、洗掉子書簽等)
4. 讀取書簽
工具使用
程式使用輔助工具:Free Spire.PDF for Java(免費版),
方法1:可下載jar包,解壓并將lib檔案夾下的jar檔案匯入java程式(手動匯入)
方法2: 通過創建Maven專案程式,在pom.xml中配置maven倉庫路徑并指定Free Spire.PDF for Java 的依賴,配置完成后,在IDEA中,點擊“Import Changes”匯入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>
(Ecllipse的匯入方法,參考這篇文章)
jar匯入結果如下圖所示:

代碼示例
1. 添加書簽到PDF
import com.spire.pdf.*; 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("test.pdf"); //獲取第一頁 PdfPageBase page = pdf.getPages().get(0); //添加書簽 PdfBookmark bookmark = pdf.getBookmarks().add("第一部分 調查研究概述"); bookmark.setDisplayStyle(PdfTextStyle.Bold);//設定字體樣式 bookmark.setColor(new PdfRGBColor(new Color(139, 69, 19)));//設定字體顏色 PdfDestination destination = new PdfDestination(page, new Point2D.Float(0, 0));//設定書簽的目標頁面和位置 bookmark.setAction(new PdfGoToAction(destination)); //添加二級子書簽 PdfBookmark childBookmark = bookmark.add("第一節 菌種特性研究"); childBookmark.setColor(new PdfRGBColor(new Color(255, 127, 80)));//設定字體顏色 childBookmark.setDisplayStyle(PdfTextStyle.Italic);//設定字體樣式 PdfDestination childDestination = new PdfDestination(page, new Point2D.Float(0, 100));//設定子書簽的目標頁面和位置 childBookmark.setAction(new PdfGoToAction(childDestination)); //添加三級子書簽 PdfBookmark childBookmark1 = childBookmark.add("1. 菌種特性概念"); childBookmark1.setColor(new PdfRGBColor(new Color(125, 152, 100)));//設定字體顏色 childBookmark1.setDisplayStyle(PdfTextStyle.Italic);//設定字體樣式 PdfDestination childDestination1 = new PdfDestination(page, new Point2D.Float(50, 100));//設定子書簽的目標頁面和位置 childBookmark1.setAction(new PdfGoToAction(childDestination1)); //保存檔案 pdf.saveToFile("AddBookmarks.pdf"); pdf.dispose(); } }
書簽添加結果:

2. 編輯PDF中已有的書簽
import com.spire.pdf.*; import com.spire.pdf.bookmarks.PdfBookmark; import com.spire.pdf.bookmarks.PdfTextStyle; import com.spire.pdf.graphics.PdfRGBColor; import java.awt.*; public class ModifyBookmark { public static void main(String[] args) { //創建PdfDocument實體 PdfDocument pdf = new PdfDocument(); //加載PDF檔案 pdf.loadFromFile("AddBookmarks.pdf"); //獲取第一個書簽,修改書簽標題、字體顏色、字體樣式 PdfBookmark bookmark = pdf.getBookmarks().get(0); bookmark.setTitle("新標題"); bookmark.setColor(new PdfRGBColor(new Color(255,20,147))); bookmark.setDisplayStyle(PdfTextStyle.Bold); //修改子書簽的字體、顏色和字體樣式等 for (int i = 0 ; i< pdf.getBookmarks().getCount(); i++ ) { //修改二級子書簽 PdfBookmark childBookmark = bookmark.get(0); childBookmark.setColor(new PdfRGBColor(new Color(148,0,211))); childBookmark.setDisplayStyle(PdfTextStyle.Italic); //修改三級子書簽 PdfBookmark childBookmark1 = childBookmark.get(0); childBookmark1.setColor(new PdfRGBColor(new Color(255,215,0)) ); childBookmark1.setDisplayStyle(PdfTextStyle.Italic); } //保存檔案 pdf.saveToFile("ModifyBookmarks.pdf"); pdf.close(); } }
書簽修改結果:

3. 洗掉PDF中的書簽
import com.spire.pdf.*; public class DeleteBookmark { public static void main(String[] args) { //創建PdfDocument實體,加載PDF檔案 PdfDocument pdf = new PdfDocument(); pdf.loadFromFile("AddBookmarks.pdf"); //洗掉第一個書簽(包括洗掉其包含的子書簽) pdf.getBookmarks().removeAt(0); /*//僅洗掉子書簽 PdfBookmark childBookmark = pdf.getBookmarks().get(0); childBookmark.removeAt(0);*/ //保存檔案 pdf.saveToFile("RemoveBookmark.pdf"); pdf.dispose(); } }
4. 讀取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 GetBookmark { public static void main(String[] args) { //加載包含書簽的PDF檔案 PdfDocument pdf = new PdfDocument(); pdf.loadFromFile("AddBookmarks.pdf"); //獲取書簽集合 PdfBookmarkCollection bookmarkCollection = pdf.getBookmarks(); //實體化StringBuilder類 StringBuilder stringbuilder = new StringBuilder(); //定義方法獲取書簽 GetBookmarkTitle(bookmarkCollection, stringbuilder); //宣告txt檔案,并將獲得的多級書簽寫入到檔案.txt FileWriter writer; try { writer = new FileWriter("讀取的書簽.txt"); writer.write(stringbuilder.toString()); writer.flush(); } catch (IOException e) { e.printStackTrace(); } pdf.dispose(); } //定義方法獲取書簽標題 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); } } } }
書簽讀取結果:

(完)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/136603.html
標籤:Java
下一篇:測驗word發布博客
