Java 添加馒胆、修改缨称、讀取PDF書簽

一、序言

在前文中祝迂,我曾介紹過如何使用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);

}

}

}

}

讀取效果:

(本文完)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末顶捷,一起剝皮案震驚了整個濱河市挂绰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌服赎,老刑警劉巖葵蒂,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異重虑,居然都是意外死亡践付,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進(jìn)店門嚎尤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來荔仁,“玉大人,你說我怎么就攤上這事芽死》α海” “怎么了?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵关贵,是天一觀的道長遇骑。 經(jīng)常有香客問我,道長揖曾,這世上最難降的妖魔是什么落萎? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮炭剪,結(jié)果婚禮上练链,老公的妹妹穿的比我還像新娘。我一直安慰自己奴拦,他們只是感情好媒鼓,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著错妖,像睡著了一般绿鸣。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上暂氯,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天潮模,我揣著相機(jī)與錄音,去河邊找鬼痴施。 笑死擎厢,一個胖子當(dāng)著我的面吹牛究流,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播锉矢,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼梯嗽,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了沽损?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤循头,失蹤者是張志新(化名)和其女友劉穎绵估,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體卡骂,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡国裳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了全跨。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缝左。...
    茶點(diǎn)故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖浓若,靈堂內(nèi)的尸體忽然破棺而出渺杉,到底是詐尸還是另有隱情,我是刑警寧澤挪钓,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布是越,位于F島的核電站,受9級特大地震影響碌上,放射性物質(zhì)發(fā)生泄漏倚评。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一馏予、第九天 我趴在偏房一處隱蔽的房頂上張望天梧。 院中可真熱鬧,春花似錦霞丧、人聲如沸呢岗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽敷燎。三九已至,卻和暖如春箩言,著一層夾襖步出監(jiān)牢的瞬間硬贯,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工陨收, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留饭豹,地道東北人鸵赖。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像拄衰,于是被迫代替她去往敵國和親它褪。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評論 2 345