亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

Paged.js 實(shí)戰(zhàn):HTML 分頁排版與 PDF 導(dǎo)出

Paged.js 實(shí)戰(zhàn):HTML 分頁排版與 PDF 導(dǎo)出 簡(jiǎn)介這份 paged.js 教程資料包面向具備一定 JavaScript 基礎(chǔ)的前端開發(fā)者以及需要把 HTML 內(nèi)容穩(wěn)定輸出為 PDF 的技術(shù)人員重點(diǎn)解決瀏覽器端分頁排版、打印樣式適配和文檔生成流程中的實(shí)際問題。教程圍繞 CSS Paged Media 展開涉及核心概念、安裝引入、基礎(chǔ)示例、頁面尺寸與邊距設(shè)置、復(fù)雜布局處理、PDF 輸出、框架集成及調(diào)試優(yōu)化等主題并關(guān)注分頁斷點(diǎn)、打印媒體查詢等細(xì)節(jié)適合作為理解分頁機(jī)制和定制打印樣式的參考也可為文檔導(dǎo)出工具選型做技術(shù)預(yù)研。壓縮包共 32401 個(gè)文件整體約 40.16MB包含大量 png 圖示、js 腳本、otf/eot/woff/ttf 字體資源以及 html、svg、txt、md、json 等配套文件可用于對(duì)照閱讀、查看示例結(jié)構(gòu)和本地運(yùn)行驗(yàn)證。目錄組織清晰便于按主題檢索。已有 586 人學(xué)習(xí)可作為前端文檔導(dǎo)出、在線報(bào)告生成與 PDF 分頁排版的實(shí)用資料。1. 把 HTML 排成帶頁碼的書這份 Paged.js 教程卡在哪個(gè)位置手上有一批結(jié)構(gòu)規(guī)整的 HTML 文檔要輸出成帶頁碼、頁眉、目錄、腳注的 PDF。第一反應(yīng)通常是開 Word改版式改到懷疑人生或者上 LaTeX學(xué)習(xí)成本夠?qū)憙蓚€(gè)項(xiàng)目。這份以 PDF 形式整理的 Paged.js 教程給的是中間路線用 CSS Paged Media 那套聲明式規(guī)則描述版面由一段 JavaScript 在瀏覽器里把長(zhǎng)文檔真正切成一張張頁面盒再從瀏覽器打印成 PDF。它適合已經(jīng)在用 Web 技術(shù)棧產(chǎn)出文檔、又不想把排版交給桌面軟件的人也適合想搞清楚“分頁到底發(fā)生在哪一層”的前端??赐昴苣玫降淖钚¢]環(huán)是一頁 A4、頁碼正確、目錄頁碼能自動(dòng)回填、導(dǎo)出不跑版。2. 分頁發(fā)生在哪一層Polisher、Chunker 與頁面盒的三角關(guān)系2.1 瀏覽器不實(shí)現(xiàn)的 CSS Paged Media被誰補(bǔ)上了瀏覽器對(duì) CSS Paged Media 的支持少得可憐。page里的size和margin在打印時(shí)大致能生效但top-center、bottom-right這些 margin box以及counter(pages)、target-counter()、float: footnote主流瀏覽器基本一個(gè)都沒實(shí)現(xiàn)。Paged.js 是補(bǔ)這一層的庫它不是把頁面截圖而是真的操作 DOM把源內(nèi)容按渲染高度切成若干.pagedjs_page每個(gè)頁面盒里再掛.pagedjs_sheet、內(nèi)容區(qū).pagedjs_page_content、以及一圈 margin box 容器。內(nèi)部有三個(gè)環(huán)節(jié)值得記住名字因?yàn)榕佩e(cuò)時(shí)全靠它們定位。Polisher 負(fù)責(zé)處理樣式表把page規(guī)則抽出來轉(zhuǎn)成能作用在頁面盒上的 CSSChunker 負(fù)責(zé)切分它測(cè)量每個(gè)塊級(jí)元素的實(shí)際高度累加到超過版心高度就斷開生成 breakToken 繼續(xù)下一頁P(yáng)reviewer 串起整個(gè)流程并在不同階段拋出事件鉤子。樣式明明寫了卻沒生效先去 Polisher 處理后的 CSS 里找切頁位置莫名其妙去看 Chunker 量到的高度頁碼是空的那是 margin box 填充階段的事。三層分開看比在一堆.pagedjs_*類名里瞎猜快得多。這套做法有一個(gè)明確的天花板DOM 是真的被切開了。任何依賴“整體連續(xù)”的視覺效果在切口處都會(huì)斷比如帶圓角和陰影的卡片被劈成兩半、跨頁的豎線斷掉、box-shadow在下半頁被裁掉。這不是 bug是這套方案的物理邊界。接受不了就只能改寫內(nèi)容結(jié)構(gòu)把不可分割的東西包進(jìn)break-inside: avoid的容器里。2.2 最小工程裝包、引 polyfill、寫出第一個(gè) page先把依賴裝上。pagedjs這個(gè)包會(huì)帶出dist/paged.polyfill.js把它引到頁面里就會(huì)自動(dòng)接管分頁不需要寫任何初始化代碼。# 只做本地排版驗(yàn)證的話一個(gè)靜態(tài)服務(wù)就夠不用上構(gòu)建工具 npm init -y npm install pagedjs npx serve .然后是頁面骨架。下面這份可以直接跑注意page的寫法和普通 CSS 是同一套語法只是規(guī)則名不同。!doctype html html langzh-CN head meta charsetutf-8 !-- polyfill 必須在樣式之前引它會(huì)在 DOM 就緒后接管分頁 -- script src./node_modules/pagedjs/dist/paged.polyfill.js/script style /* 紙張尺寸與版心印刷場(chǎng)景一律用 mm別用 px */ page { size: A4; margin: 22mm 18mm 20mm 18mm; /* 上 右 下 左 */ } /* 同一個(gè) page 可以重復(fù)聲明規(guī)則會(huì)合并 */ page { bottom-center { content: counter(page) / counter(pages); font-size: 9pt; color: #666; } } body { font-family: Noto Serif CJK SC, Songti SC, serif; font-size: 11pt; line-height: 1.75; } h1 { font-size: 20pt; margin: 0 0 6mm; } p { margin: 0 0 3mm; text-align: justify; } /* 屏幕預(yù)覽時(shí)給頁面盒一點(diǎn)間隔方便肉眼確認(rèn)切頁位置 寫進(jìn) media screen避免影響打印 */ media screen { body { background: #f2f2f2; margin: 0; } .pagedjs_page { margin: 12px auto; box-shadow: 0 1px 4px rgba(0,0,0,.18); } } /style /head body article h1 idcover模擬項(xiàng)目X 技術(shù)手冊(cè)/h1 p第一段正文。把要做成書的 HTML 直接放進(jìn)來就行不需要額外的包裝層。/p p第二段正文。分頁由 polyfill 自動(dòng)完成屏幕上會(huì)看到一張張獨(dú)立的紙。/p /article /body /html這里有幾個(gè)參數(shù)必須說清楚。size: A4決定頁面盒的寬高如果打印對(duì)話框里又選了別的紙型兩邊會(huì)打架導(dǎo)出必翻車所以后面接自動(dòng)化時(shí)要用preferCSSPageSize把它固定住。margin是版心位置順序是上右下左頁眉頁腳就長(zhǎng)在這塊留白里所以想要頁眉不擠正文靠的是調(diào)margin-top不是在正文里加 padding。counter(page)是當(dāng)前頁碼counter(pages)是總頁數(shù)后者由 Paged.js 統(tǒng)計(jì)完所有頁面盒之后回填屏幕上第一眼看到的可能是空值等它排完就有了。提示page規(guī)則寫在任意style或外鏈 CSS 里都行但要保證它和正文樣式在同一份文檔里跨 iframe 引入的樣式表的page不一定被 Polisher 抓到。2.3 目錄頁碼回填target-counter 與 leader 的組合目錄頁碼是這類工具最容易讓人眼前一亮的功能寫法卻很簡(jiǎn)單給目錄項(xiàng)一個(gè)指向目標(biāo)的錨點(diǎn)然后用target-counter把目標(biāo)所在頁碼取出來當(dāng)偽元素內(nèi)容。/* 目錄項(xiàng)不要下劃線右側(cè)自動(dòng)補(bǔ)點(diǎn)線再跟頁碼 */ .toc a { text-decoration: none; color: inherit; } .toc a::after { /* leader() 生成填充點(diǎn)線target-counter 取目標(biāo)元素所在頁碼 */ content: leader(.) target-counter(attr(href), page); font-variant-numeric: tabular-nums; /* 頁碼等寬右側(cè)才對(duì)齊 */ } /* 目錄單獨(dú)占頁別和正文擠在一起 */ .toc { break-after: page; }對(duì)應(yīng)的 HTML 只需要保證href是同文檔錨點(diǎn)、目標(biāo)元素有idnav classtoc ul lia href#ch1第 1 章 環(huán)境與依賴/a/li lia href#ch2第 2 章 版式參數(shù)/a/li /ul /nav article h1 idch1第 1 章 環(huán)境與依賴/h1 !-- ... -- h1 idch2第 2 章 版式參數(shù)/h1 !-- ... -- /article參數(shù)上要注意兩點(diǎn)。attr(href)拿到的是完整字符串含#target-counter內(nèi)部會(huì)自己解析成元素引用所以href#ch1就夠了別寫成絕對(duì) URL。如果你還想讓目錄里顯示標(biāo)題文字而不是手寫把content換成target-text(attr(href))就能取到目標(biāo)元素的文本代價(jià)是層級(jí)和樣式全靠::before/::after拼多級(jí)目錄反而更麻煩我一般還是手寫標(biāo)題、只讓頁碼自動(dòng)回填。target-counter取不到值的時(shí)候不會(huì)報(bào)錯(cuò)只會(huì)靜默留空。第一次用很容易以為自己寫錯(cuò)了選擇器其實(shí)是錨點(diǎn)沒對(duì)上。排查順序固定成三步href和id是否嚴(yán)格一致、目標(biāo)元素是否在分頁流里被display: none藏掉的內(nèi)容不算、::after是否被更高優(yōu)先級(jí)的選擇器覆蓋。3. 版式參數(shù)怎么設(shè)page 規(guī)則、命名頁面與頁眉頁腳3.1 page 里真正會(huì)影響成品的六個(gè)參數(shù)page能寫的東西不少但決定成品長(zhǎng)相的就那么幾個(gè)。下面這張表是我反復(fù)改樣式之后沉淀下來的左邊是參數(shù)右邊是容易寫錯(cuò)的地方。參數(shù)常用取值實(shí)際作用容易踩的地方sizeA4/210mm 297mm頁面盒寬高和打印對(duì)話框紙型不一致導(dǎo)出尺寸跑偏margin22mm 18mm 20mm 18mm版心位置順序上右下左想給頁眉留位置卻只加大上邊距忘了 margin box 就長(zhǎng)在留白里margin boxtop-center等頁眉頁腳、頁碼落點(diǎn)用 padding 頂位置內(nèi)容溢出被裁page自定義名字把元素綁到命名頁面以為會(huì)繼承到該元素后面所有頁break-*page/avoid/right斷頁與避斷兩側(cè)同時(shí)聲明憑空多出空白頁bleed/marks3mm出血與裁切線在瀏覽器打印鏈路里表現(xiàn)不完整真正印刷一般交給后端拼版關(guān)于bleed和裁切線說句實(shí)話走瀏覽器打印這條鏈路時(shí)出血很難做干凈因?yàn)榇蛴?duì)話框本身還會(huì)縮放。需要嚴(yán)格出血的項(xiàng)目通常的做法是先用 Paged.js 排出內(nèi)容頁再交給專業(yè)的拼版工具加出血和爬升。這不是 Paged.js 的短板是瀏覽器打印模型的限制。3.2 命名頁面封面、正文、附錄各用一套版心一本書里不同部分的版式往往不同封面滿版不留白正文雙欄帶頁眉附錄單欄不要頁碼。做法是定義多個(gè)命名page再用元素上的page屬性去綁定。/* 封面零邊距滿版 */ page cover { margin: 0; bottom-center { content: none; } /* 封面不要頁碼 */ } /* 每章起始頁不顯示頁眉讓標(biāo)題更醒目 */ page chapterStart { top-center { content: none; } } /* 附錄頁碼改羅馬數(shù)字 */ page appendix { bottom-center { content: counter(page, lower-roman); } } /* 綁定page 屬性寫在容器上 */ .cover { page: cover; break-after: page; } .chapter { page: chapterStart; break-before: page; } .appendix { page: appendix; break-before: right; }這里有個(gè)語義細(xì)節(jié)經(jīng)常被誤解page屬性影響的是元素起始的那一頁。一個(gè)章節(jié)容器如果跨了 6 頁只有第一頁套用chapterStart后面 5 頁回落到默認(rèn)page。很多人以為會(huì)一路繼承下去然后發(fā)現(xiàn)“第二章的頁眉怎么又冒出來了”其實(shí)行為一直是對(duì)的。要讓整章都不顯示頁眉得把頁眉的開關(guān)做到page級(jí)別而不是單頁級(jí)別或者接受“章首頁特殊、正文頁統(tǒng)一”這個(gè)更常見的排版慣例。break-before: right也值得單獨(dú)說。它要求新內(nèi)容從右手頁開始如果當(dāng)前正好停在右手頁就會(huì)插入一張空白頁。雙面印刷這是標(biāo)準(zhǔn)做法但在屏幕上翻 PDF 時(shí)看到空白頁別急著當(dāng) bug 修先確認(rèn)是不是right在起作用。3.3 頁眉內(nèi)容從哪來string-set 取文本running element 取整塊頁眉最常見需求是“顯示當(dāng)前章節(jié)標(biāo)題”。兩種實(shí)現(xiàn)路線差別不小。第一種用string-set它從元素里取文本存成一個(gè)命名字符串margin box 再用string()取出來。/* 把每個(gè) h1 的文本存進(jìn) chaptertitle 這個(gè)字符串變量 */ h1 { string-set: chaptertitle content(text); } page { top-right { content: string(chaptertitle); font-size: 9pt; color: #555; } }第二種用 running element把一整塊 DOM 搬到頁眉里能帶 logo、能帶雙色文字。div classrunning-head 模擬項(xiàng)目X 技術(shù)手冊(cè) span classver內(nèi)部版/span /div.running-head { position: running(dochead); /* 從正文流里移除交給頁眉引用 */ } page { top-left { content: element(dochead); font-size: 9pt; } }怎么選頁眉只有一行純文字用string-set它有“當(dāng)前頁對(duì)應(yīng)的章節(jié)”這個(gè)語義跨頁時(shí)取哪一頁的值由第二個(gè)參數(shù)控制頁眉需要排版自由度圖標(biāo)、分隔線、左右分區(qū)用 running element但它本質(zhì)是把同一個(gè) DOM 節(jié)點(diǎn)搬來搬去同一個(gè) running element 被多處引用時(shí)行為會(huì)變得難以預(yù)測(cè)。string()的第二個(gè)參數(shù)CSS 規(guī)范里給了first、start、last幾種取法用來解決“標(biāo)題落在上一頁底部、正文在下一頁頁眉該顯示誰”的問題。實(shí)際用的時(shí)候先在目標(biāo)版本上把幾種取法都跑一遍看哪個(gè)符合你的排版習(xí)慣別默認(rèn)它們?nèi)紝?shí)現(xiàn)得一樣。我吃過這個(gè)虧本地看著對(duì)換一個(gè)渲染環(huán)境頁眉就變成了上一章的標(biāo)題最后靠start才穩(wěn)住。4. 長(zhǎng)文檔的四件硬活目錄、腳注、交叉引用、斷頁控制4.1 多級(jí)目錄層級(jí)、點(diǎn)線與章節(jié)起始頁單級(jí)目錄用 2.3 的寫法就夠了真正做手冊(cè)時(shí)目錄一般有三級(jí)。層級(jí)不要靠縮進(jìn)硬撐用類名控制樣式和結(jié)構(gòu)分開。.toc ul { list-style: none; padding: 0; margin: 0; } .toc li { margin: 0 0 1.6mm; font-size: 10.5pt; } /* 三級(jí)縮進(jìn)用 em 跟著字號(hào)走換字號(hào)不用改數(shù)值 */ .toc .lv2 { padding-left: 1.6em; font-size: 10pt; } .toc .lv3 { padding-left: 3.2em; font-size: 9.5pt; } /* 只有一級(jí)目錄加粗二級(jí)三級(jí)保持克制 */ .toc .lv1 { font-weight: 600; margin-top: 3mm; } /* 點(diǎn)線和頁碼對(duì)所有層級(jí)統(tǒng)一 */ .toc a::after { content: leader(.) target-counter(attr(href), page); }nav classtoc ul li classlv1a href#ch1第 1 章 環(huán)境與依賴/a/li li classlv2a href#sec111.1 依賴安裝/a/li li classlv2a href#sec121.2 目錄結(jié)構(gòu)/a/li li classlv1a href#ch2第 2 章 版式參數(shù)/a/li /ul /navleader(.)的行為是把剩余空間用點(diǎn)填滿所以目錄項(xiàng)本身必須是塊級(jí)或 flex 撐滿寬度否則點(diǎn)線會(huì)擠在文字后面。如果發(fā)現(xiàn)點(diǎn)線長(zhǎng)度忽長(zhǎng)忽短八成是某個(gè)li被設(shè)成了inline-block。還有一個(gè)隱藏問題目錄本身頁數(shù)不定。三頁的目錄如果只留了一頁的位置后面會(huì)擠掉正文的第一頁頁碼全部錯(cuò)位。給目錄容器加break-after: page是必須的同時(shí)目錄項(xiàng)不要用break-inside: avoid否則一頁放不下時(shí)會(huì)推走一大塊中間留白。4.2 腳注float: footnote 和 footnote 區(qū)域腳注是 Paged.js 相對(duì)亮眼的功能。寫法是把腳注內(nèi)容直接放在正文引用處用float: footnote抽走。p 這段正文里有一個(gè)需要說明的點(diǎn)span classfn這里的數(shù)值來自模擬項(xiàng)目X 的內(nèi)部測(cè)試記錄僅作示例。/span后面繼續(xù)。 /p/* 腳注本體從正文流里抽走落到本頁的腳注區(qū) */ .fn { float: footnote; font-size: 8.5pt; line-height: 1.5; } /* 正文里的上標(biāo)編號(hào) */ ::footnote-call { content: counter(footnote); vertical-align: super; font-size: 70%; line-height: 0; } /* 腳注區(qū)里的編號(hào)注意帶了點(diǎn)號(hào) */ ::footnote-marker { content: counter(footnote) . ; } /* 腳注區(qū)與正文之間的分隔線寫在頁面級(jí) */ page { footnote { border-top: 0.5pt solid #999; padding-top: 3mm; margin-top: 6mm; } }參數(shù)上有三點(diǎn)。counter(footnote)是 Paged.js 自己維護(hù)的不用手動(dòng)編號(hào)但要注意它默認(rèn)整篇連續(xù)編號(hào)想要每頁重編得在頁面上重置計(jì)數(shù)器這塊各版本行為不完全一致改之前先小樣本驗(yàn)證。腳注內(nèi)容必須寫在正文流的引用位置不要用 JS 事后插入因?yàn)榍许撌窃?DOM 就緒后立刻發(fā)生的后插入的節(jié)點(diǎn)趕不上這一輪布局。腳注區(qū)高度是參與版心計(jì)算的一條長(zhǎng)腳注會(huì)擠掉正文行數(shù)所以腳注盡量控制在兩行以內(nèi)超過就改成尾注。還有一個(gè)現(xiàn)實(shí)約束腳注擠不下時(shí)Paged.js 會(huì)把整段正文推到下一頁而不是把腳注截?cái)?。這意味著一個(gè)段落如果特別長(zhǎng)比如一整頁不分段腳注永遠(yuǎn)找不到落點(diǎn)。正文塊保持正常分段這個(gè)問題基本不會(huì)出現(xiàn)。4.3 斷頁控制break-* 與 orphans/widows 的實(shí)際效果排版質(zhì)量的差距八成在斷頁控制上。默認(rèn)行為是“能塞就塞”標(biāo)題孤零零留在頁底、段落最后一行單獨(dú)跑到下一頁都是常見畫面。/* 標(biāo)題后面不許斷避免標(biāo)題落在頁底 */ h1, h2, h3 { break-after: avoid; } /* 標(biāo)題前面也不許斷避免標(biāo)題跑到新頁第一行卻和上文割裂 */ h1, h2, h3 { break-before: avoid; } /* 段落至少留 3 行在頁底至少 3 行帶到下一頁 */ p { orphans: 3; widows: 3; } /* 圖表、代碼塊、引用塊整體不拆 */ figure, pre, blockquote, .callout { break-inside: avoid; } /* 表格允許跨頁但單行不許劈開表頭每頁重復(fù) */ table { break-inside: auto; } tr { break-inside: avoid; } thead { display: table-header-group; } /* 章節(jié)從新頁開始附錄從右手頁開始 */ .chapter { break-before: page; } .appendix { break-before: right; }orphans和widows是最容易被忽略的兩個(gè)屬性因?yàn)樗鼈冊(cè)谄渌胤綆缀跤貌坏?。前者控制頁底最少留幾行后者控制頁頂最少帶幾行值一般設(shè) 2 到 3。設(shè)成 1 等于關(guān)掉保護(hù)設(shè)成 4 以上在中文字號(hào)下會(huì)導(dǎo)致大量半空頁得不償失。break-inside: avoid不能濫用。給一個(gè) 800px 高的卡片加這條它會(huì)整個(gè)被推到下一頁上一頁留下大片空白給嵌套容器同時(shí)加可能出現(xiàn)“誰都不讓誰”最終整塊溢出。經(jīng)驗(yàn)做法是只在高度可控的元素上加圖、代碼塊、提示框并且加之前先想清楚這塊東西如果真的有 1.5 頁高避斷反而是災(zāi)難。5. 五個(gè)翻車現(xiàn)場(chǎng)空白頁、頁碼錯(cuò)位、字體競(jìng)態(tài)、表頭丟失、二次分頁5.1 章節(jié)之間憑空多出一張空白頁現(xiàn)象導(dǎo)出的 PDF 里某些章節(jié)之間夾著一張完全空白的頁屏幕上也能看到。原因基本是兩個(gè)。一是斷頁在兩側(cè)同時(shí)聲明上一章的容器寫了break-after: page下一章的容器又寫了break-before: page兩次強(qiáng)制斷頁疊加中間那張就是產(chǎn)物。二是元素高度剛好等于或略大于版心高度浮點(diǎn)誤差讓 Chunker 判定“放不下”于是推到下一頁而它本身幾乎沒有內(nèi)容看起來就是空白。解決斷頁只在一側(cè)聲明統(tǒng)一寫在章節(jié)容器的break-before上把break-after全刪掉。定位時(shí)打開控制臺(tái)數(shù)一下document.querySelectorAll(.pagedjs_page).length跟預(yù)期頁數(shù)對(duì)不上再逐段二分注釋掉break-*規(guī)則通常十分鐘內(nèi)能鎖定。我現(xiàn)在的習(xí)慣是所有斷頁規(guī)則集中寫在一個(gè)區(qū)塊里注釋標(biāo)明“只允許單側(cè)聲明”就是被這個(gè)坑教育出來的。5.2 正文第一頁顯示成第 2 頁現(xiàn)象封面不顯示頁碼但正文第一頁的頁腳寫著“2 / 48”全篇頁碼整體偏移一位。原因封面也在分頁流里占用了counter(page) 1。你只是把封面的頁碼隱藏了content: none計(jì)數(shù)器并沒有歸零。解決兩個(gè)方向。CSS 方向是在正文起始元素上加counter-reset: page 1讓計(jì)數(shù)器從這里重算但這是 Paged.js 的擴(kuò)展行為不是所有環(huán)境都穩(wěn)上生產(chǎn)前必須實(shí)測(cè)。工程方向更保險(xiǎn)封面單獨(dú)渲染一次正文單獨(dú)渲染一次最后在 PDF 層合并頁碼天然從 1 開始。項(xiàng)目里做正式交付物時(shí)我傾向后者雖然多一步但不用賭渲染器的實(shí)現(xiàn)細(xì)節(jié)。順帶一提前言用羅馬數(shù)字、正文用阿拉伯?dāng)?shù)字這種需求做法是把前言和正文拆成兩個(gè)命名頁面各自counter(page, lower-roman)和counter(page)再把counter-reset放在兩段的交界處。復(fù)雜歸復(fù)雜但這是唯一能同時(shí)滿足兩種編號(hào)體系的路子。5.3 字體和圖片沒加載完就開始切頁現(xiàn)象導(dǎo)出的 PDF 和屏幕上看到的完全是兩份東西行高變了、每行字?jǐn)?shù)變了、末尾多出好幾頁或者圖片位置全錯(cuò)后面內(nèi)容整體上移。原因Paged.js 在 DOM 就緒后立刻開始切頁此時(shí) Web 字體還在下載瀏覽器先用 fallback 字體渲染Chunker 量到的高度是錯(cuò)的。字體替換完成之后每行能塞的字?jǐn)?shù)變化整篇需要重排但分頁已經(jīng)結(jié)束。圖片同理沒寫死尺寸的img初始高度接近 0加載完撐開后面的分頁全廢。解決給所有圖片寫死width/height或aspect-ratio讓它在加載前就占好位置把分頁推遲到字體和圖片都就緒之后具體做法在 6.1 給代碼。字體這塊還有一個(gè)隱性成本中文字體動(dòng)輒幾 MB用font-display: swap會(huì)讓首屏更快但排版更不穩(wěn)做 PDF 輸出時(shí)反而應(yīng)該用font-display: block寧可等一會(huì)兒也別讓它換字。5.4 長(zhǎng)表格翻頁后表頭不見了現(xiàn)象跨頁的表格第二頁開始只有數(shù)據(jù)行讀者對(duì)不上哪列是什么。原因thead沒有聲明為table-header-group。默認(rèn)的table-header-group是瀏覽器給的但在分頁場(chǎng)景下需要顯式寫出來讓切頁邏輯知道“這一段每頁都要重復(fù)”。另一種情況是表格上加了break-inside: avoid整塊被推到下一頁雖然表頭在但上一頁留下半頁空白視覺上更難看。解決thead { display: table-header-group; }tr { break-inside: avoid; }保證單行不被劈開把表格上的break-inside: avoid去掉。如果表格有tfoot做合計(jì)行同樣處理。另外表格列寬盡量用table-layout: fixed加百分比自動(dòng)列寬在跨頁時(shí)可能因?yàn)閮?nèi)容分布變化而重算導(dǎo)致前后兩頁列寬不一致。5.5 打印預(yù)覽比屏幕多出幾頁現(xiàn)象屏幕上數(shù)出來 40 頁CtrlP 預(yù)覽變成 43 頁或者每頁底部?jī)?nèi)容被裁掉一截。原因二次分頁。Paged.js 已經(jīng)把內(nèi)容切成了固定高度的頁面盒瀏覽器打印時(shí)又按自己的page規(guī)則分了一次兩套規(guī)則打架。另一種是page.pdf()里還帶著 margin和 CSS 里的margin疊加版心被壓小。解決打印媒介下把page的margin歸零因?yàn)榘嫘倪吘嘁呀?jīng)由頁面盒自己承擔(dān)了headless 打印時(shí)用preferCSSPageSize: true讓渲染器服從 CSS 里的size同時(shí)把margin全部設(shè)成 0printBackground: true一定要開否則頁眉線、底紋、邊框全部消失看起來像樣式丟了。注意不要用瀏覽器的“另存為 PDF”做最終交付它受用戶本機(jī)紙型、縮放比例、頁眉頁腳開關(guān)影響同一份文件在不同機(jī)器上能出不同結(jié)果。要么走 headless要么在頁面里顯式提示用戶把頁邊距選“無”、縮放選“默認(rèn)”。6. 接進(jìn)自動(dòng)化等對(duì)完成信號(hào)再做版式回歸6.1 headless 打印auto:false 加一個(gè)顯式完成標(biāo)記自動(dòng)分頁最大的問題是“什么時(shí)候算排完了”沒有標(biāo)準(zhǔn)答案。穩(wěn)妥做法是關(guān)掉自動(dòng)執(zhí)行手動(dòng)觸發(fā)并在after回調(diào)里打一個(gè)標(biāo)記外部等這個(gè)標(biāo)記。// print.js —— 用 Playwright 驅(qū)動(dòng)已經(jīng)接好 Paged.js 的頁面 const { chromium } require(playwright); (async () { const browser await chromium.launch(); const page await browser.newPage(); // 關(guān)鍵關(guān)掉 auto改成手動(dòng)觸發(fā)否則拿不到排完這個(gè)時(shí)刻 await page.addInitScript(() { window.PagedConfig { auto: false, after: (flow) { window.__pagedReady true; window.__pagedTotal flow.total; // 總頁數(shù)后面做回歸斷言用 }, }; }); await page.goto(http://localhost:8080/manual.html, { waitUntil: load }); // 字體是異步的等它落地再切頁否則行高全錯(cuò) await page.evaluate(async () { await document.fonts.ready; await window.PagedPolyfill.preview(); }); await page.waitForFunction(() window.__pagedReady true, { timeout: 60000 }); await page.pdf({ path: out.pdf, preferCSSPageSize: true, // 服從 CSS 的 page size別讓渲染器再猜 printBackground: true, // 頁眉線、底紋、邊框全靠它 margin: { top: 0, right: 0, bottom: 0, left: 0 }, // 版心邊距已在 CSS 里別疊加 }); await browser.close(); })();document.fonts.ready是這一段的重點(diǎn)它返回一個(gè) Promise字體全部就緒才 resolve。waitForFunction的超時(shí)要給足中文長(zhǎng)文檔加上幾 MB 字體一分鐘并不夸張。flow.total來自after回調(diào)是 Paged.js 統(tǒng)計(jì)出的總頁數(shù)比自己去數(shù) DOM 節(jié)點(diǎn)可靠。6.2 把頁數(shù)和關(guān)鍵頁文本變成斷言版式回歸不需要圖像比對(duì)太脆。頁數(shù)加關(guān)鍵頁文本這兩條斷言能擋住 90% 的樣式事故。// 改完樣式跑一遍頁數(shù)或關(guān)鍵頁內(nèi)容變了就先看 diff const total await page.evaluate(() window.__pagedTotal); const page5 await page.evaluate(() document.querySelectorAll(.pagedjs_page)[4].innerText.slice(0, 40) ); if (total ! 42) { throw new Error(頁數(shù)從 42 變成 ${total}先查字體加載和 break 規(guī)則); } if (!page5.includes(第 3 章)) { throw new Error(第 5 頁內(nèi)容異常${page5}); }頁數(shù)變了不一定是壞事但一定意味著有東西動(dòng)了可能是字體換了、可能是斷頁規(guī)則改了、也可能是某個(gè)圖片沒加載出來。把它當(dāng)紅燈逼自己每次改完樣式都跑一遍比事后發(fā)現(xiàn)交付物錯(cuò)版強(qiáng)太多。我現(xiàn)在的固定動(dòng)作是改完任何一條page或break-*規(guī)則先跑 6.1 的腳本出一份 PDF肉眼掃一遍頁眉頁腳再跑 6.2 的斷言兩條都過才算完。這套流程是從一次交付前夜發(fā)現(xiàn)全篇頁碼偏移一位開始養(yǎng)成的那次通宵重排的教訓(xùn)太貴。那份 PDF 教程我一般不開著通讀當(dāng)成屬性索引放在手邊遇到string()的取值或者footnote的寫法再翻效率比從頭看高得多。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚欧高清在线| 一区超碰一区| 国产精品久久久久9999小说| 亚洲精品一区二区精品| 亚洲日韩一区电影| 51一区二区三区| 日韩黄片影院| 亚洲综合春色| 9精品久久久久| 国产亚洲精品久久久久小| 一区二区 韩日AV| 蜜桃狠狠色伊人亚洲综合 | 久久99久久99久久99人受| 久久精品中文字幕女同| 国产av波波国产精品| 91丨国产丨白浆| 欧美亚州综合网图片| 2018天天干在线视频| 色哟哟-国产专区| 葡萄牙性视频一二区| 留下AⅤ黄色片| 97超碰免费人人性爱| 久久精品国产Aⅴ| 少妇无码太爽| 欧美一级特黄淫片在线观看| 中文久久96| 97资源站日韩| 日本岛国黄色网址| 中文字幕第2页| 大香蕉丝袜一级片| 中文字幕乱妇免费视频| 婷婷色播婷婷| 好属操| 欧美亚洲玖玖玖| 啊啊啊啊啊啊在线| 操香逼| 国产又色又粗又黄又爽| 亚洲精品欧洲精品| 青草青草久热| 骚货操死你| av在线资源| 亚洲女优有码无码高清| 日日日日日| 欧美美女视频| 天美精品一区二区三区四区在线观看| 在线观看色视频| 欧美亚州色的图| 亚欧免费观看视频| 欧美日本视频一区| 18一区二区三区| 日本羞羞的视频在线播放| 天天干天天日天天射黄色片| 强奸乱伦动态污图免费 | 夜夜操夜夜爽夜夜高潮| 日韩不卡a级视频专区| 一级性爱aaaa| 香蕉人人操tv| 97看操| 亚洲91网站| 911粉嫩人妻| 九九热av| 99re在线观看| 亚洲老熟妇xxx| 加勒比综合| 夜夜夜夜夜夜夜夜夜狠狠狠狠狠狠狠| 在线a v| 国产熟妇一区二区| 久久免费中文字幕在线观看| 五码视频在线观看| 91欧美在线| 欧美中字二区| 混色激情av| 九色精品视频导航1| 日韩图色| 人妻熟女一区二区三区视频| 色爱国产| 日韩乱伦影音先锋| 日本东京热久久久电影| 日韩性色| 在线观看啊啊啊啊啊| 亚洲一区中文字幕久久,果冻传媒一区二区天美传媒| 日韩少妇无码| 欧美在线l亚洲| 午夜男人一级A片7777| 欧美组图日韩亚洲中文字幕| 中文字幕欧洲有码| 91精产一区二区三区| 亚州情色j区| 久久AV无码网址| 一区二区三区美女超清| 亚洲一区中文字幕| 经典丝袜一区| 少妇人妻精品| 亚洲日韩肥臀视频在线观看| 夜夜草网站| 国产精品一区av在线| 激情四射婷婷六月天| 五月丁香啪啪啪| 国产二区三区免费视频| 黄色无码高清黄色无码网站| 亚洲天堂男人天堂| 午夜在线播放| 亚洲中文字幕熟女少妇一区二区| 四虎精品永久在线观看| 蜜臀无码一区二区| 久9久精品视频| 啊啊啊97视频| 欧美久久婷婷| 日韩 成人 有码| 亚州成人a∨| 91熟女熟妇视频网站 | 中文在线久久字幕| 日韩精品熟妇| 美女高潮视频91| 九九热九九热| 最新中文字幕av| ,国产乱人伦精品一区二区三区| 2020中文在线一区二区三区| 色眯眯射| 黑人中出21连凳花野真衣| 爱射综合| 天天操夜夜操| 熟妇一区二区三区| 欧美老熟另类| 麻豆福利视频导航| 男人把坤坤插入女人的下体| 综合久久99亚洲人妻中文在线| 插老姨肥穴| 精品国产一区二区三区久久久蜜臀| 日本狠狠干| 夜夜爽爽爽| 美女超碰978| AV天堂电影网| 乱久久久| 999 久久久| 天天干天天中出av| 欧美色图小说综合| 淫荡网址| 思思热在线cao| 蜜乳AV色欲AVAV无码| 国产男女无套视频免费观看| 欧美gv在线观看| 极品销魂美女一区二区 | 日韩在线一区高清在线| 国产精品一级特黄aaa大片在线观看| 无码最新| 蜜桃无码AV一区二区| 丁香五月天堂| 爆乳免费黄网站| 久热免费视频| 宅男91视频在线播放| 91丝袜激情在线| 黑人干亚洲| 少妇色欲综合网2| 日逼97| 日本淫乱女一区二区三区视频| 久久精品熟妇丰满人妻99| 玖玖无码超碰| 国产亚洲精品A在线观看下载| 操b在线观看| 白天啪啪晚上啪啪视频| 大香蕉九九| 久久久久久久78| 超碰97极品9| 91久久久亚洲| 一级性爱aaaa| 日日干男人的天堂| 五十路三区在线| 久久性爱精品一区| 天天综和| 天操天操夜操夜月月年年操操| 国产精品乱码久久久| 日韩欧美福利视频看看| 五月丁香大香蕉| 日本伦理一区二区| 亚洲色资源| 亚洲综合大片| 日韩欧洲操屄视频| 五月天综合网| 免费99精品国产自在在线| 人妻少妇精品久久久久久久| 六九九九| 少妇无码999| 2019久久久久久久久福利| 久久女婷| 亚洲天堂久| 国产一区二区在线播放量| 日本在线一二| 偷窥自拍亚洲| 国产女乱淫真高清免费视频| 蜜臀亚洲中文| 色噜噜国产精品视频一区二区| 91亚洲欧美| 后入式免费视频| AAAAAAAAA黄片| 激情九月婷婷| 日日干夜夜欢| 2019天天干天天操| 操逼999| 无码操逼视频一下| 人妻精品4K4K4K4K4| 色综九九九一区| 久操视频资源站公开| 少妇一区二区三区在线观看| 精品人妻中文字幕高清| 九九在线视频| 九九热精品视频六| 激情五月天色色网| 中出20p| 操逼操逼逼操操逼91 | 97超碰香蕉| 91久操| 激情欧美日韩女同久久| 99无码狠狠久久| av天堂影视中文在字幕在线中文| 大香蕉99999| 国产按摩一区二区三区| 97在线免费观看| 99久久这里只有精品| 欧美色999| 亚洲婷婷五月天| 丝袜美腿操av| 99国产人成精品| 精品日日人妻| 丁香五月成人| 中文字幕一区二区视频在线观看| 亚洲高清内射| 欧美日韩 强奸乱伦| 国产白领连续中出在线播放| 强奸乱伦中文字幕AV| 亚州男人的天堂| 亚欧无码在线| 青青草成人视频在线观看二区| 中文字幕乱码人妻二区三区| 久久后入制服| 成人资源中文字幕在线观看天天| 久久久新亚洲AV| 欧美se亚洲| 免费公开人人操| 亚洲午夜蜜臀| 一区二区三区激情在线观看| 中文字幕免费在线观看| 欧美后进式| 美女裸体无遮挡永久免费观看网站| 久久久中文版| 久碰视频| 眼镜人妻101.com| 九一国产精品| 偷窥自拍亚洲色图| 伊人久久综合影院| 日本不卡五区| 一区二区视频你懂的| 久久精品三级影视| 国产嫩草精品A88AV| 另类综合另类| 国产做?爰片久久毛片?片美国| JuliaAnn丝袜熟女系列| 美腿丝袜高跟网免费视频免费视频| 久久精品中文字幕观看| 欧洲精品二区| 69久久久久久久久久久久久| 九九这里只有精品| 国产精品视频自拍在线| 91久久婷婷| 亚洲 se图 欧美电影| 日韩激情啪啪| av天堂精品久久| 熟女少妇一区二区三区| 精品国产72| 国产做?爰片久久毛片?片美国| 伊人性在线视频| 青青草吊丝| 色久桃花影院在线观看| 亚洲欧美电影| 亚洲交性| 国产精品久久久777| 91麻豆va国产精品| 国内毛片欧美香蕉精品| 东京热双插| 欧美综合色| 精品视频97| 少妇一线天久久久久久| 丰满的三级少妇欧美久久久| 91影库| 欧洲精品一级二级精品综合视频综合 | 熟女天天干| 中文字幕 人妻不满 在线视频| 精品人妻一区| 日韩综合成人免费视频| AV色女综合| 亚洲日韩久久精品一区| 久久99深爱久久99精品| 校园春色家庭伦理欧美激情| 五十路熟女工口| www.狠狠干.coom| 国产亚洲精品无码三区| 视频国产欧美在线播放| 男人天堂网站| 91久久青青草原精品| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区 | 国产一级高清免费观看| 久久啊啊啊| 青青五月天| 欧美最大综合网| 欧美中文字幕男人天堂久久精品| 长长久久88视频| 91熟女视频网| 国产和美国毛片| 欧美人妻中出| 九九九九九九九九九九精品视频| 涩涩久久精品| 久久久内射良家| 中文一区在线日| 色悠久久久av| 欲色综合| 丰满少妇一区二区三区免费看| 在线二区不卡| 国产91 丝袜在线播放00-百度| 热久久九九热| 加勒比伊人综合| SUV一区二区在线看| 青青操在线亚洲视频观看欧美在线 | 亚洲美女色图| 亚洲蜜臀视频精品久久| 哈哈操 大香蕉| 午夜福利在线合集| 亚春色色| 九九九色| heyZO天然素人无码AⅤ专区| 亚洲最大成人a毛毛片| 欧美日韩一区二区三区四区蜜桃| 国产女人91精品嗷嗷嗷嗷| 成人av免费观看| 亚洲日韩一区电影| 宗合情欲网| 内射黑丝袜| 香蕉国产97| 人人妻人人玩人人澡人人爽| 人人爱人人乐人人操| 青草草免费网站av| 久久久九九网站| 人人爽天天爽| juliaann精品熟女一区| 操一区| 成人日本片久久久蜜桃| 九九热九九| 6080YYY午夜理论片在线观看| 女人喷水视频在线观看| 天天干,夜夜爽| 九热大香蕉| 视频黄站| 男人女人18禁片免费看网站| 亚洲av国产av综合av卡| 深夜激情无码| 97色论| 久久香蕉国产线看观看亚洲女人 | 97精品综合久久| 人人喜人人妻| 好涩综合| 播播亚洲小说亚洲| 四虎影视在线| 老鸭窝成人| 久久久久亚洲av综合波多野制衣| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 99热只有这里有精品| 精品一区二区啪啪啪| 四虎免费看黄| 91网站18| 色爱三区| 97精品国产97久久久久久| 久婷婷一区| 欧美 亚洲 第一页| 十八禁啪啦拍视频无遮挡| 一区二区三区日韩欧美| 亚洲 欧美 第一页 | 国产日韩怡红院| 国语精品内射在线观看| 美女主播色欲91抠b在线播放| 欧美日韩制服| 日韩性爱播放| 国产精品在线一区二区| 摸奶性爱视频网站在线免费播放| 亚洲中文字幕妇伦久久| 最近二区三区视频大全| 色色五月婷| 加勒比久久av| 人妻乱仑一区二区三区| 青青草字幕AV| 免费看国产曰批40分钟怎么下载| 欧洲免费一区二| 精品69网| 五月天激情国产综合婷婷婷| 亚洲欧美综合网| 久久精品国产亚洲AV片多多| 中文字幕一区二区三区蜜桃视频| 91午夜无码| 午夜精品久久久久| 一级@啪啪视频| 欧美亚洲20p| 久久精品人妻一区| 久久欧美1卡2卡3| 久久午夜色播影院免费高清| 91人妻丝袜无码| 欧美91在线| 国语人妻精彩刺激| 91处女在线观看| 久久久久精| 欧美日韩国产成人高清| 欧美老妇女内射网址| 26uuu成人影片| 欧美亚洲影视| 午夜福利一区二区影院| 91欧美丝袜| 欧美人人AAA| 啊啊啊水好多| 天天日B狠狠操| 三级日韩一区二区三区| 超碰人妻中文在线| 美女国产一区二区久久| 欧美图片校园春色| 亚洲欧美精品一区天堂久久 | 麻豆天美制片厂网站视频| 国产日韩欧美操逼视频| 91女优在线观看 | 一中国女人毛片水真多| 超碰97欧美日韩| 日本在线视频导航| 欧美人体性爱互联网第一页婷婷日本| 熟女色图在线| 性色av网站| 青女偷拍网| 嗯嗯啊啊操死我| 丰满岳乱妇一区二区三区| 97精品97久久| 99热亚洲天堂| 日本熟女免费視颖| 亚洲少妇综合| 日本乱人伦片中文三区| 超碰碰激情97+久| AV无码久久久精品| 日本欧美中文字幕| 久久精品91| 天天舔天天| 三级AV入口| 99草精| 亚洲国成人情色好看电影| 操逼片中文| 人人妻人人澡人人爽人人精品浪潮| 日韩伦理久 久久 清纯| 国产一区二区三区影片| 麻豆国产视频精品观看| 在线观看啊啊啊啊啊| 久久综合99| 啊啊啊啊网站| 操国产高清| 立川理惠无码一区二区| 欧美一二三区四五区| 在线小视频| 五月婷婷色| av无码精品久久久久| 中文字幕黄片在线| 青草一区二区| 中文字幕免费看| 91N综合网在线| 91 丝袜在线| 99热这里只有精品8| 激情五月天插| 在线毛片片免费观看| 精品97久久| 91色插| 少妇特黄一区二区三区| 中文字幕久久精品一区| 少妇内射www在线观看视频 | 浪人综合网| 精品久久久久久中文字幕三区| 欧美91精品国产自产| 懂色Av| 日本人妻丰满熟妇久久久久久| 亚洲色图欧美| 中文字幕美女91| 日韩欧美福利视频看看| 蜜臀久久99精品久久久久久-DVD原版全| 熟妇女伦乱视频| 日本操逼aaaaa| 国产成人亚洲精品无码最新在线| 欧美十八禁视频| 午夜男人av| 强奸a片网| 九九伊人网| 国产精品91一样| 91欧美偷拍| 欲射影视| 欧美韩日精品99综合| 国产白丝网站| 麻豆国产精品午夜视频| 凸凹视频在线观看| 夜色AV无码手机在线影院| 欧美日韩香蕉| 日韩不卡av一二三| 天无日色综合| 久久精品六区| 97日韩| 精品人妻一区二区视频| 蜜桃视频成a人v在线| 边做饭边操逼逼| 免费观看的黄色的网站| 欧美专区日本专区| 亚洲av强奸乱伦| 天天综合~91入口| 无码人妻精品一区二区三区九九 | 加勒比色99999| 久久亚州精品成人Av无| av国产无码| 99热精品国产| 亚洲无 码A片在线观看麻豆| 国产97视频免费观看| 国产人妻精品久久久一区二区三区 | 成人毛片免费| 婷婷五月天激情小说| 国产女主播视频在线观看| 欧美人与动性人交a| 日本福利二区视频| 日韩人妻丝袜美腿中文| 中文精品一区二去| 天无日色综合| 欧美色另类| 国产成人网| 超碰伊人在线| 日韩精品 视频一区二区| 骚熟女吞| 人人操我人人干| 久久这里精品国产99丫e6| 男人女人18禁片免费看网站| 九九九九九九九精品视频| 超碰 欧美| 亚洲一卡2卡3卡4卡乱码网站 | 无码人妻一区二区三区免费九色| 成人免费福利在线观看| 九九国产| 丁香六月东京热| 嫩草伊人久久精品| 亚洲精品人妻在线| 99精品综合久久久久五月天| aaaa少妇高潮大片| 无卡一区=区| 日本性爱不卡视频| 久艹99| 婷婷五月天色| 免费无码婬片AAAA片直播色戒| 午夜啊啊啊| 中国AV美女| 午夜福利在线合集| 亚洲欧美精品一区天堂久久| 嗯嗯啊啊操我| 欧洲与亚洲欧美精品中文字幕| 伦伦成年午夜免费视频| 性色高清..……| 黑人黄片在线免费观看| 性天堂| 日本免费一区二区不卡| 夜夜嗨一区二区| 国产欧美岛国精品一区| 欧美色图综合网| 天堂伊人久久| 大香蕉AV丝袜| 欧洲亚洲国产综合在线| 青青久久艹| 亚洲欧美国产中文字幕| 久久超碰爱| 色就色综合| 男人的天堂三级| 欧美A√综合网 | 日韩精品99999| 综合免费无码中文| 久久99国产精品| 久九9精品| 一牛影视久久久一区二区三区| 久久av一级av少妇av高潮| www亚洲欧美| 亚洲男人的天堂AV| 亚洲精品乱码久久久久久蜜桃麻豆| 视频不卡中文字幕| 欧洲综合色| 91精品婷婷国产综合久久竹菊| 超碰在线看| 亚洲AV无码AV吞精久久久久| 色综合一区二区三区| 色97综合中文字幕| av午夜玫瑰| 日产国产精品中文久久婷婷| 伊人成人中文字幕久久网| 欧美综合娱乐久久| 欧美性爱91| a片在线播放| 青草伊人网| 91AV国产精品| 精品无人区麻豆乱码1区2区图片| 日韩成人午夜精品久久高潮| 久久天天躁日日躁狠狠躁| 国产无遮挡| 五月天婷婷欧美三区| 美女超碰978| 9/A片| 亚洲AV无码天美传媒一区| 久久久久人妻| 熟女天天干| 很很很很操| 97视频在线视频| 国产91丝袜在线播放蜜月| 久操黄色视频| 色女综合| 超碰欧美COM| 欧美日韩狠狠爱| 日韩色香| JIZZJIZZ国产精品喷水| 性爱1区| 嗯啊不要在线| 国产超碰在线一区| 欧美色综合图片| 九九九九精品一区| 爆乳免费黄网站| 国产四虎在线| 天天综合麻豆视频| 欧美不卡五十路| 国产AV久久野战精品| 女人爽到高潮潮喷18禁网站| 99精品网站| 久久亚洲日韩熟女精品| 神马九九| 欧美一级久久久久久久大片动画| 99熟女| 九九九九九九九九九五码| 国产精品久久久久999| 少妇天堂| 色色网91| 婷婷五月天补不补| 97chaopenrihan| 四虎影视精品| 欧美性爱第一页久久| 亚洲av影院在线观看| 97欧美精品综合| 亚洲人精品久久久| 在线欧美69V免费观看视频| 99色视频| 亚洲在线综合| 国产色呦呦| 麻豆天美传媒在线视频天堂| 91亚洲情色| 人妻在线视频| 亚洲第一精品在线视频| 日韩三级久久久| 天天日天天干天天操| 狠狠综合网| 国产97av| 国产激情在线| 啊啊啊啊啊啊啊在线| 国产性爱在线视频一区二区| 在线 亚洲 网爆 自拍| 国产精品成人午夜福利| 天天日天天操心| 精品超碰色| 在线观看日韩av不卡| 丝袜狠狠草尤物 91| 9丨亚洲一区二区在线| 婷婷中文字幕| 人人妻人人爽一区二区三区| 狠狠穞A片一區二區三區| 国产精品96| 亚洲 欧美 91| 亚洲欧美日韩中文播放| 在线国产探花| 欧美激情1区| 中文字幕av久久爽Av| 黄片qw| h色99999| 97自拍视频在线| 人人操人人93| 麻豆精品三区视频| 中文久久爆乳| 人人操人人色网| 亚洲污污网站| 97AV爱| 精品九九九九| 素人播放一区| 国产精品午夜福利亚洲综合网| 色超碰综合| 99热亚洲| 91av一区二区在线观看| 国产日韩中文字幕欧美| 一二三啪啪专区| 偷窥自拍A片| 狠狠久久手机视频精品| 爱妻综合网| 精品人妻1237| 亚洲高清无码免费观看视频| 玖玖无码超碰| 亚洲 se图 欧美电影| 久久一级无码精品毛片6| 97操碰| 97在线视频观看网站| 91第一页| 色 亚洲 91| 精品国产少妇高潮视频| 免费精品福利在线观看| 美日韩男女操屄视频| 九九五月天| 天天热精品| 久久av色| 97久久视频| 色呦呦呦在线观看视频| 五月丁香六月综合缴清无码| 亚洲天堂男人天堂网| 加勒比色99999| 天堂麻豆天美| 国产人伦精品一区二区三区| 激情五月激情综合网| 精品国产一区二区三区香蕉欧美| 呦呦一区| 蜜乳中文字幕a在线| 欧美视频一| 日韩欧美传媒一区国产| 干妹子| 午夜福利区| 九九九久久久久| 操一区| 人妻五十路在线| 欧美高清性猛交| 色呦呦、国产精品| 色天堂在线观看| 亚洲的天堂网| 春色综合免费| 视频在线观看青青99国产| 亚洲综合大片| 91综合熟女| 人妻精品视频一区二区三区| 岛国片在线视频网站| 欧美18 在线观看| 被男人吃奶很爽的毛片| 污污汅18禁网站在线永久免费观看| 国产欧美一级在线观看| 亚洲av无码成人精品国产| 色丁香五月婷婷| 综合国产97| 四虎影库国产精品免费| 麻豆精品A片免费观看| 亚洲黄a三级三级三级看三级| 97色色,97综合| 国产三级中文字幕粉嫩| 综合网91| 亚洲另类在线观看| 97久久超碰国产网站| 加勒比色综合| 日韩成人高清一区二区| 亚洲色图欧美视频| 狠狠狠一区二区三区| 伊人久久亚洲色欲综合网站| 国内外内射高清视频| 99re国产精品视频| 国产精品久久发布| 碰人碰碰人人开房人肉| 日韩精品中文字幕人妻| WWW啪啪的com| 91蜜臀在线久久久久| 天天摸天天碰天天添青青| 久久久96精品| 日日噜噜夜夜狠狠视频无| 国产欧美第五页| 97操碰| 伊人精品久久网站| 99热网站| 久久久久九九九九九| 很黄很色的视频在线观看| 99热超碰| 丝袜足交视频| 婷婷尹人大香蕉免费| 欧美超碰人妻97| 丝袜熟女2P| 91成人社区| 中文字幕奈奈美被公侵犯| 激情综合五月| 超碰视97中文| 久久亚洲欧美中文字幕国语| 五月丁香综合激情| 亚洲男人电影天堂| 人妻乱仑一区二区三区| 亚洲欧美内射| 国产精品香蕉热久久新品| 一区二区国产视频在线观看| 中国操逼无码| 热久久91婷婷| 夜夜欢天天干| 少妇毛片久久| 夜夜操美女| 青久操| 91在线视频免费播放| 精品二999| 亚洲AV无码国产精品久久久久 | 久久草大香蕉| 蜜臀AV午夜精品久| 欧美大码在线视频| 性爱网站一区二区| 综合九九| 青青11操操操操操操操操| 久久97超碰| 日逼五月天| 性在久久久久久| 色亚州人久干视频在线观看免费版| 免费伦费视频在线观看| 色天天野狼综合社区| 人妻熟女字幕一区二区| 97超碰色色| 中文字幕精品三级久久久| 69超碰综合| 国产精品国产自产高清AV| 欧美性五月| av优播| 日美免费黄片| 综合网天天| 色九九综合AV| 色 婷97| 乱伦熟女区| 国产一区二区三区白丝| 91精品国产91熟女| 成人十八禁日韩欧美一二三| 久久久久久久 九九九九九九九| 日韩欧美中文日韩欧美色| 日韩视频中文字幕| 国内外毛片在线观看| 爱欲AV| 日日操天天操| 成人aⅴ一区二区三区| 免费国产视频| 亚洲最大AV网| 家庭乱伦麻豆| 亚洲97在线观看| 插插综合网天天影视网| 91精品又粗又猛又爽| 中文字幕亚洲欧美在线不卡| 伊人激情| 日本在线不卡一二区| 亚洲一区日韩精品中文字幕| 亚洲欧美黄| 四虎影视精品| 无码精品啪啪啪一区二区三区三州| 国产一区二区三区,在线观看观看 五月开心久久AV官网 | 欧美日韩制服| 亚洲脚交| 欲色综合| 成人小电影网站tex| 亚洲凸凹超碰成人| 亚洲清纯唯美| 国产粉嫩蜜臀av一区二区三区| 欧美激情片一区二区| 老熟女熟妇| 精品一区二区三区四区外站| 爱妻综合网| 新91视频.cmp| 国产精品久久久久久久久久久久久久吹| 人妻少妇精品久久久久久| 久久一区二区蜜桃| 久久性爱精品一区| 亚洲成人美女无吗| 久久天天摸| 男人的天堂在线| 日本欧美不卡| 13小男生GAY自慰脱裤子| 国语对白在线播放视频| 色丁香五月婷婷| 10000部十八禁看电影| 国产91丝袜在线播放蜜月| 91色婷婷综合久久中文字幕二区| 国产日韩精品suv| 性做久久久久久免费观看软件| 久久精品小视频| 精品97久久综合| 97超碰欧美中文字幕| 亚洲αv一区二区三区| 97视频观看| 麻豆天天躁天天揉揉AV| 日本人妻中文字幕精品| 99色综合| 久久草视频污视频| 亚洲天堂五月天国产| av一区二区三区 中文| 加勒比海成人视频网| 美女网站91| 日韩精品一区二区三区色欲| 久热精品色情| 亚洲国产另类在线中文| 六月丁香五月婷婷| 天天日天天干天天摸天天操| 岛国福利在线精品播放| 玖色AV| 91痴汉| 国产亚洲精品美女久久久m| 91大胆欧美| 日韩久久.一级黄色片| 五月婷在线| 色97国产69香蕉| 日韩精品 视频一区二区| 91精品丝袜久久久久久无码人妻| 黑人综合网| 俺去也婷婷| 超碰色97| 欧美日韩性感| 20cm女自慰在线日韩欧美| 不卡超碰护士AV在线免费播放| 青青草好吊色| www五月| 午夜传煤十二区精品| 婷婷丁香在线| 欧美综合另类| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 精品一区二区久久| 久久久久成人亚洲国产| 中文字幕在线观看永久| 中出789在线视频| 2018天天干在线视频| 亚洲欧美综合网站| 亚洲一区二区性爱电影| 熟女91网| 激情五月天婷婷| 一本色道综合久久欧美| 97国产精品久久久久| 丁香五月激情综合| 成人五月天丁香激情综合| 自拍视频大全亚洲专媒视频/一区二区三区 | av婷婷色婷婷色六月| 91白虎| 亚州色站 日韩电影| 91精品啪在线观看国产城中村| 久久激情婷婷| 亚洲综合69| 久操黄色视频| 国产精品成人无码av无码免费| 99色热| 久久久久ab| 激情五月天色色网| 先锋影音av先锋一区| 96一区二区三区| 一区二区三区 丝袜高跟| 99操视频| www.久久最新地址| 久久久久亚洲| 亚洲欧美综合网| 色偷综合| 伊人久久大香蕉线AV五月天| 25国产精品免费观看| 又粗又长又爽在线观看| 黄片www视频免费| 精品熟妇视频一区二区| 国产乱码久久久久久| 99自拍B亚洲 | 男女啪啪网站免费视频| 欧美综合亚洲综合| 男生通女生屁股| 天海翼久久| 综合91网| 大香蕉琪琪日本女优不卡| 色眯眯射| 美女的肌被草喷水视频| 日韩熟女精品无码专区一区二区 | 精品免费囯产一区二区三区| 91在线国产后入风骚翘臀美女素人| 天美一二三在线观看Av| 中文字幕视频一区视频二区| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 99热精品在线观看| 欧美一级A片在线看视频性色| 日韩丰满熟妇| 亚洲欧美国产其他二区| 国产一区二区三区精品观看啪| 久久国内| 丁香五月成人| 婷婷色一区| 九久9热| 99蜜桃臀亚洲成人在线观看| 一区麻豆 高清中文字幕| 亚洲码和欧洲精品激情系列| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 国产精品999zyz| 午夜国产成人福利视频| 青青草操逼逼视频| 日本精品人妻少妇一区二区| 久草资源在线视频官方总站日韩丝袜美腿| 国产性感骚丝袜在线| 欧美中字二区| 天天搞欧美| 精品国产a∨一区天美传媒| 亚洲在线91| 一级做a爰片久久毛片图片| 国产高清无码一区二区三区四区皇冠| 久久HD| 久久久久97| 91精品人妻偷情| 超碰人人超在线观看| 天天干天天干天天干| 艳尻美人妻| 国产剧情在线| 99久久精品国产高潮| 丝袜内射| 女人18精品一区二区三区| 亚洲无码超碰免费| av九九| 久久精品99久久久久久| 91狠狠综| 国产一区二区啪啪视频| 日韩传媒在线| 性生活性生大爱77AV国产| 欧美日韩黄片精品在线| 国产欧美日韩在线观看麻豆传媒公司| 99在线视频播放| 99久久亚洲精品无码毛片潘甜甜 | 伊人嫩草| 国产综合网站在线播放 | 9/A片| 国产三级中文字幕粉嫩 | 制服诱惑亚洲一区二区三区在线观看| 97超碰色| 欧美性特| 91少妇人妻| 久久人妻视频| 久久蜜桃一区二区| 国产福利影视| 欧美小说区视频区| 亚洲欧美中文日韩视频中国语| 加勒比人妻综合| 久久透逼视频| 欧美 牲| 国产精品 久久久精品一牛| 欧美香蕉视xxx| 日本人妻伦在线中文字幕| 亚洲欧美精品福利在线| 色天天野狼综合社区| 午夜寂寞欧美| 视频二区美腿制服人妻欧美| 丁香五月性爱| 超碰人妻久久| 欧洲免费一区二| 麻豆三极片| AV 少妇 人妻 偷拍| 人妻激情视频| 精品女人999| 国产成人精品必看| 激情啪啪视频| 99热精品在线在线| 韩国一级做a久久久久| 玖玖综合色| 色久桃花影院在线观看| 亚洲另类色综合网站| 夜夜操2028| 色网在线视频观看免费| 欧美一区二区| 欧美日韩亚洲高清不卡一区二区三区| 无码高清少妇久久| 国产蜜臀在线| 一区二区首页| 91丨九色丨大屁股| 99老司机精品视频在线观看| 青青草在线视频美女| 丁香五月天婷婷姐| 中文久久爆乳| 亚洲精品一区二区日本| 亚州五月| 91网站18在线| 综合五月婷婷| 在线色导航| 亚洲AV无码乱码| 91精品国产91久久久久久久久久久久| 啊啊啊啊视频免费| 在线综合色| 黄色电影在线播放综合网站| 国产99热| 激情另类激情| 久久骚| 色色色色色色色色综合| 白丝1区2区3区| 999久久久精品国产| 男人天堂综合| 九九久久久九九| 97视频观看| 99综合| 色综合色欲色综合色综合色综合| 免费?级毛片无码?∨蜜芽试看| 国产精品久久久久久久久久久久久久吹 | 日韩性爱小视频| 日本一区不卡| 亚洲精品97| 日本一二区不卡| 大香蕉淫人网| 大色综合| 色悠久| 精品国产Av无码久久久亚洲| 黑人免费福利视频| 国产91精品在线免费| 欧美色图片| 看免费的黄片| 操国产高清| 啊啊啊啊啊好多水| 久久久久久999| 夜夜躁狠狠躁日日躁av| 91高潮| 国产精品分类在线观看| 亚洲码在线中文在线观看| 岛国片在线播放| 精品黑人一区二区| 九月婷婷久久| 欧美图片偷拍| 男人天堂日日夜夜| 亚洲精品久久一区二区三区蜜桃臀| 日本精品一区二区三| 亚洲熟女综合一区二区| 日本熟女不卡视频| 偷看洗澡一二三区美女| 免费看毛片操穴| 91精品婷婷国产综合久久竹菊| 美女上床网站| se吧提供91精品国产91久久久久久| 蜜乳Av成人片网站| 密桃99999| 东北操逼| 人人妻人人爽 97人人看碰人免费公开视频| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 色拍偷亚洲| 91欧美经典| 久干9操| 成人女人国产| 天天性射网| 久久精品国产亚洲妲己影视| AV无码久久久精品| 精品少妇后入一区二区三区四区人妻巨乳| 精品人妻视频一区二区三区蜜桃视频| 亚洲精品九九九九九九| 天天艹天天日| 又大又白奶子| 一本一道久久综合久久| 国产精品成人久久一区二区三区 | 日韩免费在线视频观看| 女人爽到高潮久久久| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 亚洲激情色片 | 男人的天堂久久狠| 日韩激情无码影院| 亚洲色图91欧美日韩| 青青草在线视频美女| 嫩草一区二区在线观看| 一牛一区二区三区久久| 91av熟女人妻| 亚洲宅男天堂| 欧美性爱超碰97| 尹人大香蕉视频在线| 欧美日韩小说| 人妻av在线| www成人啪啪18秘 免费| 国产精品天干天干综合网麻豆 | 综合网色| 96精品久久| 六六久久日韩不卡| 欧美激情久操网| 内射黑人|