打印小項(xiàng)目的總結(jié)(二)

繼上次信函打印之后赖临,這個(gè)小項(xiàng)目需要完全移植到vue+webpack的項(xiàng)目中鲤脏,中間經(jīng)歷很多波折秸歧,找了很多打印的小竅門厨姚,最終還是完成了基本的需求。

至此之前键菱,這個(gè)打印的小項(xiàng)目完全是使用原生的html+js寫的谬墙。之后我們嘗試了使用Lodop插件實(shí)現(xiàn)打印功能,同樣也使用了原生js和html纱耻,當(dāng)然這些最后的嘗試也成功了芭梯。

最后打算將這個(gè)小小的項(xiàng)目合并到vue項(xiàng)目中時(shí)险耀,我們打算使用Lodop插件弄喘,可是以失敗告終。對于我們幾個(gè)vue小白來說甩牺,很是頭疼蘑志。尤其是ES6的語法規(guī)范,讓我們引入的Lodop.js第三方插件,無從下手急但。處理方法有兩種:(1)重寫ES6代碼規(guī)范澎媒;(2)按照ES6的語法規(guī)范重寫Lodop.js。對于這兩種方法波桩,按照我們自己的能力來說戒努,著實(shí)不可靠。于是只能尋找其他的方法镐躲。

接下來储玫,我們打算回頭繼續(xù)使用當(dāng)時(shí)第一種實(shí)現(xiàn)方法。我們當(dāng)時(shí)使用了Jquery的jQuery.PrintArea.js工具來實(shí)現(xiàn)的html局部打印萤皂。這個(gè)在vue+webpack項(xiàng)目中也是因?yàn)橐?guī)范等等問題只能放棄撒穷。于是,我們瘋狂的在npm官網(wǎng)中找尋裆熙,能夠在這個(gè)項(xiàng)目中使用的第三方插件端礼,或者其他的第三方j(luò)s工具。當(dāng)找到Print.js時(shí)很是高興入录,可是使用之后發(fā)現(xiàn)并不像想象中使用jQuery.PrintArea.js那樣得心應(yīng)手蛤奥。尤其是滿足不了我們想要的打印樣式的設(shè)置。最后決定重新找突破口僚稿,先能夠滿足打印的需求喻括,幾經(jīng)輾轉(zhuǎn)最后嘗試使用方法如下:

        var newWindow = window.open('.')
        var docStr = this.$refs['letter-one'].$el.innerHTML
        newWindow.document.write(docStr)
        newWindow.document.close()
        newWindow.print()
        newWindow.close()

這個(gè)方法是再原生不過的,把想打印的區(qū)域作為document放入新的窗口newWindow贫奠,然后打印這個(gè)新窗口的內(nèi)容唬血。這個(gè)方法看著很low,但是通過這種方法唤崭,我們基本能夠滿足后面按照我們方法下的樣式的設(shè)置拷恨,打印樣式的渲染等等,用起來還是很爽的谢肾。

在這塊碰到的問題是腕侄,當(dāng)打印時(shí)修改頁面的樣式,但是由于頁面樣式的渲染有一個(gè)過程芦疏,開始不知道為什么打印時(shí)第一次樣式?jīng)]有改變冕杠,第二次樣式就改變過來了(此時(shí)并沒有設(shè)置刷新)。后來知道這個(gè)是因?yàn)轫撁鎭聿患颁秩舅彳睿栽谛薷臉邮胶笤O(shè)置了一個(gè)等待時(shí)間再調(diào)用window.print()分预,這樣就解決了這個(gè)問題。代碼如下:

        this.$refs['letter-one'].lt1ChangeStyle()
        setTimeout(() => {
          var newWindow = window.open('.')
          var docStr = this.$refs['letter-one'].$el.innerHTML
          newWindow.document.write(docStr)
          // newWindow.document.close()
          newWindow.print()
          newWindow.close()
        }, 500)
        setTimeout(() => {
          this.$refs['letter-one'].refreshPage()
        }, 500)

這種方法薪捍,也是沒有辦法中的辦法笼痹,就這樣擼起袖子干下去了配喳。


尷尬中的無奈夾雜著其他心情

這些東西就怕沒有思路,只要有了思路凳干,再難也能找到解決問題的辦法晴裹。接下來就是更多的和vue打交道了。記得兩個(gè)月前是第一次聽到“組件”這個(gè)概念的救赐,別說vue框架了涧团。vue簡直和html+原生js就是不同的理解,開始根本無法理解這些東西经磅,就算打開文檔在哪里看一個(gè)小時(shí)少欺,說不定什么都沒有看懂,一臉懵逼馋贤。就這樣忍者干吧赞别,有什么辦法呢,哪個(gè)全棧工程師不是練出來的呢配乓。哈哈仿滔。

慢慢的去接受和理解,什么是組件犹芹,<template>標(biāo)簽是什么鬼崎页,自定義的標(biāo)簽又是什么,什么是數(shù)據(jù)雙向綁定腰埂,什么是vue-router飒焦,以及到現(xiàn)在還是不明白的一些其他很多語法。慢慢的還是把單頁打印做了出來屿笼。接著面臨的是批量打印牺荠,這個(gè)在網(wǎng)上找了各種的方法,無意中有一次驴一,因?yàn)榇蛴〉膁iv區(qū)域中寫了兩個(gè)div休雌,結(jié)果打印時(shí)出現(xiàn)的打印頁的內(nèi)容給了我很大的啟發(fā),就是在打印區(qū)域訪很多個(gè)div肝断,每個(gè)div的高度都設(shè)置成A4紙固定的高度杈曲,這樣自動(dòng)會(huì)擠成一頁一頁的A4紙大小。帶著這種解決想法胸懈,在網(wǎng)上找了很多這種方法的可行性担扑,其中看到一篇文章,有提到這種方法趣钱,并且那個(gè)小伙說已經(jīng)用在項(xiàng)目中涌献,給了我很大的鼓勵(lì)。于是乎晚上回家試驗(yàn)了一番羔挡,果然可以洁奈,但是這個(gè)確實(shí)是有很大的局限性间唉。局限性就不多說了绞灼,總之是不靈活利术。但是這就是完成批量打印的救命稻草。第二天開始啟動(dòng)低矮,繼續(xù)和vue斗爭印叁。

在批量打印時(shí),使用了vue中v-for這個(gè)屬性军掂,這個(gè)屬性讓我感覺到了vue的力量轮蜕,要是使用原來的那種原生對dom的操作,這個(gè)東西還是沒有繼續(xù)下去的頭緒蝗锥,因?yàn)榍疤岵恢佬枰嗌賯€(gè)div跃洛,而v-for將這個(gè)問題完美的解決了。

到此基本上這個(gè)打印的功能就能進(jìn)行單打和批量打印了终议。也許其中存在著很多不足汇竭,比如沒有使用比較主流的在線預(yù)覽PDF,打印PDF這種方法穴张。但是現(xiàn)在這種方法也是我們一起花費(fèi)很大的力氣搞成功的细燎,我個(gè)人覺得還是比較認(rèn)同的。

希望在這里一起努力的人都在進(jìn)步皂甘,送大家一句話玻驻,“相信過程,你的腳步就會(huì)像蝴蝶一樣輕盈偿枕¤邓玻”
雖然不知道前面的路途怎樣劣摇,但現(xiàn)在請保持行走的狀態(tài)陌凳。

若三年如一日

打印小項(xiàng)目的總結(jié)(一)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市悲立,隨后出現(xiàn)的幾起案子捺萌,更是在濱河造成了極大的恐慌档冬,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件桃纯,死亡現(xiàn)場離奇詭異酷誓,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)态坦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進(jìn)店門盐数,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人伞梯,你說我怎么就攤上這事玫氢≈闾耄” “怎么了?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵漾峡,是天一觀的道長攻旦。 經(jīng)常有香客問我,道長生逸,這世上最難降的妖魔是什么牢屋? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮槽袄,結(jié)果婚禮上烙无,老公的妹妹穿的比我還像新娘。我一直安慰自己遍尺,他們只是感情好截酷,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著乾戏,像睡著了一般迂苛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上歧蕉,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天灾部,我揣著相機(jī)與錄音,去河邊找鬼惯退。 笑死赌髓,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的催跪。 我是一名探鬼主播锁蠕,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼懊蒸!你這毒婦竟也來了荣倾?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤骑丸,失蹤者是張志新(化名)和其女友劉穎舌仍,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體通危,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡铸豁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了菊碟。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片节芥。...
    茶點(diǎn)故事閱讀 39,902評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出头镊,到底是詐尸還是另有隱情蚣驼,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布相艇,位于F島的核電站颖杏,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏厂捞。R本人自食惡果不足惜输玷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一队丝、第九天 我趴在偏房一處隱蔽的房頂上張望靡馁。 院中可真熱鬧,春花似錦机久、人聲如沸臭墨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽胧弛。三九已至,卻和暖如春侠畔,著一層夾襖步出監(jiān)牢的瞬間结缚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工软棺, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留红竭,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓喘落,卻偏偏與公主長得像茵宪,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子瘦棋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評論 2 354

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