Android根據(jù)界面View生成PDF评架,并在本地實(shí)現(xiàn)預(yù)覽

PdfDocument類

Android API19中提供了PdfDocument類,實(shí)現(xiàn)了根據(jù)Android頁(yè)面生成PDF文檔炕泳。
API21中提供了PdfRenderer類纵诞,實(shí)現(xiàn)了渲染PDF文檔。

實(shí)現(xiàn)頁(yè)面生成PDF

首先新建PdfDocument對(duì)象培遵。

PdfDocument document = new PdfDocument();

新建一個(gè)PageInfo對(duì)象浙芙,參數(shù)分別是,寬籽腕、高和頁(yè)數(shù)嗡呼。

這里view的getWidth()方法是獲取控件的高度,使用getMeasuredHeight()方法是獲取可視范圍內(nèi)的高度皇耗。

PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(scrollView.getWidth(), scrollView.getHeight(), 1).create();

同根document對(duì)象南窗,新建第一頁(yè)對(duì)象。

PdfDocument.Page page = document.startPage(pageInfo);

用View的draw()方法,page對(duì)象提供畫筆繪制View万伤。

scrollView.draw(page.getCanvas());

調(diào)用finishPage()方法表示繪制結(jié)束窒悔。

document.finishPage(page);

最后,將document對(duì)象輸出為File即可敌买。

document.writeTo(new FileOutputStream(file));

最后要將document關(guān)閉以免內(nèi)存泄漏简珠。

document.close();

這里有一個(gè)重點(diǎn),在Android7.0及以下版本(版本節(jié)點(diǎn)可能上下有所浮動(dòng)虹钮,測(cè)試不完全)北救,會(huì)出現(xiàn)繪制速度慢導(dǎo)致線程阻塞,生成文件過(guò)大(中字導(dǎo)致)芜抒,所以最好將執(zhí)行方法放到子線程進(jìn)行

Android PdfViewer進(jìn)行本地預(yù)覽

Github地址

集成

implementation 'com.github.barteksc:android-pdf-viewer:2.8.2'

在XML中填充控件

<com.github.barteksc.pdfviewer.PDFView
        android:id="@+id/pdf_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

直接傳入文件對(duì)象,可以直接加載本地文件

File file = new File(Environment.getExternalStorageDirectory() + "/計(jì)價(jià)器檢定證書.pdf");
pdfView.fromFile(file).load();
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末宅倒,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蹭劈,更是在濱河造成了極大的恐慌,老刑警劉巖线召,帶你破解...
    沈念sama閱讀 222,729評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件铺韧,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡哈打,警方通過(guò)查閱死者的電腦和手機(jī)讯壶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門料仗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人伏蚊,你說(shuō)我怎么就攤上這事立轧。” “怎么了氛改?”我有些...
    開(kāi)封第一講書人閱讀 169,461評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵比伏,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我凳怨,道長(zhǎng),這世上最難降的妖魔是什么紫新? 我笑而不...
    開(kāi)封第一講書人閱讀 60,135評(píng)論 1 300
  • 正文 為了忘掉前任李剖,我火速辦了婚禮,結(jié)果婚禮上篙顺,老公的妹妹穿的比我還像新娘。我一直安慰自己匪蟀,他們只是感情好宰僧,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,130評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著琴儿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪显熏。 梳的紋絲不亂的頭發(fā)上晒屎,一...
    開(kāi)封第一講書人閱讀 52,736評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音履肃,去河邊找鬼坐桩。 笑死尺棋,一個(gè)胖子當(dāng)著我的面吹牛绵跷,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播荆残,決...
    沈念sama閱讀 41,179評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼净当,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蕴潦!你這毒婦竟也來(lái)了俘闯?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 40,124評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤此疹,失蹤者是張志新(化名)和其女友劉穎遮婶,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體旗扑,經(jīng)...
    沈念sama閱讀 46,657評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,723評(píng)論 3 342
  • 正文 我和宋清朗相戀三年脊串,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了清钥。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,872評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡缕坎,死狀恐怖篡悟,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情搬葬,我是刑警寧澤,帶...
    沈念sama閱讀 36,533評(píng)論 5 351
  • 正文 年R本政府宣布女仰,位于F島的核電站抡锈,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏床三。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,213評(píng)論 3 336
  • 文/蒙蒙 一聂渊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧汉嗽,春花似錦、人聲如沸暖夭。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,700評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至咬清,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間旧烧,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,819評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工平委, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留夺谁,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,304評(píng)論 3 379
  • 正文 我出身青樓蜡塌,卻偏偏與公主長(zhǎng)得像勿负,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子奴愉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,876評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • java 接口的意義-百度 規(guī)范躁劣、擴(kuò)展、回調(diào) 抽象類的意義-樂(lè)視 為其子類提供一個(gè)公共的類型封裝子類中得重復(fù)內(nèi)容定...
    交流電1582閱讀 2,243評(píng)論 0 11
  • 一志膀、簡(jiǎn)歷準(zhǔn)備 1熙宇、個(gè)人技能 (1)自定義控件溉浙、UI設(shè)計(jì)、常用動(dòng)畫特效 自定義控件 ①為什么要自定義控件戳稽? Andr...
    lucas777閱讀 5,221評(píng)論 2 54
  • ¥開(kāi)啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開(kāi)一個(gè)線程惊奇,因...
    小菜c閱讀 6,451評(píng)論 0 17
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,113評(píng)論 1 32
  • 1颂郎、如何導(dǎo)入外部數(shù)據(jù)庫(kù)吼渡? 把原數(shù)據(jù)庫(kù)包括在項(xiàng)目源碼的 res/raw Android系統(tǒng)下數(shù)據(jù)庫(kù)應(yīng)該存放在 /da...
    胡二囧閱讀 401評(píng)論 0 1