免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

ARTICLE DETAIL

資訊詳情

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

Windows 下編譯 Poppler PDF 庫:MSYS2 與 CMake/Meson 實戰(zhàn)指南

Windows 下編譯 Poppler PDF 庫:MSYS2 與 CMake/Meson 實戰(zhàn)指南 最近在整理一套本地文檔處理工具鏈的時候需要在 Windows 10 客戶端里完成 PDF 的文本抽取、頁面渲染成圖片、元數(shù)據(jù)讀取這幾件事。調(diào)研一圈后發(fā)現(xiàn)能免費(fèi)商用的 PDF 庫本就不多Poppler 作為老牌開源渲染庫幾乎沒有替代品但官方偏偏不維護(hù) Windows 的預(yù)編譯二進(jìn)制于是只能自己動手編。網(wǎng)上關(guān)于 Poppler 編譯的教程大半是 Linux 環(huán)境的Windows 的要么年代久遠(yuǎn)要么語焉不詳我前后折騰了兩三天才把整套流程穩(wěn)定跑通。這篇文章把完整方案寫出來包括環(huán)境搭建、依賴選型、CMake 和 Meson 兩套構(gòu)建系統(tǒng)的配置、高頻報錯排查、以及編譯產(chǎn)物最后的集成驗證。適合自己維護(hù) PDF 工具的開發(fā)者、需要做 PDF 轉(zhuǎn)圖或文本抽取的工程師、以及想把 Poppler 接進(jìn) Qt 項目的同學(xué)。我不光貼命令每一步為什么這么做也會講清楚這樣你遇到我當(dāng)年踩過的坑時能更快繞過去。1. 編譯前先搞清楚你拿 Poppler 要做什么1.1 Poppler 到底是什么先亮底牌Poppler 是從老牌 PDF 查看器的基礎(chǔ)上派生出來的開源渲染庫很多你叫得出名字的開源文檔工具底層其實就是它。它提供的能力相當(dāng)完整PDF 頁面光柵化渲染、文本內(nèi)容抽取、文檔屬性和書簽讀取、表單填寫、注釋解析、多份 PDF 合并拆分等等。在 Linux 生態(tài)里大部分發(fā)行版都內(nèi)置了預(yù)編譯的 poppler-utils 工具集也就是 pdftotext、pdfinfo、pdftoppm、pdftocairo 這一整套命令行工具常年是服務(wù)器端文檔處理管線的標(biāo)配。Windows 上的情況就完全不一樣了。官方只發(fā)布源碼基本不維護(hù) Windows 的預(yù)編譯包。你在網(wǎng)上能找到的一些所謂Windows 版 Poppler要么是第三方愛好者編譯的舊版本要么打包方式來路不明版本功能和依賴狀態(tài)都不可控。對于要進(jìn)生產(chǎn)環(huán)境的工具鏈來說這種不確定性往往就是最大的風(fēng)險點(diǎn)。所以自己編譯不只是為了有得用更是為了把依賴版本、功能開關(guān)、鏈接方式這些變量全部握在自己手里。后面接進(jìn)自己項目的時候出任何問題都能順著源碼和配置查到底。1.2 為什么非要自己編譯不直接用現(xiàn)成方案有人可能會問Windows 上處理 PDF 不是有一堆現(xiàn)成庫嗎為什么偏偏要編譯 Poppler這里有幾個非常現(xiàn)實的原因。首先很多商業(yè) PDF 庫是按授權(quán)點(diǎn)收費(fèi)的哪怕只是內(nèi)部工具也得走采購流程成本和合規(guī)都很麻煩。開源項目里單純解析 PDF 內(nèi)容的庫不算少但要做到頁面渲染成高清圖片、帶抗鋸齒、支持復(fù)雜版式這種偏 GUI 的場景Poppler 幾乎是性價比最高的選擇。它內(nèi)置了輕量級的 Splash 渲染后端也可以接 Cairo 這種工業(yè)級 2D 繪圖庫靈活度比大多數(shù)同類項目高一個量級。其次自己編譯意味著可以按需定制。我實際做項目時需要裁掉用不到的功能模塊來縮小體積也需要把 JPEG2000 支持、色彩管理、數(shù)字簽名這類可選項明確打開。這些在別人編譯好的二進(jìn)制里根本做不到。做二次開發(fā)的同學(xué)還有個隱藏需求帶調(diào)試符號的版本。線上程序崩潰時能定位到庫內(nèi)部的行號和只能看到一堆地址是完全兩種調(diào)試體驗。還有個很多人忽略的點(diǎn)預(yù)編譯二進(jìn)制的動態(tài)鏈接依賴通常是一筆糊涂賬。Windows 下跑 Linux 風(fēng)格的開源程序DLL 版本對不上是家常便飯。自己從源碼編譯至少能清楚它鏈了哪些庫、每個庫什么版本排障的時候能順著依賴圖一步步查。說白了自己編譯的隱性收益是可控性這在把庫往正式系統(tǒng)里集成時比什么都重要。1.3 兩條主流編譯路線怎么選在 Windows 10 上編譯 Poppler業(yè)內(nèi)實踐下來主要有兩條路線一條是 MSYS2 加 MinGW-w64 工具鏈另一條是 Visual Studio 加 vcpkg 包管理。這兩條路線我都實際跑過最終長期用的是 MSYS2 方案下面把取舍理由和對比情況攤開說。對比項MSYS2 MinGW-w64Visual Studio vcpkg依賴獲取pacman 一鍵安裝依賴天然兼容vcpkg 可裝但版本組合要自己調(diào)編譯速度較快依賴現(xiàn)成無需重復(fù)構(gòu)建首次要全量編依賴時間翻幾倍與 MSVC 工程集成C ABI 可直接用C 接口需適配原生無縫調(diào)試體驗最好可復(fù)現(xiàn)性高腳本化容易中依賴庫版本易變總體工作量低中高M(jìn)SYS2 的核心優(yōu)勢是把一整套 POSIX 生態(tài)平移到了 Windows 上。Poppler 的大量依賴——fontconfig、glib、cairo 這些——骨子里是為 Linux 設(shè)計的在 MSYS2 里它們的 pkg-config 文件現(xiàn)成CMake 或 Meson 能自動找到所有依賴幾乎不需要針對 Windows 做特殊適配。vcpkg 路線不是說走不通而是你要為每個依賴分別編譯不同配置工程量明顯更大而且個別庫在 vcpkg 上的版本滯后會導(dǎo)致新版 Poppler 編譯直接失敗。如果你后續(xù)必須用 Visual Studio 調(diào)試整個 Windows 程序那選 vcpkg 更合理如果只是想把 Poppler 跑起來并集成進(jìn)自己項目MSYS2 是省時間的正解。2. 環(huán)境準(zhǔn)備MSYS2 和依賴包一次配齊2.1 安裝 MSYS2 和基礎(chǔ)工具鏈MSYS2 的安裝本身沒什么門檻從項目官網(wǎng)下載安裝包一路下一步即可。裝完之后你會在開始菜單里看到好幾個入口 shell包括 MSYS2 MSYS、MSYS2 MinGW64、MSYS2 MinGW32。這里藏著一個新手最容易踩的坑編譯 Poppler 以及它的絕大多數(shù)依賴必須用 MinGW64 那個 shell因為我們要生成的是原生 64 位 Windows 程序。簡單解釋一下這個環(huán)境的角色分工MSYS 環(huán)境像一層翻譯層提供 Unix 風(fēng)格的命令和路徑但它產(chǎn)出的程序帶有 MSYS 運(yùn)行時依賴脫離 shell 后在純凈 Windows 上很難跑起來。而我們真正要的是 MinGW-w64 工具鏈生成的原生程序所以一切操作都以 MinGW64 shell 為準(zhǔn)。很多人第一次在這里犯迷糊以為在哪個 shell 里裝 gcc 都一樣結(jié)果編出來的庫要么是 32 位要么帶了額外的運(yùn)行時依賴后患無窮。進(jìn)了 MinGW64 shell 之后先做一輪系統(tǒng)更新和基礎(chǔ)工具安裝pacman -Syu pacman -S --needed base-devel gitbase-devel 這個包組最容易被人跳過但它里面含有 make、autoconf、automake、pkg-config 這些輔助工具。Poppler 雖然主要靠 CMake 或 Meson 構(gòu)建但它的某些輔助腳本和依賴構(gòu)建過程仍會調(diào)用這些 POSIX 工具缺了它們會在莫名其妙的環(huán)節(jié)報錯到時候排查起來很頭疼。2.2 依賴包怎么選每個是干什么的Poppler 的構(gòu)建依賴可以分成三類核心渲染類、字體處理類、可選增強(qiáng)類。用 pacman 一鍵安裝是最省事的方式我在實際編譯時用到了下面這組包# 編譯器和構(gòu)建系統(tǒng) pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-cmake mingw-w64-x86_64-ninja # 基礎(chǔ)依賴 pacman -S mingw-w64-x86_64-pkgconf pacman -S mingw-w64-x86_64-freetype mingw-w64-x86_64-fontconfig pacman -S mingw-w64-x86_64-libpng mingw-w64-x86_64-libjpeg-turbo pacman -S mingw-w64-x86_64-lcms2 mingw-w64-x86_64-libtiff pacman -S mingw-w64-x86_64-openjpeg2 # GLib 和 Cairo按需開啟 pacman -S mingw-w64-x86_64-glib2 mingw-w64-x86_64-cairo每個包的角色我簡單交代一下方便你按實際場景裁剪。freetype 和 fontconfig 是字體處理的核心PDF 里幾乎所有字體渲染都繞不開 freetypefontconfig 負(fù)責(zé)字體發(fā)現(xiàn)與匹配它決定了渲染時能不能正確找到系統(tǒng)字體。libpng、libjpeg-turbo、libtiff 是圖像編解碼庫PDF 內(nèi)嵌的位圖資源全部走它們。lcms2 做色彩管理如果你要處理帶 ICC 色彩配置文件的 PDF這個必須開否則色彩會偏。openjpeg2 負(fù)責(zé) JPEG2000 壓縮圖片的解碼醫(yī)療影像 PDF、高清掃描件 PDF 大量使用這種編碼缺了它頁面會顯示成空白塊或者亂碼區(qū)。GLib 和 Cairo 這兩個要單獨(dú)說。GLib 是給 Poppler 的 GLib 風(fēng)格 C API 用的很多 C 語言項目通過 poppler-glib 接口接入不裝的話得在配置階段關(guān)掉相應(yīng)選項。Cairo 是高級渲染后端pdftocairo 工具能把 PDF 頁面轉(zhuǎn)成 PNG、SVG、PS 等格式依賴的就是它。如果你只需要簡單文本抽取這兩個確實可不開但只要涉及把 PDF 頁面變成一張圖Cairo 和 GLib 就是標(biāo)配。裝完后順手驗證一下依賴是否齊全pkg-config --modversion freetype2 fontconfig cairo glib-2.0 libopenjp2如果每個都輸出了版本號說明依賴準(zhǔn)備完畢。缺誰補(bǔ)誰這一步值得花五分鐘確認(rèn)后面構(gòu)建系統(tǒng)配置階段能省大量排查時間。2.3 環(huán)境驗證下手前先確認(rèn)三件事正式編譯之前我習(xí)慣做三個小檢查能避免大把無效勞動。第一確認(rèn)當(dāng)前 shell 確實是對應(yīng)架構(gòu)的 MinGW64 環(huán)境。執(zhí)行echo $MINGW_PREFIX如果輸出是/mingw64就對了。如果輸出是/usr或者直接為空說明你開的是 MSYS shell得換窗口重來不然構(gòu)建系統(tǒng)大概率會找到一套奇怪的編譯器組合。第二確認(rèn) gcc 的架構(gòu)目標(biāo)。執(zhí)行g(shù)cc -dumpmachine輸出應(yīng)該帶x86_64-w64-mingw32字樣。有些機(jī)器之前裝過別的 GCCPATH 里殘留的編譯器會把構(gòu)建系統(tǒng)帶偏編譯到一半才爆出詭異的鏈接錯誤這種問題最隱蔽。提前三十秒確認(rèn)能省一小時。第三確認(rèn)cmake和ninja都來自 MSYS2。如果電腦上裝過 Visual Studio系統(tǒng) PATH 里可能有另一套 CMake。在 shell 里執(zhí)行which cmake路徑應(yīng)該指向 MSYS2 的安裝目錄指向別處的話優(yōu)先把/mingw64/bin調(diào)到 PATH 最前面。提示MSYS2 環(huán)境里路徑有兩種寫法Windows 風(fēng)格是C:/xxxMSYS 風(fēng)格是/c/xxx兩者都能用。但構(gòu)建系統(tǒng)傳給編譯器的路徑往往被轉(zhuǎn)成 Windows 風(fēng)格看到奇怪的路徑拼接報錯時先想想是不是路徑風(fēng)格混用導(dǎo)致的。3. 正式編譯從構(gòu)建系統(tǒng)配置到產(chǎn)物落地3.1 獲取源碼穩(wěn)定版優(yōu)先別追最新主干Poppler 的源碼托管在項目官方 Git 倉庫地址在項目主頁上有直接克隆下來就行g(shù)it clone poppler 官方倉庫地址 cd poppler這里我要多說一句不要默認(rèn)檢出最新的主干分支除非你想幫忙踩新 bug。Poppler 的版本迭代節(jié)奏很快主干上經(jīng)常有剛合入的實驗性代碼對第三方依賴的兼容性還沒完全打磨。生產(chǎn)環(huán)境建議在正式發(fā)布標(biāo)簽里挑一個穩(wěn)定版本先執(zhí)行g(shù)it tag看看有哪些發(fā)布版本然后檢出到你需要的那個標(biāo)簽例如git checkout poppler-24.08.0版本選擇還有一個關(guān)鍵影響構(gòu)建系統(tǒng)本身。Poppler 早期以 CMake 為主從某個大版本開始逐步加入 Meson 支持較新的版本已經(jīng)停掉 CMake 維護(hù)只保留 Meson。也就是說老版本可以走 CMake 路線新版本直接上 Meson 更省心。下面兩條路線我都會講你按手里源碼的版本對號入座。3.2 老版本路線CMake 配置參數(shù)逐項說明如果你的 Poppler 版本還帶 CMake 支持配置命令大致如下mkdir -p build cd build cmake .. \ -G Ninja \ -DCMAKE_BUILD_TYPERelease \ -DCMAKE_INSTALL_PREFIX/mingw64 \ -DBUILD_SHARED_LIBSON \ -DENABLE_UTILSON \ -DENABLE_GLIBON \ -DENABLE_CAIROON \ -DENABLE_CPPON \ -DENABLE_LIBRARYON \ -DENABLE_OPENJPEGON \ -DENABLE_LCMSON這些參數(shù)里的核心是幾個 ENABLE 開關(guān)它們直接決定編譯出來的庫帶多少功能。ENABLE_UTILS 控制命令行工具集包括 pdftotext、pdfinfo、pdftoppm 等。如果你編譯 Poppler 就是為了拿到這些工具必須打開如果只當(dāng)開發(fā)庫用可以關(guān)掉給安裝目錄瘦身。ENABLE_GLIB 和 ENABLE_CPP 分別控制 GLib 風(fēng)格 C API 和 C API。絕大多數(shù)第三方程序用的是 C API也就是poppler/cpp/下面那套接口也有人用 GLib C API。建議兩個都開它們只花一點(diǎn)編譯時間但后續(xù)接不同項目的兼容面就寬多了。ENABLE_CAIRO 和 ENABLE_OPENJPEG 屬于功能增強(qiáng)項Cairo 后端開啟后才有 pdftocairo 工具也才能高質(zhì)量導(dǎo)出 PDF 頁面為 PNG 圖像OpenJPEG 負(fù)責(zé) JPEG2000 解壓前面說過掃描類 PDF 全靠它。LCMS 是色彩管理做出版、設(shè)計類工具的務(wù)必開普通辦公文檔場景關(guān)掉可以省兩個依賴。配置完成后CMake 會輸出一段報告列出啟用的組件花十秒鐘掃一眼確認(rèn)想要的都在里面。如果某個選項被標(biāo)成 disabled八成是依賴沒裝全回頭補(bǔ)裝對應(yīng)包重新配置即可。然后執(zhí)行構(gòu)建cmake --build . -j 6-j后面是并行任務(wù)數(shù)按 CPU 核數(shù)合理設(shè)置別盲目拉滿。編譯 Poppler 這種規(guī)模的庫內(nèi)存緊張時并行任務(wù)過多會把編譯進(jìn)程活活擠爆。我自己的機(jī)器用-j 6比較舒服整個過程幾分鐘到十幾分鐘。構(gòu)建完成后安裝cmake --install .默認(rèn)裝到之前指定的 CMAKE_INSTALL_PREFIX 目錄。如果指定的是/mingw64可執(zhí)行文件會進(jìn)到 MSYS2 安裝目錄下的bin子目錄直接在 shell 里就能調(diào)用。3.3 新版本路線Meson 配置要點(diǎn)新版 Poppler 用 Meson 配置更簡潔命令行一眼能看懂cd poppler meson setup builddir \ -Dbuildtyperelease \ -Denable-utilstrue \ -Denable-glibtrue \ -Denable-cairotrue \ -Denable-cpptrue \ -Denable-libcurlfalseMeson 的參數(shù)命名風(fēng)格和 CMake 不一樣但邏輯一一對應(yīng)enable-utils 對應(yīng) ENABLE_UTILSenable-glib 對應(yīng) ENABLE_GLIBenable-cairo 對應(yīng) ENABLE_CAIRO。libcurl 是用于訪問遠(yuǎn)程 PDF 的選項絕大多數(shù)本地處理場景用不到關(guān)掉能少拉兩個依賴。Meson 有個非常實用的特性配置完成后會輸出一份詳細(xì)的功能檢測清單哪個庫找到了、哪個庫版本太老、哪個組件被強(qiáng)制關(guān)閉全部列得清清楚楚。如果某個你想用的功能旁邊標(biāo)著 NO順著它的依賴名補(bǔ)裝即可排查成本比 CMake 低不少。構(gòu)建和安裝走兩條命令meson compile -C builddir meson install -C builddirMeson 后端默認(rèn)是 Ninja速度上不用操心。整套流程跑完后去安裝目錄看一眼正常情況下會有bin和lib兩個目錄命令行工具和動態(tài)庫各就各位。提示不管哪條構(gòu)建路線編譯過程中如果報錯第一反應(yīng)別急著去搜索引擎復(fù)制報錯原文先看報錯發(fā)生在哪個階段。絕大多數(shù)問題就兩類頭文件找不到、鏈接符號找不到。前者基本是依賴沒裝或 pkg-config 路徑不對后者基本是庫版本不匹配。帶著這兩個預(yù)判去看報錯定位速度快得多。4. 常見問題與排查技巧實錄4.1 高頻編譯錯誤速查表這一節(jié)我從自己反復(fù)折騰的經(jīng)歷里攢了不少報錯現(xiàn)場把出現(xiàn)頻率最高的幾個整理成表你照著排查基本能覆蓋八成情況。報錯現(xiàn)象根本原因解決方案fatal error: ft2build.h: No such file or directoryfreetype 頭文件不在 include 路徑安裝 freetype 開發(fā)包確認(rèn) pkg-config 能查到 freetype2fontconfig/fontconfig.h: No such filefontconfig 開發(fā)包缺失安裝 fontconfig重跑配置undefined reference to png_set_*一類鏈接錯誤libpng 未正確鏈接或版本過舊安裝 libpng檢查鏈接庫順序Could NOT find CairoCairo 開發(fā)包缺失或 pkg-config 路徑錯誤安裝 cairo把/mingw64/lib/pkgconfig加進(jìn) PKG_CONFIG_PATHCannot find -lzzlib 未被正確鏈接安裝 zlib必要時在配置里顯式指定庫路徑構(gòu)建過程中 OOM 卡死并行任務(wù)過多內(nèi)存耗盡調(diào)低-j參數(shù)或關(guān)掉部分功能再編構(gòu)建系統(tǒng)抓到錯誤的編譯器PATH 混入了其他 GCC 或 MSVC 的 CMake檢查 PATH 順序優(yōu)先保留/mingw64/bin這里我想專門展開一下undefined reference這類鏈接錯誤。Windows 下用 MinGW 鏈接時庫的鏈接順序是敏感的被依賴的庫要放在依賴它的庫后面。Poppler 依賴數(shù)量多構(gòu)建系統(tǒng)一般能自動處理順序但老版本或者手動改過配置時就會冒出找不到符號的問題。遇到時優(yōu)先查 zlib 和 libpng 這兩個底層庫它們被 Poppler 間接引用非常容易因為版本不匹配導(dǎo)致符號解析失敗。另一個高頻但容易被忽略的問題是換行符。Windows 上下載解壓的源碼包有些文件是 CRLF 換行在 MSYS2 環(huán)境里編譯會觸發(fā)一系列詭異的預(yù)處理錯誤。如果你是從 Windows 圖形界面解壓的源碼建議先隨機(jī)挑一個源文件檢查編碼是 CRLF 就批量轉(zhuǎn)成 LF 再編譯。4.2 運(yùn)行期問題DLL 和字體配置編譯成功只是前半程把編譯好的 exe 拿到干凈的 Windows 10 上運(yùn)行你會遇到第二波問題典型的就是兩類缺 DLL 和字體找不到。缺 DLL 很好理解。MSYS2 編譯出的程序會動態(tài)鏈接一堆運(yùn)行庫包括 libgcc、libstdc 等。在 MSYS2 的 shell 里運(yùn)行沒問題因為 PATH 里就有這些 DLL脫離 shell 直接雙擊運(yùn)行就會提示找不到動態(tài)鏈接庫。解決方案是執(zhí)行l(wèi)dd 程序名查看它依賴哪些 DLL然后從 MSYS2 安裝目錄的bin文件夾里把對應(yīng)文件拷貝到程序所在目錄。想省事的話也可以把所有 bin DLL 一股腦拷過去就是目錄會有點(diǎn)亂。字體找不到是更隱蔽的問題。Poppler 渲染 PDF 時需要知道系統(tǒng)裝了哪些字體它在 Windows 上默認(rèn)通過 fontconfig 做字體發(fā)現(xiàn)。fontconfig 依賴一個配置文件 fonts.conf 來定義字體搜索路徑在 MSYS2 里沒問題但把 exe 拷到別的機(jī)器后fontconfig 找不到配置輕則漏字重則所有文字變成方塊。解決方法是把 MSYS2 安裝目錄下的etc/fonts文件夾連同程序一起拷走然后設(shè)置環(huán)境變量export FONTCONFIG_PATHE:/myapp/fonts export FONTCONFIG_FILEE:/myapp/fonts/fonts.conf同時要在 fonts.conf 里把C:/Windows/Fonts加進(jìn)dir列表否則字體匹配根本覆蓋不到 Windows 系統(tǒng)字體中文 PDF 的渲染質(zhì)量會非常糟糕。注意如果處理的 PDF 里有中文強(qiáng)烈建議把 Poppler 配套的數(shù)據(jù)包 poppler-data 一并準(zhǔn)備好。它提供 PDF 內(nèi)部編碼到 Unicode 的映射表缺了它很多中文 PDF 抽出來的文本是亂碼。MSYS2 里可以安裝對應(yīng)的 poppler-data 包或者把數(shù)據(jù)目錄通過環(huán)境變量指到正確位置。4.3 集成到 Qt 或 C 項目時的幾個坑把編譯好的 Poppler 接進(jìn)自己的項目常見的是兩種方式直接調(diào)用 C API或者用 QProcess 調(diào)用命令行工具。兩種方式各有各的坑。先說 C API 方式。首先得在工程里正確指定頭文件目錄和庫目錄。假設(shè)庫裝在E:/popplerinclude 路徑是E:/poppler/include/poppler庫文件是poppler-cpp。CMake 工程里可以這樣寫find_path(POPPLER_INCLUDE_DIR poppler/cpp/poppler-document.h PATHS E:/poppler/include) find_library(POPPLER_CPP_LIBRARY NAMES poppler-cpp PATHS E:/poppler/lib)這里有個 MinGW 特有的細(xì)節(jié)動態(tài)庫的命名通常是一對文件libpoppler-cpp.dll.a是鏈接時用的導(dǎo)入庫libpoppler-cpp.dll是運(yùn)行時加載的實際 DLL。構(gòu)建系統(tǒng)找?guī)煺业氖乔罢叩罱K部署要把后者放到 exe 旁邊少了運(yùn)行時照樣起不來。用 QProcess 調(diào)命令行工具的方式更省事坑主要在參數(shù)傳遞和工作目錄。Windows 路徑帶盤符和反斜杠路徑里有空格時QProcess 的 setArguments 方法會自動處理引號但千萬別手寫拼參數(shù)字符串——引號轉(zhuǎn)義在 Windows 上非常容易出錯這是老程序員踩過無數(shù)次的坑。另外pdftoppm 這類工具默認(rèn)把輸出寫到當(dāng)前工作目錄如果程序啟動目錄不是預(yù)期目錄輸出就會跑到奇怪的地方。穩(wěn)妥做法是每次調(diào)用前用 setWorkingDirectory 明確指定輸出目錄。還要特別注意一點(diǎn)在圖形界面程序里調(diào)用這些命令行工具時別在 UI 線程里同步等待。一個幾百頁的大 PDF 轉(zhuǎn)圖片可能要幾十秒界面直接卡死是用戶完全無法接受的。封裝成異步任務(wù)或者丟到線程池里體驗會好很多。我用下來最順手的方式是 QtConcurrent 跑轉(zhuǎn)換邏輯配合信號槽把結(jié)果回調(diào)到 UI 線程刷新預(yù)覽。5. 成果驗證和功能擴(kuò)展5.1 命令行工具的完整驗收流程編譯安裝完成后別急著收工我建議做一輪完整的功能驗收幾分鐘的事能幫你發(fā)現(xiàn)很多配置階段沒暴露的問題。先準(zhǔn)備一個測試 PDF最好同時包含文本、圖片、多頁以及中文內(nèi)容。然后依次執(zhí)行pdfinfo test.pdf pdftotext test.pdf output.txt pdftoppm -png -r 150 test.pdf page pdftocairo -png -r 150 test.pdf page_cairopdfinfo 驗證元數(shù)據(jù)讀取確認(rèn)頁數(shù)、文檔版本、標(biāo)題這些信息正常pdftotext 驗證文本抽取打開 output.txt 檢查中文有沒有亂碼、換行是不是合理pdftoppm 和 pdftocairo 都做頁面轉(zhuǎn)圖測試前者走輕量后端后者走 Cairo 后端兩個輸出對比能直觀看出渲染效果的差異。驗收時有幾個重點(diǎn)觀察項中文是否亂碼亂碼基本指向 poppler-data 沒配好圖片區(qū)域是否正常解碼空白塊說明 openjpeg 缺失或編碼特殊轉(zhuǎn)出的 PNG 夠不夠清晰-r參數(shù)控制輸出分辨率150 足夠屏幕展示印刷需求可以上到 300但文件體積和耗時也會成倍增加。5.2 開發(fā)者接入一段簡單的 C 示例庫編譯完、命令行工具驗收過接下來就是真正寫代碼接入。如果你是 C 開發(fā)者最直接的用法是 Poppler 的 C API。下面這段代碼讀取 PDF 第一頁的全部文本#include poppler/cpp/poppler-document.h #include poppler/cpp/poppler-page.h #include iostream int main() { auto doc poppler::document::load(E:/test.pdf); if (!doc || doc-is_locked()) { std::cerr 打開 PDF 失敗或文檔加密 std::endl; return 1; } std::cout 頁數(shù): doc-pages() std::endl; auto page doc-create_page(0); if (page) { std::cout page-text().to_utf8().c_str() std::endl; } return 0; }這份簡短的示例里藏著好幾個 Windows 特有的細(xì)節(jié)。poppler::document::load的路徑參數(shù)按 UTF-8 解析Windows 下路徑含中文時記得先做編碼轉(zhuǎn)換否則文件打不開。create_page的參數(shù)是 0 基索引第一頁傳 0傳 1 就是第二頁這個接口設(shè)計坑過不少從 1 數(shù)頁的人。page-text()返回 Unicode 字符串在 Windows 控制臺直接輸出會是一堆問號要么把控制臺代碼頁切到 UTF-8要么把結(jié)果寫入文件再查看。編譯鏈接命令在 MinGW 下是g -stdc17 test.cpp -I/mingw64/include/poppler -lpoppler-cpp -o test.exe如果你項目里用了 GLib 風(fēng)格的 C API鏈接庫換成-lpoppler-glib頭文件路徑變成poppler/glib/poppler.h基礎(chǔ)知識體系是同一套。5.3 還能榨出哪些功能編譯 Poppler 的樂趣在于當(dāng)初看起來麻煩的功能開關(guān)其實都是現(xiàn)成模塊按需打開之后能獲得不少超乎看 PDF本身的能力。最實用的是用 pdftocairo 做批量轉(zhuǎn)圖把幾十個 PDF 統(tǒng)一轉(zhuǎn)成 PNG 或 SVG 縮略圖這在文檔管理系統(tǒng)里幾乎是剛需。另一個容易被忽略的能力是 PDF 頁面的抽取與合并pdfseparate 和 pdfunite 兩個小工具能完成基本操作不用額外引第三方庫。做全文檢索系統(tǒng)的人一定要研究 pdftotext 的-layout參數(shù)它盡量保留原文版式輸出對段落結(jié)構(gòu)敏感的場景非常有用需要原始文本順序時用-raw參數(shù)更適合做索引清洗。安全相關(guān)場景也值得挖掘。打開 NSS 支持后Poppler 能讀取 PDF 的數(shù)字簽名信息電子合同、票據(jù)驗證類應(yīng)用里常用到。雖然它不負(fù)責(zé)完整證書鏈校驗但判斷一份 PDF 帶沒帶簽名、簽名是否有效足夠應(yīng)付大多數(shù)業(yè)務(wù)需求。渲染性能方面也提一句Splash 后端輕快適合預(yù)覽場景Cairo 后端質(zhì)量高適合導(dǎo)出印刷級圖片。兩條后端我都留著了實際調(diào)用時按場景切換。最后說說靜態(tài)編譯。如果要分發(fā)給沒有 MSYS2 環(huán)境的同事使用靜態(tài)鏈接最省心。配置時把 BUILD_SHARED_LIBS 改成 OFF鏈接時加-static產(chǎn)出的 exe 就不依賴一堆 DLL。代價是可執(zhí)行文件體積從幾 MB 漲到幾十 MB某些依賴回調(diào)插件的功能在靜態(tài)模式下不可用。我的習(xí)慣是給工具類程序做靜態(tài)編譯圖省事給庫文件做動態(tài)編譯方便后續(xù)升級。編譯 Poppler 這事我第一次完整跑通花了兩三天最耗時間的其實不是執(zhí)行構(gòu)建命令的那幾分鐘而是反復(fù)在依賴版本、pkg-config 路徑、還有 Windows 特有的環(huán)境變量問題上打轉(zhuǎn)。后來我把整套流程固化成固定步驟從裝環(huán)境到驗收一個小時能完成再編新版或者換機(jī)器都是照方抓藥。如果你在某個報錯上卡住了拿上面的速查表對一下能解決八成的場景剩下兩成大概率是版本差異導(dǎo)致的解決辦法也不復(fù)雜升級或者降級對應(yīng)的依賴包把構(gòu)建緩存目錄清掉重新配置一次。我個人還有個習(xí)慣是隨手把用到的 pacman 包列表和構(gòu)建參數(shù)記進(jìn)項目倉庫里的文檔哪怕半年后再看照著就能把環(huán)境完整復(fù)現(xiàn)出來。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
丁香五月久久综合| 色噜噜狠狠色综合日日| 开心婷婷五月天综合| 午夜无码熟熟妇丰满人妻 | 亚洲无码yw| 99在线精品视频免费| 丁香婷婷五月天成人| 婷婷久久五月丁香| av在线免费网站 | 一本婷婷丁香久久| 五月丁香激情综合网| 婷婷 亚洲图片 丁香| 五月天怕怕| www.激情| 久久久激情| 人人看人人要| 人人摸人人射| 久热这里有精品视频| 色玖玖玖| 五月天天丁香婷婷| 99这里都是精品| 狠狠色噜噜狠狠狠888| 操操操www.com| 狠狠色大香蕉| 无码yw| 丁香五月婷婷社区| 婷婷天天五月天| 八戒青柠影视剧在线观看| 婷婷亚洲天堂| 婷婷五月天小说| 一区二区乱码视频| 五月色网| 很很操96| 中文字幕在线免费观看视频| 久久伊人大香蕉| 九九色区| 欧美一级色| 婷婷激情在线| 激情综合网五月婷婷| 超碰在线9| 婷婷综合网性| 操碰97| 久99久精品视频| 野外99热| 日韩av在线电影| www.久久久久久| 99热超碰天堂网| 五月天伊人久久| 婷婷激情97| 在线五月婷| 欧美日韩国产一二区| 欧美日韩二区在线| 久久久婷婷色五月资源网| 婷婷狠狠香蕉综合| 久久久久久久97| 天天综合网91| 狠狠色丁婷婷日日,伊人激情综合网| 久热只有这里有精品| 怡红院 久久| 丁香色婷婷| 9l视频自拍9l九色成人| 婷婷五月丁香高清无码| 天天天天天久久久久久| 色婷婷激情| 熟女网站久久| 99无码视频| 综合aV在线| 九久久婷婷| 九九色网专区| 99热免费精品| 天天拍夜夜爽日日| 99色视频| 五月婷婷激情网| 天天干天天干天天干| 噼里啪啦完整版中文在线观看| 少妇出轨做爰高潮A片| 成人国产欧美大片一区| 亚洲xx网| 婷婷一本和五月丁香| 五月激情网络| 外国碰视频网站97| 大香伊人久色| 日韩成人综合网| 热久久77777| 天插天啪天啪天啪| 成人网站在线观看视频| 综合五月激情| 国产噜一噜天天噜| 久久婷婷五月天蜜桃| 五月丁香花视频| 99超级碰免费视频| 9 大屁股在线视频精品| Av狠狠色丁香婷| 天插天啪天啪天啪| 激情五月六月婷婷| 色婷婷无吗| 九色视频91疯狂| 欧洲日韩一区二区三区| 亚洲综合视频网| 深爱五月天| 9 1大香蕉| 91久久久久久久久| 一级性爱视频| 国产XXXX搡XXXXX搡麻豆| 涩 五月 婷婷 狠狠| 99精品在线播放| 五月丁香婷婷啪啪综合网| 狠狠干天天日| 夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂亚洲亚洲亚洲亚洲亚洲亚洲亚洲亚洲色 | 婷婷视频网| 99热8在线| 香蕉操亚洲| 欧美精品久久久久久视频观看| 丁香色综合| 九九热99热| www.99.色| 热九九在线| 洗浴中心操B视频| 色五月激情综合网| 亚洲九九婷婷| 婷婷情色激情| 色五月婷婷成人| 99热综合网| 另类视频丁香五月| 黄网在线免费| 成年AAAA色情| 另类小说五月天| 99热99| 亚洲99激情| 五月天操逼网| 1024成人在线观看| 26uuu最新地址| 精品亚洲国产成AV人片传媒| 日日干日日色| 激情五月天网站| 怡红院成人AV| 深爱激情六月天| 极品人妻VIDEOSSS人妻| 久久er九九| 成人亚洲精品| 原琪琪色影院| 亚洲在线操| 国洲夜色亚热在线久久| 亚洲va在线∨a天堂va欧美va| 国精产品一区一区三区免费视频| 五月婷婷在线视频免费观看| 大香蕉综合网| 九九蜜臀精品| 丁香五月久久| 天天草天天爱| 久久婷婷五月天| 五月丁香婷婷啪啪| 天天操婷婷| 96精品久久久久久久久| 乱码操操| www久久五月com| 超碰99在线观看| 99男人的天堂| 超碰chaompinm| 久大香蕉| 五月天激情亚洲| 五月婷婷深深爱| 97丁香五月| 伊人大香久久| 99热天堂| av中文在线| 久久五月天婷婷| 91狠狠色色丁香婷婷综合久久| 丁香六月婷| 激情婷婷丁香色五月| 久久久精品色色色| 成人永久免费视频在线观看| 久久五月婷| 亚洲av综合网| 大地9中文在线观看免费高清| ay2区| 激情综合五| 操操操操操操婷婷五月天| 综合久久9| 大香蕉伊人久久| 色五月综合在线| 欧美欧盟性爱网| 亚洲色另类| 热热久久精品视频| 五月婷婷久久网| 夜夜撸天天操| -91九色大屁股| 99精品网| 天天天天天久久久久久| 丁香五月先锋| 五月婷色| 婷婷开心激情| 六月丁香视频网站| 99精彩视频在线观看| 丁香五月五月婷婷| 综合五月草| 欧美韩国日本| 五月婷婷综合丁香视频| 成人午夜天| 色综合久久久久久久久五月| 人妻视频在线| 99国产精品久久久久久久久久久| 丁香五月婷中字幕| 五月天激情黄色小说在线观看| 伊人激情| 五月丁香色综合| 成人午夜无码视频| 久久99激情五月天| 亚洲操b| 色插综合网| 婷婷免费视频| 天天干天天爽| 五月天激情啪啪| 精品五月视频婷婷在线观看| 91九九热| 色播丁香| 97碰碰视频在线观看| 婷婷五月丁香图片人人操| 天天做夜夜爽| 五月激情婷婷播播网| 性爱激情小说AV五月丁香花| 色婷婷丁香五月| 色情五月停停丁香| 久久视频这里都是精品| 欧洲S级在线观看| 国产精品美女久久久久AV超清| 免费观看欧美成人AA片爱我多深| 99免费成人网| 婷婷六月视频| 91丨九色丨老熟女激情| 国产亚洲精品久久久久久牛牛| 97 A I色色| 亚洲小视频免费观看| 无码人妻一区二区一牛影视| 五月天激情网图片| 成人 在线 日韩| 九九久久五月天综合伊人| 久久91久久91色欲精品| 日韩AC在线免费观看| www.91.com处女在线直播| 综合久久五月| caop视频| 青青青在线视频国产| 五月婷婷六月情| 婷婷丁香五月视频| 亚洲视频丁香网va| 色一情一乱一乱一区91Av| 26uuu精品国产| 五月在线婷色| 丁香五月天婷婷在线视频| 七七色综合| 超碰人人色| 六月天婷婷| 丁香色播五月天| 9精品在线| 97人人操com| 国产精品18久久久| 丁香激情五月| 九九热最新| 久久婷婷五月天| 五月丁香青草综合啪啪| 狠狠色狠狠鲁| 人妻五月天激情开心网| 激情五月天在线观看色婷婷| 五月丁香久人妻中文| 狠狠综合色网| 大香蕉九九操| 1024成人在线观看| 99WWW免费视频| 久综合4| 婷婷久热| 亚洲激情综合| 精品人妻一区二区| 激情综合五月婷婷| 操操啪| 婷婷伊人綜合中文字幕| 婷婷五月天色| 天天综合色| 激情AV| 91久久精品无码一区二区三区| 思思精品热在线| 亚洲综合丁香婷婷六月天| 久久久WWW| 9久国产| 日本情色一区二区| 久久sp免费视频| 玖玖爱伊人网| 91五月花丁香| 亭亭五月基地在线| 4438激情网| 婷婷六月综合基地| www99在线观看视频| 综合超碰熟| 青青色com久久| 婷婷在线日韩综合| 国产毛片精品一区二区色欲黄A片| 狠狠狠狠狠狠| 99国产精品久久久久久久久久久| 成人无码髙潮喷水A片| 99热免费精品| 精品久久99码| 这里有精品| 开心激情站| 国产做爰视频免费播放| 野战J办公桌椅H| 无码激情AAAAA片-区区| 丁香婷婷婷| 99超级超级超级碰| 91精品又长又大又粗又爽又猛| 中文字幕无码成人电影| 亚洲一区国产传媒| 久热2025无码| 五月丁香婷在线| 中国激情网| 婷婷五月天欧美| 亚洲婷婷免费| 狠狠搞狠狠操| 三级片AAA久久久AAA久久久AAA | 成人午夜天| 丁香花社区av| 影音先锋天天日| 免费AV在线| 黄色AV日韩| 色五月丁香六月资源站| 五月草影视| 色停停五月,在线观看| 六月色婷婷| 久久综合网桃花| 色蜜婷婷| 色小说五月天| av婷婷丁香| 色五月婷婷狠狠撸| 天天色色天天| 中文无码婷婷| 欧美色色色色色色色色色色| 9 1在线视频| 婷婷 亚洲图片 丁香| 久久久性爱视频| 亚洲成人日韩无码精品| 丁香五月狠狠综合欧美| www.婷婷六月天| 综合五月丁香六月婷婷| 久热这里只有精品视频免费观看| 国产黄色在线观看| 超碰在线人妻| 日本久久高清| 99热综合在线| 五月婷婷丁香啪啪| 人人操操| 日本色图综合| 久久伊人婷婷| 99久久99九九九99九他书对| 激情六月丁香| 久99久视频| 色综合中文色综合网| 亚洲a色| 爱操天堂| 一级二级香港秋霞欧美欧美秋霞| 色婷婷激情Av久久久| 日本狠狠爽| 日日操夜夜爽| 色婷婷婷av | 五月色亚洲| 日韩成人电影在线播放| 嫩草视频在线观看| 婷婷色激情网| 亚洲精品又粗又大又爽A片| 五月婷婷新网站| 天天干天天干天天干天天干天| 99男人的天堂| 婷婷五月在线观看| 亚洲综合网激情五月天| 久久婷婷丁香花综合网| 伊人啪啪网| 操比激情五月| 亚洲成人一区| 天天爽天天日人人爱| 丁香五月激情五月| 久久婷婷色丁香| 亚洲熟妇AV乱码在线观看| 亚洲激情 久久| 五月综合色| se色99| 亚洲妇女熟BBW| 丁香五月色情| 偷拍91九色| 九九精品自拍| 五月丁香六月婷婷综合网| 51精品国自产在线| 少妇人妻人伦A片| 99人人干人人| 久操婷婷| 激情六月一二| 五月婷网| 三日本无码| 欧美成人精品A片免费一区99| 亚洲色综久久五月| 婷婷综合五月| 直接看的av| 国产激情AV| 激情婷婷丁香| 五月丁香中文| 777色婷婷爱五月| 色色综合网www| 爱草人视频| 九九九九综合| 丁香五月亚洲综合| 丁香六月激情| 五月天婷婷激情在线色图| 97婷婷狠狠| 99色视频| 久久婷丁香五月| 五月天成人网婷婷| 99久久久久久| 婷婷丁香六月天激情四射网| 开心激情网五月天| 狠狠狠狠狠| 亚洲国产色婷婷| 色五月,com| 91日视频| 五月天另类图片| 激情五月婷婷| 婷婷综合一二三| 99这里有精品视频| 日本99在线| 天天碰天天插天天操| 久久9热| 九九9久九9国产视频| 五月精品| 婷婷五月天成人网站| 五月婷婷六月丁| 五月丁香毛片| 丁香啪啪中文字幕| 精品一二三区久久AAA片| 久久大香蕉同僚| 丁香婷婷成人在线播放| 十月丁香婷婷| 91九九| 91婷婷在线观看| 91无码色色| 99福利导航| 五月天婷婷丁香社区| 丁香五月婷婷亚洲色图| 六月婷婷深深爱| 国产精品国产| 91婷婷五月丁香碰| 久草五月丁香婷婷综合| 91热在线观看视频| 丁香五月花影院| 五月婷婷丁香| 日本人妻A片成人免费看片| 色玖玖爱| 超碰人人操在线| 5月婷婷6月六月丁香| 秋霞电影理论| 日本片日本片祼观看网站在线看中文版网页在线看 | 网色99| 成人网丁香五月| 婷五月丁香| 中文字幕丰满乱孑伦无码专区| 五月婷激情影院| 大香蕉人人网| 国产在线网址1| 午夜天堂一区人妻| 亚洲日韩一页精品发布| 丁香五月激情网| 丁香六月激情综合| 久青操| 五月激情综合性爱| 亚洲成人无码片| 丁香操逼| 超碰京东热av男人的天堂| 天天综合网~91| 五月丁香综合色婷婷| 在线观看国产高清视频免费网站| 亚洲妇女熟BBW| 欧洲色| AA片在线观看视频在线播放| 九月丁香网婷婷| 伊人香大香蕉视频| 99人人看| 91九色精品女同系列| 9色在线视频| 超碰啪啪网| 开心五月婷婷综合在线精品素人| 欧美色必爱| 琪琪色网址| www.激情五月天.con| 97人妻碰碰碰碰碰久久久久久| 日韩无码AV电影网站| 最新婷婷五月丁香| 亚洲综合99| www超碰| 五月婷婷综合视频| 秋霞少妇AV网站| 激情综合五月丁香六月婷婷| 狠狠色综合五月人人| 日本三级99人妇网站| 啪啪啪丁香五月| 久婷视频| 人妻久久久久久久久妻久久久久久久久| av婷婷丁香 六月| 人妻爽爽爽久久久久久久久| 精久久色| 最新av在线观看| 人人摸人人| 国产偷人爽久久久久久老妇APP| 九九综合九| 国产人人操| 99热爱爱干干日| 草操网| 激情VA视频| 丁香五月电影| 91狼友视频在线观看| 天堂五月婷婷| 丁香六月啪啪| 婷婷五月天成人小说| 久久婷婷成人| 99视频热99| 99爱99操| 国产日日操夜夜操的肉棒视频| 天天橾日日橾夜夜橾17| 影音先锋一区| 久久九九99视频| 婷婷情色五月天| 五月社区丁香| 99热精品在线| 狠狠色噜噜狠狠亚洲A∨| 亭亭五月丁香综合欧美| 婷婷五月天激情免费在线观看| www色婷婷| 91制片厂久久久国产电影| 人妻在线观看视频| 伊人五月天男人的天堂在线| 在线观看免费狠狠色丁香香综合| 免费观看全黄做爰的视频| 五月狠狠| 99视频这里有精品免费观看| 无码少妇高潮喷水A片免费| 男人的天堂97| 六月丁香六月婷婷欧美| 97亚洲视频在线| 九月丁香婷婷综合| 精品人妻伦一二三区久| j五月香在线| 五月婷成人| 涩婷婷五月天在线精品视频| 久久久宗合视频88| 久色成人| 久久伊人大香蕉| 国产老熟妇亲子乱对白| 爱的综合网| 五月丁香成人网| 桃色激情五月天| 婷婷五月激情视频| 久99久视频精品| 丁香六月AV| 天堂色婷婷| 吾爱AV导航| 日本va视频| 超碰AV在线| 久久久久9| 影视av久久久噜噜噜噜噜三级| 香蕉视频性爱BB做爱| 五月天婷婷丁香花| 青草视频在线观看视频| 色五月激情五月丁香五月婷婷啪啪综合| 五月婷婷之综合激情| 懂色av粉嫩av蜜臀av| 这里只有精品在线视频精品| 夜夜爽天天干| 久久久人妻人伦| 天天日天天添| 大香蕉啪啪啪| 金桔一区二区ab地址| 五月丁香激情婷婷| 中文精品在| 伊人色综合久久久| 99色免费| 91久久婷婷| 日本片日本片祼观看网站在线看中文版网页在线看 | 精国产品一区二区三区A片| 久久中文人妻系列| 中国丰满熟女A片免费观| 伊人五月天日日夜夜久久久天天| 超碰免费人人| 亚洲另类婷婷五月综合| 玖玖九九9999在线观看视频精品| 五月婷婷亚洲| 五月丁香久人妻中文| 99热无码首页| 五月天婷婷基地综合网| 人人摸人人搞| 人妻五月天激情开心网| 日本人妻操| 精品99在线观看| 六月婷久久| 精品乱码久久久久| 激情五月天网页| 99久久超级| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 成人av中文字幕| 色五月网址| www.91五月| 久久久久久人妻久久久久久久久久人妻久久久| 天天综合久久| 色99色| 色视五月天婷婷| 中文婷婷狠狠| 五月天啪啪| 亚洲色婷婷99一9|| 狠狠色丁香婷婷五月| AV在线观看网站| 亚洲第一色网站| 天天插天天日| 青青草a在线| 99视频内射三四| 丁香婷婷在线| 亚洲天堂久久| 在线色婷婷| 粉嫩av蜜桃av蜜臀av| 婷婷激情综合无月| 欧美色色色色色色| 日欧一片内射VA在线影院| 五月婷婷亚洲| www.五月婷婷久久.com| 伊人婷婷综合| 99热 日韩| 亚洲色网址| va婷婷| 蜜乳9188| 操逼视频网址| 99re久久| 久久五月天色婷婷| 成人电影丁香六月天| 色五月琪琪| 97色碰碰公开视频| 99国产精品久久久久久久久久久| 六月丁香射婷婷欧美色图片| 国产脫衣舞一区二区三区| 夜夜嗨一区二区三区直播内容 | 99九九精品| 黄色99视频| 五月天婷婷丁香人人操91| 夜夜撸日日操| 爆乳熟妇一区二区三区爆乳| 99视频久久| 十月丁香婷婷| 五月综合久久| 超碰亚洲天堂| 热99免费在线| 91jiuseshunv| 久久色大香蕉| 婷婷综合视频| 五月天色丁香| 久久性爱视频| 婷婷五月丁香色综合| 婷婷五月天成人基地| 五月婷婷丁香啪啪| 欧美噜噜久久久XXX| 久久综合首页| 超级碰碰碰碰视频| 神马欧美精| 六月丁香婷婷爱| 亚洲九N| 欧美叉叉叉BBB网站| 五月天婷婷久久| 亚洲精品电影| 九九五月天| 9l视频自拍9l九色9l成人| 天天天久久人人人合| 婷婷激情五月天亚洲综合| 亚洲性受XXXX五月丁香| 久久久久9| 日韩在线99| 国产精品黑丝| 97超碰色| 亚洲国产网站| 最新日韩久热免费视频看看| 色婷婷性爱| 91精品视频男人的天堂| 激情九九九九| 久久九九九九| 碰97久久| 99ri精品| 五月婷婷与六月丁香图片激情| 五月婷在线观看| 色色吧综合| 色情综合网| 色婷婷综合久色AV五色最新| 久久ER视频com| 亚洲精品五月| dingxiangtingtingliuyue| 超碰免费在线| 天天肏天天爽夜夜爽| 亚洲妇女熟BBW| 激情五月综合| 日本欧美成人片AAAA| 国产人妻777人伦精品HD| 成人做爰黄A片免费看直播室男男 久草热8精品视频在线观看 | 亚洲综合草草| 99热九九这里只有精品| 色婷婷丁香六月| 中文不卡一二三区| 天天天天色天天天天天干| 日韩九九| 婷婷色中文字幕| 无码人妻AV久久久一区二区三区| 久久婷综| 91要啪| 激情五月婷婷网在线观看| 99热精品9| 五月天啪啪啪| www.夜夜操.com| 亚洲无AV在线中文字幕| 色色色色色色色色色色色色色五月天| 成片免费观看大全| 色噜噜狠狠色综合AV兰草影视| 婷婷五月丁香高清无码| 26uuu精品国产| 色婷婷五月综合| 牛牛澡牛牛爽| 久久 婷婷 五月天| 在线综合婷婷| 婷婷五月色色| 色五月激情五月| 97在线/亚洲| 无码中文一区二区三区| 人人色婷婷| 久久久亚洲精品一区二区三区浴池| 日本高清不卡免费一区二区三区| 日本久久综合| 色婷婷激情五月天| 亚洲国产99| 日本偷拍九九九| 青草青草久热这里只有精品| 开心五月深爱五月丁香五月激情五月| 精品人人操| 热久91| 日韩欧美一区二区三区四区| 激情六月天婷婷| 欧美日本免费一道免费视频| 91久久色| 亚洲中文字幕在线观看| 人妻激情在线| 久久国产性爱A V| 99视频只有精品| 国产精品18久久久| 丁香五月久久| 国产密乳av一区二区三区四区| 国外亚洲成AV人片在线观看| www.久久久久| 五月丁香影院 | 超碰在线观看9| 开心五月婷婷伊人| 久久成人性爱| 久久婷五月婷| 偷拍九九五月丁香婷婷| 综合五月激情| 成人做爰A片免费看视频| 超碰免费99| 深爱开心激情| 美女被操一区二区| 久久成人精品视频| 色婷婷五月天| 99热思思在线观看| 日本三级大片| 亚洲激情婷婷| 亚洲愉拍99热成人精品| 热热99爱爱| 天天日,天天射,天天舔| 艳妇野外情欲放荡HD| 五月婷婷六月丁香免费| 亚洲综合色色| 国产婷婷五月天| 五月天桃色深爱网| 伊人久久大香| 欧美色婷婷| 日日操夜夜操中国无码| 开心五月深爱激情| 另类丁香五月天区图| 97人人操人人干| 婷婷亚洲天堂| 99免费综合网| 婷婷五月天视频| 婷婷丁香人妻天久久| 色欲婷婷五月天| 激情性爱网站| 色色色色网| 69久热| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 播五月开心婷婷欧美综合| 五月丁香六月婷婷激情四射| 99这里有精品| 色欲影香| 大香蕉婷婷丁香天堂AV| 婷婷丁香五月综合| 天天插天天射| 欧美成人精品A片免费一区99| 色色五月天丁香| 9久精品视频| 丁香五月亚洲激情婷婷射| 性色五月天| 99热免费网站| 无码视频国内精品久久久| 五月丁香六月情亚洲| 五月天色小说| 婷婷噜噜| 91九色小视频| 色情五月综合婷婷| 99在线观看视频免费| 国外亚洲成AV人片在线观看| 五月色欧美| 婷婷天堂综合网| 亚洲va成人va成人va在线观看| 色色丁香婷婷综合| 91丨九色丨43老版熟女| 天天噪夜夜爽| 精品九九网| 操人91| 婷婷六月中文字幕| 色原狠狠综合| 久久五月天婷婷| 99re久热只有精品6在线直播| 先锋影音av色五月天资源站| 色五月婷婷久久| 怡红院91a√| 色播丁香| 4399在线观看免费高清电视剧| 欧美性爱专区| 婷婷在线免费| 五月成人综合| 五月丁香啪啪啪啪| 九九热青草| 丁香六月综合激情| 六月婷婷视频| 国产欧美日韩综合精品一区二区| www.五月天。com| 人人操人人爰人人一天天碰夜夜拍夜夜爽-中国A级毛片天天看天天谢… | 婷婷六月色| 婷婷5月久久综合网站| 成人电影在线免费试看| 91丁香五月| www.9操| 欧美三级黄色片久久| 色色网站| 5月婷婷激情在线| 激情综合播播| 校花娇喘呻吟校长陈若雪视频| 天天做天天爱天天爽| 丁香香五月激情免费视频| 婷婷五月丁香香蕉| 国产毛多水多女人A片| 色色五月天婷婷丁香| 五月天小说激情| 国产操B视频| 北京熟妇搡BBBB搡BBBB| 久人操| 亚洲激情综合五月婷婷啪啪| 色婷婷狠狠18禁| 一区二区你懂的| 26uuu国产| 91久操| 综合在线色婷婷| 婷婷五月天a| 五月丁香六月婷婷,婷| 91人人操人人看| 97人碰人操| 婷婷涩五月| www·五月天| 久久曰曰| 超碰在线观看9| 99碰碰碰| 91色色五月天| 色色婷婷丁香| 丁香六月综合激情| 久久婷五月综合| 五月丁香色综合| 五月婷婷丁香在线| 色色色.COM| 婷婷六月插屄激情| 99热这里只有精品21| www.91久久| 人妻久久婷婷| 狠狠色网| 91亚洲免费片| 丁香五月 无码| 99热一本| 色婷婷综合在线| 激情久久综合网| 红桃91人妻爽人妻爽| 成人在线观看精品| 日本熟妇乱妇熟色A片蜜桃 | 少妇人妻人伦A片| 91丨九色丨大屁股| 婷婷激情综合| 天天综合网站| 99热亚洲| 熟妇人妻中文字幕无码老熟妇| 五月天婷婷久久| www.五月天| 激情网站综合五月天| 久久视屏这里只有久久| 夜夜夜天天操| 五月激情五月丁香| 婷婷丁香六月五月天| 亚洲va日| 超碰在线人人| 丁香五月自拍| 婷婷深爱五月天在线| 五月婷婷婷自由综合| 蜜臀嫩草| 五月婷婷五月丁香| 成人永久免费视频在线观看| 日本一级特黄大片AAAAA级| 欧美日韩123| 国产avapp 网| 婷婷五月色情天| 五月婷婷人人人操| 91精品丝袜久久久久久| 免费无码毛片一区二区A片| 国产欧美日韩综合精品一区二区| av不卡网站| 欧美操综合| 碰碰女| 玖月婷婷爱丁香| 综合久久丁香婷婷,五月婷婷六月丁香,开心激情综合网,六月丁香在线观看,婷婷丁 | 丁香五月天的网址。| 久久婷婷五月天蜜桃| 91人人操人人| 日本猛少妇色XXXXX猛叫| 五月久久丁香| 久操干| yazhou seshipin| 婷婷五月六月丁香综合| 天天影院色| 婷婷大香蕉| 亚洲午夜成人av电影网| 国产婷婷久久| 亚洲色五月| renrencaoni| 人人草人人视| 丁香综合网| 99热传媒| 国产成人av在线播放| 婷婷五月天激情在线观看 | 五月色欧洲| 婷婷色爱| 亚洲操操| 99精品手机在线视频| 人伦30P| 丁香花五月天| 99色综合| 99噜噜噜在线播放| 青青草原伊人网| 69堂午夜视频最新地址| 五六月丁香激情视频| 国产精品国产| 亚洲欧洲中文日韩久久AV乱码| 亭亭五月基地在线| 在线五月色播| 天天搡日日搡aaaaⅩ| 黄色中文字目| 丁香五月天AV在线| 六月综合在线| 久久色情| 黄色短视频在线观看| 婷婷五月激情的图片| 天天爽天天干| 精品二区| 亚洲色色图片| 久久婷婷五月综合啪| 久久5 9视频免费观看| 五月天色图| 婷婷播5月| 少妇2做爰HD韩国电影| 五月婷婷综合久久| 丁香色综合| 思思99热| 国产成人av在线| 99亚州综合精品成人网| .青娱乐天天操B| 欧美激情丁香五月| 五月婷婷啪啪啪啪| 国产看真人毛片爱做A片| 婷婷五月综激情| 丁香激情综合| 99年操人人爽| 五月丁香激情片| PORNY九色9l自拍视频成人| 99精品久久久久久久久| 丁香五月骚喷水视频| 国产成人+综合亚洲+天堂| 婷婷丁香www视频日本韩国| 久久精品夜色噜噜亚洲a∨| 99热6色| 婷婷婷狠狠| 日本va欧美va精品发布视频| 九九99免费视频| 噜噜狠狠色综合久| 五月情婷婷| 欧美婷婷丁香社区在线播放| 亚洲 日韩色色| 思思热99热| 九九99免费视频| 久久电影4399| 91在线操| 久久五月激情综合| 91大屁股精品| 久久婷丁香五月| 亚洲有码在线视频| 激情五月天婷婷丁香| 91精品91久久久久77777| 天天综合干| 亚洲精品色| 久热这里这里有精品| 亚洲精品又粗又大又爽A片| 人人色人人摸人人看| 天天插天天日| 26UUU一区二区| 九九黄色网| 丁香综合伊人| 成人做爰A片免费看视频| 丁香五月98| www免费在线视频| 丁香六月成人网| 99激情视频| 这里只有精品视频国产| 色色色综合网| 色色色在线播放| 四LLL少妇BBBB槡BBBB| 五月丁香六月花| 久久精品A片777777| 天天色色婷婷| 欧美日韩一区二区三区四区| 丁香六月婷婷综合在线| 狠狠久久婷婷| 五月婷婷天堂| 欧美美女国产日韩一区二区久| 欧洲色色| 色吧五月婷婷| 黄色片精品| 天天狠天天叉| 五月天色婷婷av| 久久久久久久久久久久久久久久一道本| 六月丁香婷婷六月激情综合| 婷婷六月偷拍| 久久最新色| peg 2区三区四区的| 婷婷中文字幕欧美| 开心五月婷婷| 亚洲综合字幕色色| 亚洲狠狠爱婷婷| 俺也去综合| 99久久精品国产色欲| 伊人91| 婷婷中文字幕版| 色射7856五月天激情四射| 久久久精品AV| 色婷婷成人在线| 97成人在线视频| 91久久综合亚洲鲁鲁五月天| 五月婷婷就去色| 久久天堂色| 婷婷免费视频| 99综合激情久久精品久久| 翔田千里 50岁 无码| 丰满少妇猛烈A片免费看观看| 婷婷六月情| 丁香 婷婷 激情 综合 五月| 九八Av| 91婷婷丁香五月| 婷婷五月天久久| 九九热123| 三级黄网站| 五月婷网站| 九九激情网| 色婷婷yy久| 色色亚洲| 日本色狠狠| 狠狠色五月激情| 人妻中文av| 人人草人人舔| 综合色色色| 人妻操操色| 99色在线视频| 综合www色| 双性美人被调教到喷水A片| WWW.99视频| 色之综合网| 亚洲啪啪网| 久久婷婷桃花五月天| 五月天激情综合| aaa久久| 伊人AV五月婷| 另类五月婷婷| 26uuu偷拍亚洲欧洲综合| 中字幕视频在线永久在线观看免费 | 成人做爰黄A片免费看直播室男男| 97人人搞| 亚洲99热| 天天操天爱综合| 性色婷婷| 91视频人人做97| 五月丁香WWW| 日韩操逼小电影| wWwCom夜操wwW| 97色精品视频| 开心激情站| 五月婷婷久久综合| 久久五月综合| 丁香六月亚洲综合| 人人操Av| 9九热视频| 亚韩在线视频| 丁香婷婷五月人体| 久久综合66| 99噜噜噜在线播放| 91欧美| 91九色国产| 亚洲无码成人性爰网| 夜夜操夜夜爽| 国产综合81p| 伊人超碰在线| 五月色情婷婷| 婷婷五月,综合伊人| 超碰成人黄色网| 狠狠干婷婷| 91九色国产熟女| 超碰日日操| 五月丁香综合影院| 青青草轻轻操| 天堂综合久久 | 99九九这里有免费视频| 激情婷婷丁香| 婷婷啪啪| 疯狂做受XXXX高潮A片| 99精品久久久久久久婷婷| 99操视频| 日韩操人| 五月综合色| 日韩无码专区| 久久98| 9精品久久999| 七月婷婷色香综合网| 97干干干丁香| 99热99艹在线观看| 丁香五月天婷婷激情| 五月婷婷六月天| 亚洲V国产V欧美V久久久久久| 亚洲V国产V欧美V久久久久久| 五月婷婷色色| 狠狠干五月| 综合久久十| 婷婷综合影院| 99日本在线| 99九九视频| 色丁香五月天| 色播综合| 96人人操人人操人人| 夜夜夜夜操| 久久人妻伦理| 开心五月婷婷| 欧美三级欧美一级| 色欲色香综合网| 欧美色五月| 8050一级网| 在线看av| 婷婷久久亚洲| 婷婷成人综合| 成人色站,在线视频,看片-SS1AV| 中文字幕欧美久久| 婷婷成人AV| 欧美日韩五月婷婷| 丁香五月香蕉| 天天干肏夜夜| 怡红院视频| 久久网日本| 天天射美女| 激情综合五月婷婷| 综合网色综合| 色九九综合| 国产精品-91JQ就要激情网91JQ6.91JQ27.CASA:16888 | 婷婷五月骚厕所| 色婷婷电影网| 日日日日日| 伊人成综合五月婷婷| 色婷| 丁香五月亚洲天堂| 久青操| 99久久国产宗和精品1上映| 99re久热| WWW五月婷婷| 五月天婷婷色播| 五月婷婷69| 在线不卡视频| 99视频在线观看视频| 国产夫妻操逼内射视频| 99re26视频| 丁香啪啪| 激情丁香五月天图片| 久久婷婷六月| 婷婷丁香六月天| 91操碰| 久久99网| 午夜 外网 精品 在线| 俺去也五月天| 99在线免费视频| 伊人激情综合| 色五月涩涩婷婷蜜桃| 久久九九色| 中文字幕人成乱码在线观看| 超碰男人色| 五月婷婷在线视频免费观看| 日本欧美成人片AAAA| 色色色色色色综合网| 99色综合网| 婷婷狠狠干| 五月天婷婷青青草| 丁香五月天激情网址| www,com,五月色色| 婷婷五月色播天| 婷婷综合| 97色热| 久久天堂女人| 色色影院aaaav| 夜夜操夜夜操| 综合五月激情| 天天爽—爽| 成人在线视频网| 五月婷婷|欧美| AV 3P| 色婷婷丁香五月| 亚洲精品国产成人AV在线| 丁香五月天激情视频| 成人网在线观看视频| 美女婷婷六月色| 久久激情视频| 激情综合色婷婷啪啪六月天| 五月天激情无码| 97人妻超级碰碰碰碰碰| 丁香五月激情六月欧亚激情综合导航| 久久这里只有精品热在99| 五月天天综合网色婷婷| 五月熟妇婷婷久久| 色爱五月天| 六月丁香深深爱综合网| 婷婷爱婷婷| 99国产精品久久久久久久久久久| 五月婷婷色播视频| 开心激情网五月| 午夜微拍福利| 色播五月丁香| 五月伊人91| 丁香五月天欧美| 欧洲色| 婷婷六月丁香激情| 狠狠色丁香| 婷婷五月激情网| 深爱激情丁香| 色波激情五月天| 狠狠色噜噜狠狠狠888| 色五月涩涩婷婷蜜桃| 亚洲日韩乱码一区二区三区四区| 色情五月天小说| 99热超碰在线|