Java 操作PDF書籤詳解 - 添加、修改、讀取和刪除

目錄

  1. 前言

  2. Free Spire.PDF for Java庫概述和安裝

  3. PDF文檔添加書籤

  4. 修改現有書籤

  5. 設置PDF文檔打開時展開或摺疊書籤

  6. 讀取書籤標題

  7. PDF文檔中刪除書籤


前言

書籤在一些PDF教程和篇幅較長的PDF文檔中比較常見,它可以幫我們快速瞭解一篇文章的內容結構,以及快速定位到文中的某一個位置。這篇文章將介紹如何使用免費PDF組件- Free Spire.PDF for JavaJava應用程序中操作PDF書籤。


Free Spire.PDF for Java庫概述和安裝

Free Spire.PDF for Java 是一個免費的 Java PDF類庫。該類庫支持在 Java 應用程序中生成 PDF 文檔和操作現有 PDF 文檔,並且運行環境無需安裝 Adobe Acrobat

Free Spire.PDF for Java 包含一系列接口,支持對PDF 文檔安全性設置,提取文本和圖片,合併和拆分 PDF,畫文本、圖片、形狀、條形碼到 PDF,創建和填充表單,添加和刪除層,重疊 PDF 頁面,添加文本/圖片水印,添加、更新、刪除 PDF 書籤,添加表格,壓縮 PDF 文檔等。此外,Spire.PDF for Java 還支持將 PDF 文檔轉換爲 WordHTML、圖片、SVG PDF/A 格式,以及將XPSPDF互轉。

如果你的項目是maven工程的話,在pom.xml文件中添加如下依賴,即可以給自己的應用程序添加Free Spire.PDF for Java庫支持。

<repositories>
        <repository>
            <id>com.e-iceblue</id>
            <name>e-iceblue</name>
            <url>http://repo.e-iceblue.com/nexus/content/groups/public/</url>
        </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.pdf.free</artifactId>
        <version>2.0.0</version>
    </dependency>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.pdf.common.free</artifactId>
        <version>2.0.0</version>
    </dependency>
</dependencies>


 也可以通過官網下載地址下載最新的Free Spire.PDF for Javajar文件。


PDF文檔 添加書籤

以下示例展示瞭如何創建一個PDF文檔,添加書籤並設置書籤的格式:

//創建PDF
PdfDocument pdf = new PdfDocument();
//添加一頁
PdfPageBase page = pdf.getPages().add();

float x = 0;
float y = 50;

//在頁面上繪製文本內容
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial Unicode MS",Font.PLAIN,14),true);
PdfSolidBrush brush = new PdfSolidBrush(new PdfRGBColor(Color.BLACK));
page.getCanvas().drawString("第一章 緒論",font, brush, new Point2D.Float(x, y));

//添加書籤
PdfBookmark bookmark = pdf.getBookmarks().add("第一章 緒論");
//設置書籤的文本格式爲加粗
bookmark.setDisplayStyle(PdfTextStyle.Bold);
//設置書籤的字體顏色
bookmark.setColor(new PdfRGBColor(new Color(46,139,87)));//SeaGreen
//設置書籤指向的頁面
bookmark.setDestination(new PdfDestination(page));
//設置書籤指向的頁面具體位置
bookmark.getDestination().setLocation(new Point2D.Float(x, y));

//保存
pdf.saveToFile("AddBookmark.pdf");

1.png

以下例子展示瞭如何創建一個PDF文檔,並給它添加多級(一級和二級)書籤:

//創建PDF
 PdfDocument pdf = new PdfDocument();
 //添加一頁
 PdfPageBase page = pdf.getPages().add();
 
 float x = 0;
 float y = 50;
 
 //在頁面上繪製文字
 PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial Unicode MS",Font.PLAIN,14),true);
 PdfSolidBrush brush = new PdfSolidBrush(new PdfRGBColor(Color.BLACK));
 page.getCanvas().drawString("第一章 緒論",font, brush, new Point2D.Float(x, y));
 page.getCanvas().drawString("1.1 傳熱學的研究內容及其在科學技術和工程中的應用", font, brush, new Point2D.Float(x, y + 50));
 
 //添加書籤
 PdfBookmark bookmark = pdf.getBookmarks().add("第一章 緒論");
 bookmark.setDisplayStyle(PdfTextStyle.Bold);
 bookmark.setColor(new PdfRGBColor(new Color(46,139,87)));
 bookmark.setDestination(new PdfDestination(page));
 bookmark.getDestination().setLocation(new Point2D.Float(x, y));
 
 //添加第二級書籤
 PdfBookmark childBookmark = bookmark.add( "1.1 傳熱學的研究內容及其在科學技術和工程中的應用");
 childBookmark.setDisplayStyle(PdfTextStyle.Italic);
 childBookmark.setColor(new PdfRGBColor(Color.BLACK));
 childBookmark.setDestination(new PdfDestination(page));
 childBookmark.getDestination().setLocation(new Point2D.Float(x, y + 50));
 
 //保存
 pdf.saveToFile("AddChildBookmark.pdf");

2.png

除了在新建PDF時添加書籤,我們也可以給現有的PDF文檔添加書籤:

//加載PDF
 PdfDocument pdf = new PdfDocument();
 pdf.loadFromFile("Sample.pdf");
 
 //獲取第一頁
 PdfPageBase page = pdf.getPages().get(0);
 
 //添加書籤
 PdfBookmark bookmark = pdf.getBookmarks().add("明天早上數");
 
 //設置書籤的文本格式,字體顏色,指向頁面和位置
 bookmark.setDisplayStyle(PdfTextStyle.Bold);
 bookmark.setColor(new PdfRGBColor(Color.BLACK));
 bookmark.setDestination(new PdfDestination(page));
 bookmark.getDestination().setLocation(new Point2D.Float(0,10));
 
 //保存
 pdf.saveToFile("AddBkmktoExistPDF.pdf");


修改書籤

以下示例展示瞭如何修改現有書籤的標題和字體顏色:

//加載PDF
 PdfDocument pdf = new PdfDocument();
 pdf.loadFromFile("AddChildBookmark.pdf");
 
 //獲取PDF書籤集合
 PdfBookmarkCollection bookmarkCollection = pdf.getBookmarks();
 //獲取第一個書籤
 PdfBookmark bookmark = bookmarkCollection.get(0);
 
 //獲取該書籤下的第一個子書籤
 PdfBookmark childBookmark = bookmark.get(0);
 //修改子書籤的標題
 childBookmark.setTitle("第二級書籤");
 //修改子書籤的字體顏色
 childBookmark.setColor(new PdfRGBColor(Color.RED));
 
 //保存
 pdf.saveToFile("ModifyBookmark.pdf");

4.png


設置打開PDF文檔時展開或摺疊書籤

PDF書籤默認爲打開模式,但我們可以設置將PDF書籤摺疊起來:

//加載PDF
  PdfDocument pdf = new PdfDocument();
  pdf.loadFromFile("AddChildBookmark.pdf");
 
  //false爲摺疊,true爲展開
  pdf.getViewerPreferences().setBookMarkExpandOrCollapse(false);
 
  //保存
  pdf.saveToFile("CollapseBookmark.pdf");

5.png


讀取書籤標題

以下示例展示瞭如何讀取PDF文檔中的書籤標題:

//加載PDF
PdfDocument pdf = new PdfDocument();
pdf.loadFromFile("AddChildBookmark.pdf");

//獲取書籤的集合
PdfBookmarkCollection bookmarks = pdf.getBookmarks();

StringBuilder builder = new StringBuilder();

//調用ReadBookmarks方法讀取書籤標題
ReadBookmarks(bookmarks, builder);

//寫入到文本文件
FileWriter fw = new FileWriter("Bookmarks.txt");
try {
    fw.write(builder.toString());
    fw.flush();
} catch (IOException e) {
    e.printStackTrace();
}

//ReadBookmarks方法
static void ReadBookmarks(PdfBookmarkCollection bookmarks,StringBuilder builder) throws IOException {

    if (bookmarks.getCount() > 0)
    {
        for(PdfBookmark parentBookmark : (Iterable<PdfBookmark>) bookmarks)
        {
            builder.append(parentBookmark.getTitle()+"\r\n");
            ReadBookmarks(parentBookmark,builder);
        }
    }
}

6.png


刪除書籤

以下示例刪除了PDF文檔中的所有書籤:

//加載PDF
PdfDocument pdf = new PdfDocument();
pdf.loadFromFile("AddChildBookmark.pdf");

//獲取書籤的集合
PdfBookmarkCollection bookmarkCollection = pdf.getBookmarks();
 
//刪除集合中的所有書籤
bookmarkCollection.clear();

//保存
pdf.saveToFile("DeleteBookmark.pdf");

 除刪除所有書籤外,我們還可以刪除指定書籤。在刪除指定書籤時,既可以通過該書籤的索引刪除,也可通過該書籤的標題刪除。

//加載PDF
PdfDocument pdf = new PdfDocument();
pdf.loadFromFile("AddChildBookmark.pdf");

//獲取書籤的集合
PdfBookmarkCollection bookmarkCollection = pdf.getBookmarks();
//從集合中刪除第一個書籤及其子書籤
//通過書籤索引刪除
//bookmarkCollection.removeAt(0);
//通過書籤標題刪除
bookmarkCollection.remove("第一章 緒論");

//保存
pdf.saveToFile("DeleteBookmark.pdf");
 


 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章