日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满av-国产精品中文字幕免费观看-亚洲成人久久一区二区三区-国内少妇偷人精品视频无缓冲-一区二区国产精品日本一区二区三区在线网

ARTICLE DETAIL

資訊詳情

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

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

Paged.js 實(shí)戰(zhàn):HTML 分頁(yè)排版與 PDF 導(dǎo)出 簡(jiǎn)介這份 paged.js 教程資料包面向具備一定 JavaScript 基礎(chǔ)的前端開發(fā)者以及需要把 HTML 內(nèi)容穩(wěn)定輸出為 PDF 的技術(shù)人員重點(diǎn)解決瀏覽器端分頁(yè)排版、打印樣式適配和文檔生成流程中的實(shí)際問(wèn)題。教程圍繞 CSS Paged Media 展開涉及核心概念、安裝引入、基礎(chǔ)示例、頁(yè)面尺寸與邊距設(shè)置、復(fù)雜布局處理、PDF 輸出、框架集成及調(diào)試優(yōu)化等主題并關(guān)注分頁(yè)斷點(diǎn)、打印媒體查詢等細(xì)節(jié)適合作為理解分頁(yè)機(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 分頁(yè)排版的實(shí)用資料。1. 把 HTML 排成帶頁(yè)碼的書這份 Paged.js 教程卡在哪個(gè)位置手上有一批結(jié)構(gòu)規(guī)整的 HTML 文檔要輸出成帶頁(yè)碼、頁(yè)眉、目錄、腳注的 PDF。第一反應(yīng)通常是開 Word改版式改到懷疑人生或者上 LaTeX學(xué)習(xí)成本夠?qū)憙蓚€(gè)項(xiàng)目。這份以 PDF 形式整理的 Paged.js 教程給的是中間路線用 CSS Paged Media 那套聲明式規(guī)則描述版面由一段 JavaScript 在瀏覽器里把長(zhǎng)文檔真正切成一張張頁(yè)面盒再?gòu)臑g覽器打印成 PDF。它適合已經(jīng)在用 Web 技術(shù)棧產(chǎn)出文檔、又不想把排版交給桌面軟件的人也適合想搞清楚“分頁(yè)到底發(fā)生在哪一層”的前端??赐昴苣玫降淖钚¢]環(huán)是一頁(yè) A4、頁(yè)碼正確、目錄頁(yè)碼能自動(dòng)回填、導(dǎo)出不跑版。2. 分頁(yè)發(fā)生在哪一層Polisher、Chunker 與頁(yè)面盒的三角關(guān)系2.1 瀏覽器不實(shí)現(xiàn)的 CSS Paged Media被誰(shuí)補(bǔ)上了瀏覽器對(duì) CSS Paged Media 的支持少得可憐。page里的size和margin在打印時(shí)大致能生效但top-center、bottom-right這些 margin box以及counter(pages)、target-counter()、float: footnote主流瀏覽器基本一個(gè)都沒(méi)實(shí)現(xiàn)。Paged.js 是補(bǔ)這一層的庫(kù)它不是把頁(yè)面截圖而是真的操作 DOM把源內(nèi)容按渲染高度切成若干.pagedjs_page每個(gè)頁(yè)面盒里再掛.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ī)則抽出來(lái)轉(zhuǎn)成能作用在頁(yè)面盒上的 CSSChunker 負(fù)責(zé)切分它測(cè)量每個(gè)塊級(jí)元素的實(shí)際高度累加到超過(guò)版心高度就斷開生成 breakToken 繼續(xù)下一頁(yè)P(yáng)reviewer 串起整個(gè)流程并在不同階段拋出事件鉤子。樣式明明寫了卻沒(méi)生效先去 Polisher 處理后的 CSS 里找切頁(yè)位置莫名其妙去看 Chunker 量到的高度頁(yè)碼是空的那是 margin box 填充階段的事。三層分開看比在一堆.pagedjs_*類名里瞎猜快得多。這套做法有一個(gè)明確的天花板DOM 是真的被切開了。任何依賴“整體連續(xù)”的視覺(jué)效果在切口處都會(huì)斷比如帶圓角和陰影的卡片被劈成兩半、跨頁(yè)的豎線斷掉、box-shadow在下半頁(yè)被裁掉。這不是 bug是這套方案的物理邊界。接受不了就只能改寫內(nèi)容結(jié)構(gòu)把不可分割的東西包進(jìn)break-inside: avoid的容器里。2.2 最小工程裝包、引 polyfill、寫出第一個(gè) page先把依賴裝上。pagedjs這個(gè)包會(huì)帶出dist/paged.polyfill.js把它引到頁(yè)面里就會(huì)自動(dòng)接管分頁(yè)不需要寫任何初始化代碼。# 只做本地排版驗(yàn)證的話一個(gè)靜態(tài)服務(wù)就夠不用上構(gòu)建工具 npm init -y npm install pagedjs npx serve .然后是頁(yè)面骨架。下面這份可以直接跑注意page的寫法和普通 CSS 是同一套語(yǔ)法只是規(guī)則名不同。!doctype html html langzh-CN head meta charsetutf-8 !-- polyfill 必須在樣式之前引它會(huì)在 DOM 就緒后接管分頁(yè) -- 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í)給頁(yè)面盒一點(diǎn)間隔方便肉眼確認(rèn)切頁(yè)位置 寫進(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)來(lái)就行不需要額外的包裝層。/p p第二段正文。分頁(yè)由 polyfill 自動(dòng)完成屏幕上會(huì)看到一張張獨(dú)立的紙。/p /article /body /html這里有幾個(gè)參數(shù)必須說(shuō)清楚。size: A4決定頁(yè)面盒的寬高如果打印對(duì)話框里又選了別的紙型兩邊會(huì)打架導(dǎo)出必翻車所以后面接自動(dòng)化時(shí)要用preferCSSPageSize把它固定住。margin是版心位置順序是上右下左頁(yè)眉頁(yè)腳就長(zhǎng)在這塊留白里所以想要頁(yè)眉不擠正文靠的是調(diào)margin-top不是在正文里加 padding。counter(page)是當(dāng)前頁(yè)碼counter(pages)是總頁(yè)數(shù)后者由 Paged.js 統(tǒng)計(jì)完所有頁(yè)面盒之后回填屏幕上第一眼看到的可能是空值等它排完就有了。提示page規(guī)則寫在任意style或外鏈 CSS 里都行但要保證它和正文樣式在同一份文檔里跨 iframe 引入的樣式表的page不一定被 Polisher 抓到。2.3 目錄頁(yè)碼回填target-counter 與 leader 的組合目錄頁(yè)碼是這類工具最容易讓人眼前一亮的功能寫法卻很簡(jiǎn)單給目錄項(xiàng)一個(gè)指向目標(biāo)的錨點(diǎn)然后用target-counter把目標(biāo)所在頁(yè)碼取出來(lái)當(dāng)偽元素內(nèi)容。/* 目錄項(xiàng)不要下劃線右側(cè)自動(dòng)補(bǔ)點(diǎn)線再跟頁(yè)碼 */ .toc a { text-decoration: none; color: inherit; } .toc a::after { /* leader() 生成填充點(diǎn)線target-counter 取目標(biāo)元素所在頁(yè)碼 */ content: leader(.) target-counter(attr(href), page); font-variant-numeric: tabular-nums; /* 頁(yè)碼等寬右側(cè)才對(duì)齊 */ } /* 目錄單獨(dú)占頁(yè)別和正文擠在一起 */ .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)題、只讓頁(yè)碼自動(dòng)回填。target-counter取不到值的時(shí)候不會(huì)報(bào)錯(cuò)只會(huì)靜默留空。第一次用很容易以為自己寫錯(cuò)了選擇器其實(shí)是錨點(diǎn)沒(méi)對(duì)上。排查順序固定成三步href和id是否嚴(yán)格一致、目標(biāo)元素是否在分頁(yè)流里被display: none藏掉的內(nèi)容不算、::after是否被更高優(yōu)先級(jí)的選擇器覆蓋。3. 版式參數(shù)怎么設(shè)page 規(guī)則、命名頁(yè)面與頁(yè)眉頁(yè)腳3.1 page 里真正會(huì)影響成品的六個(gè)參數(shù)page能寫的東西不少但決定成品長(zhǎng)相的就那么幾個(gè)。下面這張表是我反復(fù)改樣式之后沉淀下來(lái)的左邊是參數(shù)右邊是容易寫錯(cuò)的地方。參數(shù)常用取值實(shí)際作用容易踩的地方sizeA4/210mm 297mm頁(yè)面盒寬高和打印對(duì)話框紙型不一致導(dǎo)出尺寸跑偏margin22mm 18mm 20mm 18mm版心位置順序上右下左想給頁(yè)眉留位置卻只加大上邊距忘了 margin box 就長(zhǎng)在留白里margin boxtop-center等頁(yè)眉頁(yè)腳、頁(yè)碼落點(diǎn)用 padding 頂位置內(nèi)容溢出被裁page自定義名字把元素綁到命名頁(yè)面以為會(huì)繼承到該元素后面所有頁(yè)break-*page/avoid/right斷頁(yè)與避斷兩側(cè)同時(shí)聲明憑空多出空白頁(yè)bleed/marks3mm出血與裁切線在瀏覽器打印鏈路里表現(xiàn)不完整真正印刷一般交給后端拼版關(guān)于bleed和裁切線說(shuō)句實(shí)話走瀏覽器打印這條鏈路時(shí)出血很難做干凈因?yàn)榇蛴?duì)話框本身還會(huì)縮放。需要嚴(yán)格出血的項(xiàng)目通常的做法是先用 Paged.js 排出內(nèi)容頁(yè)再交給專業(yè)的拼版工具加出血和爬升。這不是 Paged.js 的短板是瀏覽器打印模型的限制。3.2 命名頁(yè)面封面、正文、附錄各用一套版心一本書里不同部分的版式往往不同封面滿版不留白正文雙欄帶頁(yè)眉附錄單欄不要頁(yè)碼。做法是定義多個(gè)命名page再用元素上的page屬性去綁定。/* 封面零邊距滿版 */ page cover { margin: 0; bottom-center { content: none; } /* 封面不要頁(yè)碼 */ } /* 每章起始頁(yè)不顯示頁(yè)眉讓標(biāo)題更醒目 */ page chapterStart { top-center { content: none; } } /* 附錄頁(yè)碼改羅馬數(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è)語(yǔ)義細(xì)節(jié)經(jīng)常被誤解page屬性影響的是元素起始的那一頁(yè)。一個(gè)章節(jié)容器如果跨了 6 頁(yè)只有第一頁(yè)套用chapterStart后面 5 頁(yè)回落到默認(rèn)page。很多人以為會(huì)一路繼承下去然后發(fā)現(xiàn)“第二章的頁(yè)眉怎么又冒出來(lái)了”其實(shí)行為一直是對(duì)的。要讓整章都不顯示頁(yè)眉得把頁(yè)眉的開關(guān)做到page級(jí)別而不是單頁(yè)級(jí)別或者接受“章首頁(yè)特殊、正文頁(yè)統(tǒng)一”這個(gè)更常見(jiàn)的排版慣例。break-before: right也值得單獨(dú)說(shuō)。它要求新內(nèi)容從右手頁(yè)開始如果當(dāng)前正好停在右手頁(yè)就會(huì)插入一張空白頁(yè)。雙面印刷這是標(biāo)準(zhǔn)做法但在屏幕上翻 PDF 時(shí)看到空白頁(yè)別急著當(dāng) bug 修先確認(rèn)是不是right在起作用。3.3 頁(yè)眉內(nèi)容從哪來(lái)string-set 取文本running element 取整塊頁(yè)眉最常見(jiàn)需求是“顯示當(dāng)前章節(jié)標(biāo)題”。兩種實(shí)現(xiàn)路線差別不小。第一種用string-set它從元素里取文本存成一個(gè)命名字符串margin box 再用string()取出來(lái)。/* 把每個(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 搬到頁(yè)眉里能帶 logo、能帶雙色文字。div classrunning-head 模擬項(xiàng)目X 技術(shù)手冊(cè) span classver內(nèi)部版/span /div.running-head { position: running(dochead); /* 從正文流里移除交給頁(yè)眉引用 */ } page { top-left { content: element(dochead); font-size: 9pt; } }怎么選頁(yè)眉只有一行純文字用string-set它有“當(dāng)前頁(yè)對(duì)應(yīng)的章節(jié)”這個(gè)語(yǔ)義跨頁(yè)時(shí)取哪一頁(yè)的值由第二個(gè)參數(shù)控制頁(yè)眉需要排版自由度圖標(biāo)、分隔線、左右分區(qū)用 running element但它本質(zhì)是把同一個(gè) DOM 節(jié)點(diǎn)搬來(lái)搬去同一個(gè) running element 被多處引用時(shí)行為會(huì)變得難以預(yù)測(cè)。string()的第二個(gè)參數(shù)CSS 規(guī)范里給了first、start、last幾種取法用來(lái)解決“標(biāo)題落在上一頁(yè)底部、正文在下一頁(yè)頁(yè)眉該顯示誰(shuí)”的問(wèn)題。實(shí)際用的時(shí)候先在目標(biāo)版本上把幾種取法都跑一遍看哪個(gè)符合你的排版習(xí)慣別默認(rèn)它們?nèi)紝?shí)現(xiàn)得一樣。我吃過(guò)這個(gè)虧本地看著對(duì)換一個(gè)渲染環(huán)境頁(yè)眉就變成了上一章的標(biāo)題最后靠start才穩(wěn)住。4. 長(zhǎng)文檔的四件硬活目錄、腳注、交叉引用、斷頁(yè)控制4.1 多級(jí)目錄層級(jí)、點(diǎn)線與章節(jié)起始頁(yè)單級(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)線和頁(yè)碼對(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è)隱藏問(wèn)題目錄本身頁(yè)數(shù)不定。三頁(yè)的目錄如果只留了一頁(yè)的位置后面會(huì)擠掉正文的第一頁(yè)頁(yè)碼全部錯(cuò)位。給目錄容器加break-after: page是必須的同時(shí)目錄項(xiàng)不要用break-inside: avoid否則一頁(yè)放不下時(shí)會(huì)推走一大塊中間留白。4.2 腳注float: footnote 和 footnote 區(qū)域腳注是 Paged.js 相對(duì)亮眼的功能。寫法是把腳注內(nèi)容直接放在正文引用處用float: footnote抽走。p 這段正文里有一個(gè)需要說(shuō)明的點(diǎn)span classfn這里的數(shù)值來(lái)自模擬項(xiàng)目X 的內(nèi)部測(cè)試記錄僅作示例。/span后面繼續(xù)。 /p/* 腳注本體從正文流里抽走落到本頁(yè)的腳注區(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ū)與正文之間的分隔線寫在頁(yè)面級(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)想要每頁(yè)重編得在頁(yè)面上重置計(jì)數(shù)器這塊各版本行為不完全一致改之前先小樣本驗(yàn)證。腳注內(nèi)容必須寫在正文流的引用位置不要用 JS 事后插入因?yàn)榍许?yè)是在 DOM 就緒后立刻發(fā)生的后插入的節(jié)點(diǎn)趕不上這一輪布局。腳注區(qū)高度是參與版心計(jì)算的一條長(zhǎng)腳注會(huì)擠掉正文行數(shù)所以腳注盡量控制在兩行以內(nèi)超過(guò)就改成尾注。還有一個(gè)現(xiàn)實(shí)約束腳注擠不下時(shí)Paged.js 會(huì)把整段正文推到下一頁(yè)而不是把腳注截?cái)?。這意味著一個(gè)段落如果特別長(zhǎng)比如一整頁(yè)不分段腳注永遠(yuǎn)找不到落點(diǎn)。正文塊保持正常分段這個(gè)問(wèn)題基本不會(huì)出現(xiàn)。4.3 斷頁(yè)控制break-* 與 orphans/widows 的實(shí)際效果排版質(zhì)量的差距八成在斷頁(yè)控制上。默認(rèn)行為是“能塞就塞”標(biāo)題孤零零留在頁(yè)底、段落最后一行單獨(dú)跑到下一頁(yè)都是常見(jiàn)畫面。/* 標(biāo)題后面不許斷避免標(biāo)題落在頁(yè)底 */ h1, h2, h3 { break-after: avoid; } /* 標(biāo)題前面也不許斷避免標(biāo)題跑到新頁(yè)第一行卻和上文割裂 */ h1, h2, h3 { break-before: avoid; } /* 段落至少留 3 行在頁(yè)底至少 3 行帶到下一頁(yè) */ p { orphans: 3; widows: 3; } /* 圖表、代碼塊、引用塊整體不拆 */ figure, pre, blockquote, .callout { break-inside: avoid; } /* 表格允許跨頁(yè)但單行不許劈開表頭每頁(yè)重復(fù) */ table { break-inside: auto; } tr { break-inside: avoid; } thead { display: table-header-group; } /* 章節(jié)從新頁(yè)開始附錄從右手頁(yè)開始 */ .chapter { break-before: page; } .appendix { break-before: right; }orphans和widows是最容易被忽略的兩個(gè)屬性因?yàn)樗鼈冊(cè)谄渌胤綆缀跤貌坏?。前者控制?yè)底最少留幾行后者控制頁(yè)頂最少帶幾行值一般設(shè) 2 到 3。設(shè)成 1 等于關(guān)掉保護(hù)設(shè)成 4 以上在中文字號(hào)下會(huì)導(dǎo)致大量半空頁(yè)得不償失。break-inside: avoid不能濫用。給一個(gè) 800px 高的卡片加這條它會(huì)整個(gè)被推到下一頁(yè)上一頁(yè)留下大片空白給嵌套容器同時(shí)加可能出現(xiàn)“誰(shuí)都不讓誰(shuí)”最終整塊溢出。經(jīng)驗(yàn)做法是只在高度可控的元素上加圖、代碼塊、提示框并且加之前先想清楚這塊東西如果真的有 1.5 頁(yè)高避斷反而是災(zāi)難。5. 五個(gè)翻車現(xiàn)場(chǎng)空白頁(yè)、頁(yè)碼錯(cuò)位、字體競(jìng)態(tài)、表頭丟失、二次分頁(yè)5.1 章節(jié)之間憑空多出一張空白頁(yè)現(xiàn)象導(dǎo)出的 PDF 里某些章節(jié)之間夾著一張完全空白的頁(yè)屏幕上也能看到。原因基本是兩個(gè)。一是斷頁(yè)在兩側(cè)同時(shí)聲明上一章的容器寫了break-after: page下一章的容器又寫了break-before: page兩次強(qiáng)制斷頁(yè)疊加中間那張就是產(chǎn)物。二是元素高度剛好等于或略大于版心高度浮點(diǎn)誤差讓 Chunker 判定“放不下”于是推到下一頁(yè)而它本身幾乎沒(méi)有內(nèi)容看起來(lái)就是空白。解決斷頁(yè)只在一側(cè)聲明統(tǒng)一寫在章節(jié)容器的break-before上把break-after全刪掉。定位時(shí)打開控制臺(tái)數(shù)一下document.querySelectorAll(.pagedjs_page).length跟預(yù)期頁(yè)數(shù)對(duì)不上再逐段二分注釋掉break-*規(guī)則通常十分鐘內(nèi)能鎖定。我現(xiàn)在的習(xí)慣是所有斷頁(yè)規(guī)則集中寫在一個(gè)區(qū)塊里注釋標(biāo)明“只允許單側(cè)聲明”就是被這個(gè)坑教育出來(lái)的。5.2 正文第一頁(yè)顯示成第 2 頁(yè)現(xiàn)象封面不顯示頁(yè)碼但正文第一頁(yè)的頁(yè)腳寫著“2 / 48”全篇頁(yè)碼整體偏移一位。原因封面也在分頁(yè)流里占用了counter(page) 1。你只是把封面的頁(yè)碼隱藏了content: none計(jì)數(shù)器并沒(méi)有歸零。解決兩個(gè)方向。CSS 方向是在正文起始元素上加counter-reset: page 1讓計(jì)數(shù)器從這里重算但這是 Paged.js 的擴(kuò)展行為不是所有環(huán)境都穩(wěn)上生產(chǎn)前必須實(shí)測(cè)。工程方向更保險(xiǎn)封面單獨(dú)渲染一次正文單獨(dú)渲染一次最后在 PDF 層合并頁(yè)碼天然從 1 開始。項(xiàng)目里做正式交付物時(shí)我傾向后者雖然多一步但不用賭渲染器的實(shí)現(xiàn)細(xì)節(jié)。順帶一提前言用羅馬數(shù)字、正文用阿拉伯?dāng)?shù)字這種需求做法是把前言和正文拆成兩個(gè)命名頁(yè)面各自counter(page, lower-roman)和counter(page)再把counter-reset放在兩段的交界處。復(fù)雜歸復(fù)雜但這是唯一能同時(shí)滿足兩種編號(hào)體系的路子。5.3 字體和圖片沒(méi)加載完就開始切頁(yè)現(xiàn)象導(dǎo)出的 PDF 和屏幕上看到的完全是兩份東西行高變了、每行字?jǐn)?shù)變了、末尾多出好幾頁(yè)或者圖片位置全錯(cuò)后面內(nèi)容整體上移。原因Paged.js 在 DOM 就緒后立刻開始切頁(yè)此時(shí) Web 字體還在下載瀏覽器先用 fallback 字體渲染Chunker 量到的高度是錯(cuò)的。字體替換完成之后每行能塞的字?jǐn)?shù)變化整篇需要重排但分頁(yè)已經(jīng)結(jié)束。圖片同理沒(méi)寫死尺寸的img初始高度接近 0加載完撐開后面的分頁(yè)全廢。解決給所有圖片寫死width/height或aspect-ratio讓它在加載前就占好位置把分頁(yè)推遲到字體和圖片都就緒之后具體做法在 6.1 給代碼。字體這塊還有一個(gè)隱性成本中文字體動(dòng)輒幾 MB用font-display: swap會(huì)讓首屏更快但排版更不穩(wěn)做 PDF 輸出時(shí)反而應(yīng)該用font-display: block寧可等一會(huì)兒也別讓它換字。5.4 長(zhǎng)表格翻頁(yè)后表頭不見(jiàn)了現(xiàn)象跨頁(yè)的表格第二頁(yè)開始只有數(shù)據(jù)行讀者對(duì)不上哪列是什么。原因thead沒(méi)有聲明為table-header-group。默認(rèn)的table-header-group是瀏覽器給的但在分頁(yè)場(chǎng)景下需要顯式寫出來(lái)讓切頁(yè)邏輯知道“這一段每頁(yè)都要重復(fù)”。另一種情況是表格上加了break-inside: avoid整塊被推到下一頁(yè)雖然表頭在但上一頁(yè)留下半頁(yè)空白視覺(jué)上更難看。解決thead { display: table-header-group; }tr { break-inside: avoid; }保證單行不被劈開把表格上的break-inside: avoid去掉。如果表格有tfoot做合計(jì)行同樣處理。另外表格列寬盡量用table-layout: fixed加百分比自動(dòng)列寬在跨頁(yè)時(shí)可能因?yàn)閮?nèi)容分布變化而重算導(dǎo)致前后兩頁(yè)列寬不一致。5.5 打印預(yù)覽比屏幕多出幾頁(yè)現(xiàn)象屏幕上數(shù)出來(lái) 40 頁(yè)CtrlP 預(yù)覽變成 43 頁(yè)或者每頁(yè)底部?jī)?nèi)容被裁掉一截。原因二次分頁(yè)。Paged.js 已經(jīng)把內(nèi)容切成了固定高度的頁(yè)面盒瀏覽器打印時(shí)又按自己的page規(guī)則分了一次兩套規(guī)則打架。另一種是page.pdf()里還帶著 margin和 CSS 里的margin疊加版心被壓小。解決打印媒介下把page的margin歸零因?yàn)榘嫘倪吘嘁呀?jīng)由頁(yè)面盒自己承擔(dān)了headless 打印時(shí)用preferCSSPageSize: true讓渲染器服從 CSS 里的size同時(shí)把margin全部設(shè)成 0printBackground: true一定要開否則頁(yè)眉線、底紋、邊框全部消失看起來(lái)像樣式丟了。注意不要用瀏覽器的“另存為 PDF”做最終交付它受用戶本機(jī)紙型、縮放比例、頁(yè)眉頁(yè)腳開關(guān)影響同一份文件在不同機(jī)器上能出不同結(jié)果。要么走 headless要么在頁(yè)面里顯式提示用戶把頁(yè)邊距選“無(wú)”、縮放選“默認(rèn)”。6. 接進(jìn)自動(dòng)化等對(duì)完成信號(hào)再做版式回歸6.1 headless 打印auto:false 加一個(gè)顯式完成標(biāo)記自動(dòng)分頁(yè)最大的問(wèn)題是“什么時(shí)候算排完了”沒(méi)有標(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 的頁(yè)面 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; // 總頁(yè)數(shù)后面做回歸斷言用 }, }; }); await page.goto(http://localhost:8080/manual.html, { waitUntil: load }); // 字體是異步的等它落地再切頁(yè)否則行高全錯(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, // 頁(yè)眉線、底紋、邊框全靠它 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來(lái)自after回調(diào)是 Paged.js 統(tǒng)計(jì)出的總頁(yè)數(shù)比自己去數(shù) DOM 節(jié)點(diǎn)可靠。6.2 把頁(yè)數(shù)和關(guān)鍵頁(yè)文本變成斷言版式回歸不需要圖像比對(duì)太脆。頁(yè)數(shù)加關(guān)鍵頁(yè)文本這兩條斷言能擋住 90% 的樣式事故。// 改完樣式跑一遍頁(yè)數(shù)或關(guān)鍵頁(yè)內(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(頁(yè)數(shù)從 42 變成 ${total}先查字體加載和 break 規(guī)則); } if (!page5.includes(第 3 章)) { throw new Error(第 5 頁(yè)內(nèi)容異常${page5}); }頁(yè)數(shù)變了不一定是壞事但一定意味著有東西動(dòng)了可能是字體換了、可能是斷頁(yè)規(guī)則改了、也可能是某個(gè)圖片沒(méi)加載出來(lái)。把它當(dāng)紅燈逼自己每次改完樣式都跑一遍比事后發(fā)現(xiàn)交付物錯(cuò)版強(qiáng)太多。我現(xiàn)在的固定動(dòng)作是改完任何一條page或break-*規(guī)則先跑 6.1 的腳本出一份 PDF肉眼掃一遍頁(yè)眉頁(yè)腳再跑 6.2 的斷言兩條都過(guò)才算完。這套流程是從一次交付前夜發(fā)現(xiàn)全篇頁(yè)碼偏移一位開始養(yǎng)成的那次通宵重排的教訓(xùn)太貴。那份 PDF 教程我一般不開著通讀當(dāng)成屬性索引放在手邊遇到string()的取值或者footnote的寫法再翻效率比從頭看高得多。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
操逼逼一区视频| 人妻久久久| 丁香五月激情综合国产| 91人妻爽爽人人做人人澡| 九一亚洲国产免费| 欧美日韩精品久久久久东北老熟妇| 欧美亚洲今日在线| 操逼不卡中文字幕| 免费观看欧美日韩操逼视频| 欧美性天天影院| 综合久久2017| 国产自产一区视频在线| 精品免费一区二区三区在线亚洲人成| 91色堂| 91中文字幕在线观看| 无码78| 日韩无码a片| 操美女高潮抽搐白浆| 人妻精品综合中文字幕在线| 色欧洲97| 激情综合网亚洲| 日本不卡高清视频| 熟妇熟女亚洲天堂网| 天天摸夜夜操视频| 又大又大又大又粗爽高潮观看 | 超碰日本97美女人妻人人玩人人爱| 操亚州| 欧美天天在线| 午夜激情成人在线观看| 亚洲激情综合| 日夜伊人网| 国产高清MV操逼视频| 欧美美女啪啪视频| 日本女人久久久| 午夜偷拍久久熟女| 免费久久9999| 国产精品一二三区18| 国产精品一区二区 尿失禁| 91大神电影天堂| 97在线/亚洲| 成人免费看吃奶视频网站| 精品少妇一区二区三区在线视频| 嫩草 我啊~嗯~在线| 亚洲美女AV无码| 爽 好舒服 无码刺激久久| 超碰 av 女人天堂| 被男人添B超爽视频| 密桃99999| 天操天操夜操夜月月年年操操| 国产精品女生av| 蜜桃视频精品一区二区三区| 蜜臀久久99精品久久久久久-DVD原版全| 久久久精品无码亚免费| 久久久专区| 日韩免费簧片| 久热69九色熟妇97| 婷婷色香伊人| 91丨九色丨国产打屁股| 男人天堂导航| 26uuu欧美| 18+91网站| 美女尤物人人操| 香蕉久久精品| 久久精品国产亚洲妲己影视| 欧美78| 91福利网在线观看| 啊啊啊啊啊啊啊国| 欧美精品精品一区二区| 男人天堂一区二区| 99精品无码| 国产一区二区视频在线播放| 亚洲欧美综合网站| 国人欧美精品一区二区| 九草九九九| 综合五月婷婷亚洲一区| 91日产欧美| 操逼天美3区| 91美女在线视频| 日韩免费三级黄片电影| 久久超碰大香蕉| 思思视频免费看网站| 久久人人爽爽爽人久久久| 操碰97| 麻豆国产av网| 综合激情二| 五十路熟女工口 | 亚洲诱惑| 日韩av一级黄片| 欧美色图自拍| 婷婷91| 凹凸精品熟女在线观看| 精品国产嫩穴视频| 国产亚洲精品美女久久久| 一本大道综合伊人精品热热| 在线观看黄色电话| 一本色道熟妇| 殴美,日韩国产伦精品| 啊啊啊好多水| 天天看人人操屄犊摸阴| 操操操日本的逼| 韩日自拍| 色色99| 明星性猛交ⅹxxx乱大交| 东北黄色电影| 国产亚洲精品A在线观看下载| 天美一二三在线观看Av| 激情无码日韩| 传媒在线观看一区二区三区| 亚洲AV资源| 色五天伊人| 天天碰久久入| 91九色丨国产丨爆乳| 久久欲| 日韩欧美天堂| 96精品在线| 午夜.DJ高清在线观看免费7| 天天影视综合色| 18精品一区| 国产欧美日韩一区二区三区| 精品成人久久久人人亚洲| 人妻少妇精品一区二区三区| 欧美日韩色综合网| 狠狠入| 嗯嗯嗯不要不要免费视频| 欧美αv.com| 大色网久久| 玖玖97综合| 91碰超| 日韩天天综合| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 天天干夜夜一操| 99re视频在线播放青草| 国产视频第2页| 国产热RE99久久6国产精品首| 日韩操啪| 欧美日韩亚洲少妇寂寞影院正在播放| 精品人妻一区二区免费蜜桃| 激情色色| 日本操逼视频导航| 亚洲精品九九九| 亚洲十八禁止| 超碰性爱97| **一级毛片国产| 免费中文综合精品| 久久精品黄色| 久久九九精品一区二区| 色 婷97| 中文自拍欧美影视| 亚洲综合另类小说色区亚洲成av人片在www | 高潮的A片激情扒开一区| 992视频一区| 99蜜桃臀亚洲成人在线观看| 116美女午夜| 狠狠色婷婷777| 在线色导航| 屁股久久久久久久| 999色欧美中文字幕| 大香蕉在线86| 久久国色天香香蕉| 久热伊人| 亚洲欧洲国产综合av| se吧提供国产乱老熟视频胖女人| 国产福利精品98视频| 中出人妻中文字幕91在线| 狠狠搞 亚洲91| 青青草日韩无码| 91精品伊人久久久大香线蕉91| av亚欧| 鸥美中出| 欧美日韩不卡传媒| 91青青在线视频| 96AV久久久| 久操综合在线| 亚洲 日韩 欧美 国产综合体| 正在播放国产精品一区| 精品国产乱码| 久久久久久日韩| 被男人吃奶很爽的毛片| 国产熟妇 码视频户外直播 | 人妻一区二区三区视频| 91美女视频| 日韩精品一二三| 青青草AV色| 任你干在线视频| 大香蕉国产中文自拍| 国产精品久久久视频| 天天日少妇逼AV| 日韩啪啪网| 一级性爱aaaa| 亚洲中文字母在线播放| 久99热| 欧美刺激色黄片免费看| 色一色综合网| 91GD.COM| 99在线观看| www.超碰在线| 亚洲操操操| 精品色色| 丝袜美腿欧美| 亚洲色图a| 久久国产精品,久久国产| 神马久久久久眼| 国产乱婷婷精品二区三区| 夜夜爽77777| 国产色图乱伦| 少妇一级无码精品| 伊人一区二区在线播放| 欧美一区二区一级岛国大片| 在线国产福利网址导航| 国产av美女被艹的乱叫| 五月天成人综合| 男人天堂一区二区| 91丝袜美腿网站| 亚洲第一页欧美| 噜噜噜久久亚洲精品色情| 麻豆天美在线喷水AV| 天天射夜夜| 67914在线兔费成人视频| 亚洲欧美变态| 欧美999| 日韩欧美大片免费高清啪啪| 日韩欧洲操屄视频| 日韩人妻制服丝袜av| 综合操逼| 亚洲超碰在线| 日韩ab网 | 青娱乐国产剧情av一区| 伊人黄色片| 黄色欧美性爱视频| 欧美不卡在线美女| 亚欧美综合网。| 超碰97人人乐| 人人爱人人乐人人操| 欧美亚洲一级在线观看| 五月丁香社区婷婷日韩欧美精品影院 | 国产不卡精品91| 中美日韩毛片| chaopen97久久| 丰满人妻一区二区三区色-百度| 日韩免费中文字幕视频| 夜间福利片1000无码| 色欲久久综合| 麻豆久久久久久久久丝袜 | 欧美日韩淫加| 亚洲少妇免费视频\| 欧美双插| 岛国在线一区二区三区| 色五月婷婷麻豆在| 欧美日韩精品久久| 午夜视频久久久| 极品另类| 国产黄色av大片网站| 天天操夜夜操| 中文字幕综合人妻| 欧美色图20p| 91av一区二区在线观看| 日本网色| 操逼精品视频| 果冻传媒A片麻豆熟妇人妻| A级片日韩欧美国产欧美视频精选观看| 日韩一区二区高清在线观看的| 五月天婷婷综合网| 小骚逼被操的爽不爽| 日韩大香蕉AV影片| 久久成人午夜精品影院 | 九热中文字幕| 日本精品不卡一二三区| 熟女中出视频| 9999久久久| 多毛小伙内射老太婆| 色五月综合| 欧洲与亚洲欧美精品中文字幕| 校园春色 亚洲| 国产黄色小视频网站| 大香蕉九九| 伊人991| 欧美激情综合网| 中文字幕中文字幕一区二区| av在线浏览| 99在线观看视频在线高清| 中文精品一区二去| 熟妇人妻一区二区三区| 大香蕉99re| 高清成年美女黄网站免费大全 | 亚洲色图大香| 久久久9 9 9精品| 一区二区乱码福利| 日日夜夜狠狠| 五月天AV资源| 家庭乱伦性爱av| 欧美一二三区四五区| 色欲久久99国产精品久久久久久| 免费黄色A片| 天堂伊人久久| 女人与公拘交酡2020视频| 丁香五月综合| 色偷偷2020免费视频播放| 国产女人高潮嗷嗷嗷叫小说| 极品粉嫩一区二区| 人妻铁牛TV| 久久久中文| 997色在线| 精品一区二区成人| 天操老女人| 久久午夜鲁丝片| 欧美熟妇乱码在线一区| 亚洲全色网| 五月丁香综合啪啪| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 操国产逼| 欧美色视频在线| 嫩草影院永久在线制服丝袜| 青青草好吊| 欧美天天影院| 操B在线观看| 五月婷婷综合在线| 蜜桃臀一区二区aV| 欧美日韩性爱电影在线| 曰韩香蕉97| 岛国毛片在线观看免费| 五月天我淫我色av| 欧美五区| 啪一啪免费视频| 人妻丝袜美腿中文字幕| 国产乱子伦久久精品综合一区二区三| 使劲用力艹少妇视频一区二区| 超碰人人色| 美国人人操人人操| A级在线视频| 色婷婷一区二区三区久久午夜成人不| 丁香五月久久| 成人精品无码| 人妻无码久久一区二区三区免费| 约操熟妇| 日本一区视频在线观看| 国产h小视频在线观看免费| 色踪合AV| 夜夜操中文字幕| 春色综合免费| 天天摸天天插天天日| 天天干人人看综合| 欧美91变态| 超碰在线974| 黄色av片三级三级三级免费看| 鸥美中出| 中文字幕文字幕无码一区二区三区电影99| 高清国产成人无码| 婷婷五月天激情四射| 亚洲熟女乱综合一区二区三区 | 怡红院亚洲怡春院av| 国产五码丝袜屁眼| 99热免费| 欧美日韩大黄片| 98超碰日本| 性爱av在线免费观看| 亚洲欲色| 日本新免费二区三区| 久久一二三四五六七八九区区| 欧美97日韩| WWW啪啪的com| 九九九九精| 久久午夜色播影院免费高清| 亚欧美综合网。| 啊啊啊 在线观看| 国模不卡| 免费在线视频97| 亚洲综合码| 精品久久久久久中文字幕视频免费| 中文字幕高清精品一区| 99热在线观看| 亚洲国产精品成人无码久久久| 懂色综合久久久| 国产女上位好爽在线| 色婷婷综合久久久久中文一区二区| juliaann精品熟女一区| 少妇内射视频| 永久免费观看的毛片的网站| 日本孕妇一区二区视频操逼免费看| 亚洲女优有码无码高清| 国产精品自拍视频| 日韩黄片影院| 中文字幕日韩人妻视频一区二区三区| 日韩 欧美 另类 人妻| 天天爽天天| 天天综合网久久ww| 婷婷九月国产| 欧美97| 妇女性内射冈站HDWWWCOM| 一区操逼| 久久艹逼视频| 五月天激情小说| 精品一区96| 试看60秒| 亚洲欧美国产va在线播放频| 三级精品三级在线观看| 家庭乱伦网站国产| 久操高青| 亚洲骚逼少妇| 婷婷五月天影院| 狠狠色婷婷| 视频在线观看一二三区| 国产精品粉嫩福利在线| 岛国黄片网站| 天天综合精品| 美国日韩黄片| 亚洲18禁| 亚洲国产精品成人久久蜜臀| 久操不卡视频| 东北老女人的激情视频| 久久华人网| av日韩国产一区二区| 丁香五月婷婷啪啪| 熟女熟妇伦久久影院毛片一区二区 | 99自拍视频在线| 欧美亚洲厕所精品偷拍91| 爽爽歪在线视频| 欧美A√综合网 | 欧美亚洲丝袜美女电影| 91 丝袜在线播放| 亚洲中文字母在线播放| 精品超碰中文在线| 另类老少妇| 黑人精品一区二区在线播放| 3571色综合一区二区二区| 欧美日韩系列| 免费看日产一区二区三区| 青娱乐休闲视频在线观看| 久热影视| 欧美久久婷婷| site:sinbotex.com| 国产一区二区啪啪视频| 男人的天堂日本东京热| 日韩激情无码影院| 色老汉色| 日韩操p| 不卡码视频| 精品一级毛片在线观看| 精品四五区| 噜噜噜噜天天狠狠| 久久久com| 色97干| 日韩pv中文| 色综合久久久久| 狠狠躁天天躁日日躁| 亚洲 欧美 91| 青青草操逼逼视频| 呦女网站| 影音先锋中文字幕日本好一区二区| 丝袜美女诱惑 91 视频| 亚洲一本大道中文字幕无码在线| 国产成人五月天丁香花| 日韩一区二区精彩视频| 日韩丝袜人妻AV| 很很操在线| 97超碰免费人人性爱| 国产黄片在线免费观看| 天天色图| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 欧美亚洲天天| 99夜夜操| 久久精品区| 久久噜噜噜精品国产亚洲综合| 偷拍亚洲情色| 99色色| 强歼乱伦资源网| 八戒午夜福利理论片| 亚洲无线观看久久| 亚洲一区中文精品| 免费无码婬片AAAA片直播色戒| 五月婷婷激情网| 欧美AB在线观看| 视频黄色国产一级| 久久久成人精品| 亚洲AV不卡在线观看| 人人妻天天做天天爽| 99最新日韩偷拍视频| 蜜桃久久久久久久久久久久| 97欧美色综合| 欧美小说区视频区| 国产激情视频在线观看| 伊人久久青青草| 色一射色一射| 亚洲综合校园春色| 精品国产乱码久久久影院| 日韩精品啪啪啪| 丰满人妻aA一区二区三区| 狠狠色色| 亚洲五区熟女| 男人综合网| 免费一级特黄特色大片在线观看看| 中文字幕精品资源在线| 人妻久热在线| 中文字幕一二三av| 久久成人国产精品| 色色99| 骚女高跟AV在线| 中文字幕精品亚洲熟女| 伊人热综合| 成人av免费观看| 最新精品久久蜜桃 | 日本在线不卡一二区| 日韩一性一交一A片俄罗斯| 欧美亚洲第1页| 9久9久9久9久视频网站| 首页中文字幕中文字幕免费| 这里是精品| 啊啊啊好疼| 日韩一级久久毛片| 久久,精品一二三| av天堂加勒比| 情侣开房子拍 日韩无码 女的很漂亮| 日韩淫色网| 艹比视频国产精品| 日本顶级天天操狠狠操夜夜操中文字幕| 日韩免费中文字幕视频| 国产超碰在线一区| 丁香啪啪| 综合色区偷拍| 无码99| 亚洲超碰97| 色综合五月天| 国产熟女无套内射| 97资源超碰| 97色色色| 欧美黄色图片| 欧洲欧美视频一区二区| 舔人妻中文免费视频| 亚洲无线码一区国产欧美国| 天天日天天干天天摸天天操| 欧美美女自慰一区二区三区| 白丝被操91| 欧美熟妇乱码在线一区| 国产精品扒开腿做爽爽爽视频| 午夜福利精品| 国产情色第一第二页在线观看| 97在线观看视频| 日日操免费视频| 久久草草欧美精品| 午夜欧美精品久久久| 国产黄色av大片网站| 一区二区三区蜜桃成人撸久久东京热| 亚洲色图欧美色18直播在线| 婷婷中文网| 中文字幕国产在线天堂| AV色图| 激情看片网站| 久艾草在线精品视频在线观看| 成人夜夜| 亚洲骚男同com| 欧美色图偷拍另类| 亚洲骚男同com| 久久神马影院| 小草精彩毛片| 日本淫色网| 欧美午夜精品久久久久久3D| 国产一区二区a毛片| 亚州综合AⅤ| 色一射色一射| 久久有码视频| 国产高清无码一区三区二区| 99久久这里只有精品| 极品一区二区三区免费| 超碰97中文| 免费看片黄| 九九九只有精品| 蜜桃久久综合视频| 91超级碰| 欧美日日人人天天| 综合免费无码中文| 2017大香蕉国产精品久久| 九九热精品在线| 欧美极品女人的天堂| 蜜桃久久一区二区三区| 大香蕉伊人色偷偷在线| 蜜桃臀av在线观看| 这里都是精品在线观看| 欧美91久久久久| 青青免费在线视频一区| 综合网~91综合网| 免费A片三p视频| 无码99| 澳门色噜噜色噜噜色噜噜色噜噜色噜噜| 日韩av在线免费网站| 亚洲情色图片区| 97五月天| www超碰| 97亚洲综合电影| 欧美性区| 99re在线视频国产| 国产免费小视频| 欧美第二页| 亚洲图片婷婷五月天| 丝袜剧情| 亚洲 图片 综合91| ai欧美亚洲小说| 亚洲97网站| 久久激情婷婷| 日本免费人成视频播放120秒| 91精品无码人妻系列| h在线看免费版在线看| 久九九九九九九热| 人妻熟女一区二区| 亚洲欧美第一页| 日韩欧美中文日韩欧美色| 91超级碰碰| 国产精品一区人妻精品阁在线| 日本布卡一区二三区| 综合久久99| 超碰成人人人爽人人爽| 亚洲色9| 约操熟妇| 大香蕉狠狠爱| 91亚州欧美| 无码日韩人妻av一| 暴力av在线| 日韩人妻操B| 国产精品网址| 国产97av| 第四色亚洲色图| 欧美激情欧美精品| 亚洲砖码砖专无区2023| 野狼福利社区| 99热 按摩 日韩| 精品国产精品一区二区| 欧美高清18A片| 男人天堂免费| 蜜色网色哟哟| 欧美日本一区二区a人| 国产 日韩,欧美 自拍| 亚洲爽图| av中文在线| 青青操视频在线| 久久透逼视频| 国产精品熟女AV中文字幕在线播放| 91 国产丝袜在线播放-百度| 亚洲图片偷拍视频区| 人妻色偷色噜| 97国产中文| 今日头条成人一区二区三区四虎精品| 九九精品热| 欧美色视频在线| 亚洲熟妇丝袜在线观看| 日韩一卡二卡三卡| 91强奸乱轮| 美日韩一二三区| 97超碰人人模人人拍人人| 色婷婷综合网站| 欧美亚洲成人在线一区二区三区| 欧美人与动性人交a| 99热这里| 97爱爱官网| 日韩国产在线观看av| 日韩三级网址| 亚洲天堂男人网| 婷婷精品| 黑人性暴力毛片| 国产中文精品一区二区在线观看| 人妻精品4K4K4K4K4| 欧美性性性| 超碰免费97| 亚洲黄色a级片| 亚州综合AⅤ| 国产无码久久高清| 日本免费不卡二区| 2019天天干| 狠狠中文字幕| 九九热九九| 五月天婷婷小说| 性爱动态120秒| 97超碰人人模人人拍人人| 亚洲色图加勒比| 78m成人视线| 亚洲一区二区三区播放在线| 人人超碰在线观看黄| 欧美日韩插逼视频| 亚洲 图片 欧美 色图| 男人的天堂 在线一区| 久久是精品| 天天干人人干天天日97| 天天肏夜夜肏| 在线啊啊啊啊| 免费的很黄很污的全部视频| 日本女人操逼| 九九热av| 亚洲av综合伊人久久| 国产激情在线| 99国产精品人妻人伦| 日韩免费av片高清无码| 亚洲爱爱视频一区二区| 东京热一区二区中文字幕| 91综合天天| 亚洲精品国产拍免费91在线| 欧美综合色| 色吊丝 日日骚 清纯唯美| 亚洲精品电影| 天天综合网网欲色| 极品五月天噜噜| 女优视频第10页| 偷拍 亚洲| 久偷拍| 色香伊人| 亚洲中文sv| 和协无码影院| 丰满岳乱妇一区二区三区| 老熟妇一区二区三区…| 人看人人摸人人操| 五月婷婷激情网| 男人下部插入女人下部 | 日韩内| 东京热男人天堂| 最新无码国产| 日韩在线性爱免费视频| 免费黄色A片| 91在线欧色| 国产精品视频播放| 亚洲 欧美 日本 国内 首页| 欧美少妇色图| 玖玖视频在线资源一区二区三区| 一本大道不卡一二三区| 国产一区二区三区高清视频| 亚洲 日本 不卡| 十八禁电影伊人网| 亚洲限制级| 97国伦国色| 精品夜夜澡人妻无码| 超碰人人在线| 中文字幕一区二区三区视频播放| 国产成人手机视频激情| 日本性交操一区二区不卡系列| 国产精品网址| 91欧美情色| 亚洲熟女一区二区| 性影在线视频| 99re视频这里只有精品| 久久久草草精品| 亚洲熟久久| ai欧美亚洲小说| 日本精品性生活久久久| 91天美传媒精品| 青青青青草av在线观看| 亚洲丝袜色图| 曰韩av中文字幕专区| 激情六月婷婷| 亚洲性猛| 少妇厨房愉情理伦片bd在线观看| 91粉嫩萝控精品福利网站_精品影音先锋国 | 精品成人动漫一区二区| 色色色色色色色色色色色色色色综合| 性交一区二区在线播放| 久久久97| 亚洲婷婷综合网| 曰韩操B| 久久九九视频九九视频| 夜夜操狠狠操| 男人的天堂日韩| 思思视频免费看网站| 色色色色网站| 欧美大片一区二区三区| 色欧美亚洲| 白丝被操91| 久久久久免费少妇| 亚洲色图片区| 国产精品干干干| 爱干爱射网啊啊啊| 亚洲 日本 不卡| 精品人妻中文字幕4399| 九九亚洲视频| 国产精品直播在线观看直播| 精品人妻一区二区三区日产乱码| 国产精品久久久啊| 90后后入| 人人操人人爽人人操人人| 操逼操操操91| 亚洲成人在线资源| 日韩免费大片一级播放| 午夜欧美神马久久久久| 亚洲人妻久久久| 不卡九肏| 久久久久久久久久久久久久久性生活视频| 欧美日韩免费专区在线| 嫩草伊人久久精品| 久热网| 午夜精品久久99蜜桃的功能章节| 人人看人人插| 人人操人人狠狠操| 中文字幕一区 二区三四五 区日 日骚| 黄色小说亚洲| 超碰社区97| 国产农村妇女精品| 精品人妻1区| 五月天婷婷色| 国产偷仑| 亚洲不雅视频1区二区| 国模私拍一区二区三区神乳| 最新中文字幕在线亚洲| ′ !γ}丶。。久久精品欧美一区二区三区 | 97激情97激情| 国产91专区| 日韩福利电影网| 中国国国产一级特黄毛片| 亚洲情色91| 走光一区92下载| 少妇人妻精品| 久久亚洲天天做| 中文字幕乱偷人妻久久艾草网| 99re视频在线播放青草| 收看日本人日bb| 920日本午夜免费| 欧美成人综合| 中日韩免费看男女操逼大全| 亚洲黄网在哪免费看| 欧美亚男人的天堂| 日韩内| 国产日韩区| 久操高青| 欧美综合色,www| 最好看的中文字幕在线2018| 区日韩亚洲乱码av电影| 青青草AV色| 操逼视频国产无套| 天天综合精品| 大色网久久| 手机在线播放国产福利| 久草资源在线视频官方总站日韩丝袜美腿 | 欧美亚洲中文字幕| 精品国产乱码久久久久久久久久毛片| 久久中文字幕在线观看| 婷婷五月天激情四射| 亚洲 小说 欧美 激情 另类| 高清无码一区二区三区| 日本高清一区二区在线| 99色色网| 偷拍欧美综合| 熟妇高潮一区二区免费视频| 一区二区三区在线资源| 91精品人妻一区二区三区蜜桃臀| 日韩精品操少妇| 日本2020一区二区| 丁香九月婷婷| 神马久久久久久伦理片| 婷婷中文网| 色噜噜人妻av 中文字幕| 欧美午夜视频| 97久久超碰亚洲| 丰满人妻被猛烈进入中| 搡老女人老妇女AAA一VU麻豆| 99re国产中文字幕| 精品91摸| 黑人粗大V S日韩女优视频| 国产91 丝袜在线播放| 国产无码久久高清| 亚洲免费人妻在| 夜夜一区二区| 九九九九九九九九九九精品视频| 亚洲午夜精品久久久中文影院| 富女玩鸭子一级毛片| 极品尤物自安慰| 日韩人妻资源网| 欧美在线视频观看一二三四区高清| 精品少妇99| 在线A日本| 午夜福利合集| 操死我干死我| aaaa黄片| 国产精品亚洲高清在线| 97在线日韩中文字幕| 精品国产99999| 国产精品视频麻豆入口| AV中文在线| 超碰午夜| 天天噜| 97人人操人人摸人人爱| 三级三级三级a级全黄三| 岛国天天午夜影院传媒网| 男人的天堂日本东京热| 日韩中字av一区| 亚洲……91| 好吊妞转入那个网| 女人高潮抽搐喷水视频网站| 国产欧美一级在线观看| 亚洲欧洲av影音| 热99这里有精品综合久久 | 国产粉嫩出水在线播放| 亚洲 日本 国产 综合| 另类亚洲一区二区三区| 高清不卡一二三区视频......| 色香欲综合| 99热导航| 免费精品99| 午夜超爽| 黄色交缠性感爆操91国产精品免费一区二区三区 | 亚洲精品影视老司机| 欧美成人精品一区二区男人蜜臀| 日韩亚洲中文字幕在线| 中文字幕三四区| 97爱综合| 日韩 国产 欧美自拍| 清纯唯美亚洲综合| 99re免费| 干我久操| 日本黄大片在线观看视频| 亚洲爽图| 国产女人视频三四五区| 青娱乐啪啪视频| 国产精品人妻无码久久久互動交流| 国产成人五月天丁香花| 岛国片在线观看视频亚洲| 久久久久久久性爱| 91蜜桃传媒精品久久久一区二区| 黑人精品成人一区二区三区| 精品国产Av无码久久久亚洲| 久久香蕉国产线看观看亚洲女人 | 天天操福利视频综合网站| av午夜玫瑰| 麻豆天美国美国产| h无码动漫在线观看| 高清国产无码av| 高精欧美色| 干美女人妻| 中文久久96| AV高清一区| 国产视频三区四区| 美女自卫慰黄网站免费| 欧美黑人精品一区二区| 国产av波波国产精品| 久草成人影片| 青草视频人妻在线观看| 国产成自自拍在线观看| 色五月婷婷麻豆在| 九九热九九| 五月色网| 无码聚合| 亚洲色图欧美视频| 最新三级网址| 精品国产一区二区三区四区在线看| 九九无码| 91欧美大片| 欧美懂色综合网| 小电影欧美91| 久久爱97| 亚洲资源一区| 超碰97人人乐| 久久三区四区| 超碰97最新人妻| 日韩美女高潮喷水视频| 国产久久一区二区| 91处女视频在线观看| 亚州 综合 色图| 99re这里| 嗯嗯啊啊好大好爽| 亚洲文学偷乱拍啪啪啪啪| 老汉网| 国产精品国产| 男人天堂无码| 欧美91网| 天天澡天天爽日日AV| 日韩国产精品人妻无码久久久| 另类图片天天影视| V A在线| 亚洲巨爆乳一区二区三区四季网| 国产亚洲精品一区二区三区| 91色人妻| 欧美极品性爱天天射| 操逼逼福利视频| 激情五月天婷婷| 亚洲中文字幕噜噜噜久久久| 日韩av三四区| 9久久美女首页| 东京热AV男人的天堂| 日本伦乱九九九综合| 亚洲天天自拍| 夜夜青青无码影院| 粉嫩在线一区二区懂色| 2017天天插| 国产天美传媒精品| 深爱激情五月天| 国产传媒午夜理伦精品| 欧美激情 一区| 91网站18在线| 第一高清av中文字幕| 在线αⅴ| 高精欧美色| 日本97久久久精品| 青草av在线| 肉动漫无遮挡h在线观看| 91精产一区二区三区| 国产乱码久久| 福利视频一区二区微拍| 大学生美女口爆| 2020中文字幕在线| 99精品人人爽| 大香蕉伊人75| 国产精品自拍xxxx| 99热国产| 青青欧洲黑| 天美传媒AV在线播放| 色在线综合| 91 刺激在线| 激情小说亚洲视频| 色色九区| 欧洲一级性爱视频在线观看| 天天操天天插| 蜜臀久久精品久久久久视频| 日韩国产精品人妻无码久久久| 免费伦费视频在线观看| 少妇毛片久久| 午夜男人的天堂| 国产亚洲中文不卡二区| 国产高清成人传媒影视| 密臀在线免费观看| 欧美极品少妇| 欧美性爱第一区| 欧美老熟另类| 亚洲色婷婷综合久久一区二区三区| 九九精品99| 国产精品久久久久久夜夜夜| 超碰综合97在线| 精品人妻一区二区视频| 欧美亚洲20p| 91精品国产91熟女| 男男H黄动漫啪啪无遮挡网站| 国产白丝在线| 亚洲成a人v欧美综合天堂下载| 国产精品久久天天干| 天天射,天天操,天天爽-国内精品一区二区三区-成人AV | 久久这里只精品99re66图| 四虎永久在线精品免费网址| 国产馆| 99re久久| 久湿久久| 青娱乐国产精品| 久久婷婷欧美| 一级性爱视频免费在线| 大香蕉在线视频15| 青青草精玖玖69精品| 日本成人在线不卡一区二区三区| 大香蕉在线免| 欧美日韩操逼嗦吊| 亚洲日韩精品一区二区| 超碰人妻久久人妻中文97| 亚洲无码AV九九九| 欧美碰碰综合色| 精品乱子一区二区三区99| 国产强上视频在线观看| 亚洲日本大香蕉1| 黄色成品网站| 免费一级毛片在线视频观看| 国产熟女一区二区| 青青操少妇| 亚洲欧美中文日韩视频中国语| 欧美96精品在线| 2019午夜福利视频| 另类综合另类| 免费一级a毛片久久久久久鸭绿欲| 九九九九九九精品| 91美女视频在线| 久精品无码av一区二免费国产在线观看 | 操www| 亚洲综合在线91| 中文字幕一区二区三区人妻少妇在线| 操B在线观看| 精品人妻中文字幕高清| 日日骚精品视频| 精精夜夜| 91碰碰碰| 久久久久亚洲av综合波多野制衣| 另类小说欧美激情校园春色| 天天插夜夜爽| 国产精品交换一区二区| 亚洲美女自拍偷拍视频| 欧美日韩大香蕉| 久久精品超碰| 青青国产在线拍揄自揄拍| 国模一区二区三区| 无码人妻丰满热妇又大又粗| 超碰狠狠操| 国产精品高潮久久久无码| 亚洲精品蜜桃久久久久久久| 亚洲色色探花| 欧洲精品一级二级精品综合视频综合| 嗯嗯啊啊操死我| 成人性爱av.com| 久久久四区| 国产1727欧美| A V少妇特黄三级| 在线毛片片免费观看| 裸体美女久久久| 亚洲日本韩国在线| 99re在线视频| 好涩综合| 综合伊人网12色| 日韩国产成人自拍视频| 鸥美中出| 日韩中文9| 磁力99AV| 久久久免费的精品| www.色五月| 熟妇一区,二区,三区。| 久久6热精品99视频| 国产传媒一区日韩| 18一区二区三区| 久超碰这里只有精品| 色综和网| 欧美最婬乱婬爆婬性视频| 丁香婷婷久久 | 女人的久久久| 色色色网站| 黄片视频,下载| 国产精品白领在线观看| 97超碰中文| 亚洲情色婷婷五月天| 日本操大逼| 日韩精品人妻| 九九九国产精品| 亚洲系列欧美| 综合网亚洲1| 久久久久久久久久久精| 精品女同一区| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 正宗无毛一线天嫩逼| 国产成人网| 五月天色图| 免费看日产一区二区三区| 韩国黄色片精品久久久| 超碰人人色| 丁香五月影院| 天天草夜夜草高潮片| 超碰国产精品无码| 精品国产国产AV| 国产成人在线观看网址| 日韩欧美性爱电影在线观看| 日韩精品人妻| 无码精品久久| 男人的天堂久久久| 91精品人妻一区二区三区蜜桃| 色香欲影| 午夜福利一区二区影院| av最新免费中文字幕| av最新免费中文字幕| 人人么人人操| 三级激情网站| 岛国大片在线观看网站入口| 另类一区| 黄在线| 粉嫩绯色AV一区二区在线| 国产精品久久久鸭无码的功能| 超碰人妻天天干| 秋霞视频一区二区| 精品色色| 一区二区三区蜜桃成人撸久久东京热| 天综合网| 超碰碰激情97+久| 国产免费一区| 亚洲视频精选| 中文人妻av高清一区| 八人操人人摸人人看| 欧美成人四级在线播放| 日本欧美一区二区三区免费| 亚洲欧洲中文日韩女优乱码| 殴美在线AⅤ|