99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

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
返回資訊列表
色色网站| 二级黄色毛片| 五月丁香综合中文| www.minyis.com【JT】国内CDN落地页保证转化QQ2101460746 | 九九九热精品| 色婷婷婷婷五月天| 日撸夜撸日操| 开心五月婷婷在线| 亚洲舔观看| 日韩成人电影在线播放| 97在线日本| 日本不卡一区二区三区| JAPANRCEP老熟妇乱子伦视频 | 婷婷五月色图| 激情久久月| 婷婷D区| 久操综合| 亚洲精品国产成人AV在线| 色婷婷成人做爰A片免费看网站| 婷婷五月色丁香在线看| 色欲香综合网| 99热这里只是精品| 五月天激情AV| 这里只有精品在线视频在线观看| 丁香激情五月少妇| 丁香五月电影| 五月丁香综合影院| 五月婷婷黄色| 99自拍视频在线| 五月婷婷AV| www.minyis.com【JT】国内CDN落地页保证转化QQ2101460746 | 婷婷五月激情丁香| 欧美黄色韩日网| 色婷婷丁香香香蕉视频| 丁香五月婷婷日本| 少妇搡BBBB搡BBB搡毛茸茸 | 性生活视频98791| 激情婷婷综合五月少妇| 99热这里只有精品66| 就去涩涩丁香五月天| oumeisesewang| av 一区三区四区| 久久综合中文字幕| 久久综合中文| 丁香开心深爱| 色婷婷www| 五月天色婷婷网| 国产精品蜜臀99| 久久性爱网站| 五月丁香六月婷婷色日| 国产9色在线/日韩| 日韩人妻无码专区| 色色色宗合网| 婷婷趴趴| 五月香蕉综合| 婷婷丁香色无五月 | 婷婷综合成人| 九九精品免费| 中字幕视频在线永久在线观看免费| 色色色色色色网| 五月丁香六月激情在线| AV在线免费观看不卡| 一起操最新网址| 久久这里只有精品视频15| 91蝌蚪窝视频在线| 丁香五月停停基地| 日日操夜夜爽天天天| www.五月天。com| 日韩六十路91性交电影| 国产欧美va| 激情av在线| 99自拍视频在线观看| 久久人人看| 97人人搞| 99热这里有精品2| 丁香五月婷老师| 午夜成人综合| 丁香五月婷婷图片综合| 久久性刺激| 玖玖国产视频一区| 99热只有这里有精品| 六月色婷婷| 曰曰久久| 青青草五月天| 婷婷夜夜夜夜| 91丨九色丨东北熟女| 久久精品99| 色啪久| 日本黄色精品| 色狠狠六月| 天天干天天干天天干天天干天| 99九九视频精彩在线| 啪啪一区| 婷婷之玖玖| 丁香五月影院| 99∨VTV| 婷婷深爱五月| 婷婷九月亚洲| 久久色五月天激情小说| 国产AV一区二区三区最新精品| 精品九九视频| 97精品综合久久| 久草热8精品视频在线观看| 九九99精品免费播放| 日韩av在线免费观看| 人人舔人人色人人高潮| 九九色热| 天天色图| 婷婷色在线视频| 丰满少妇猛烈A片免费看观看| 婷婷久久伊人| 婷婷五月天成人综合网| 大战熟女丰满人妻AV| 九九综合图片网| 欧美成性色| 玖玖热视频| 99热免费| 久久婷婷成人视频| 97在线精品| 丁香五月激情啪啪啪| 这里只有精品日韩| 超碰AV在线| 激情综合婷婷久久| 五月婷婷综合丁香视频| 操逼五月天| 《》【无码】想被搞到爽AV应募而来的超M素人 西纯子 10musume-011723-01 | 99久精品| 丁香五月婷婷基地| 99草视频在线观看| 99热在线看片| 丁香五月综合激情性爱| 超碰成人在线观看| 久久婷婷色色| 99色精品| 欧美激情五月天婷婷| 六月婷婷色| 久久婷婷一级片| 五月激情精品视频| 专区无日本视频高清8| 五月天久久久| 国产精品18久久久| www.婷婷,com| 东京热五月婷婷| wwW天天干| 在线播放成人网站| 永久99免费视频网站| 五月婷婷三级| 久久九九视频网站| 久久AAAA片一区二区| 久久99视频| 综合色99| 色色永久| 精品一区久热| 亚洲综合另类| 婷香五月网在线| 丁香五月久久| 黄色99网| 99玖玖视频| WWW,五月| 亚洲欧洲另类| 亚洲亚洲人成综合网络| 五月草影视| 丁香五月激情啪啪啪| 91精品综合久久久久久五月丁香| 婷婷网影院| 日本高清综合网五月丁香| 亚洲综合碰| 五月花综合视频| 婷婷六月丁综合| 深爱激情综合网| g00d人体西西| 九月婷婷久久| 丁香婷婷成人网| 99热99在线精品| 超碰com| 九色视频91| 五月天成人综合| 六月丁香综合999| WWW色五月| 欧美色五月天| 天天人人综合| 久久五月天丁香| 欧美婷婷五月天| 婷综合| 思思热在线| 天天爽天天透天天爱| 五月天啪啪网| 丁香五月av| 久久只这里有精品| 丁香六月色婷婷| 色五月首页| 色丁香久久久| 色婷婷视频| 欧美色片中文字幕久久久久| 97狠狠色| 亚州色色色| 大香蕉啪啪啪| 欧美网站视频4399| 丁香色色五月| 成人无码精品1区2区3区免费看| 五月天色网站| 99热 在线观看| 超碰九热| 久久思思热| 色五月婷婷五月| 99色综合网| 亚洲色频| 五月天婷婷青青草| 免费看欧美成人A片无码| 久久99精品久久只有精品| 激情综合4月| 亚洲AV第二区国产精品| 五六月婷婷久久| 成人av在线网站| 五月婷六月丁香| 国产操B视频| 精品无码久久久久久久久| 五月婷在线播放| 亚洲色涩视频| 久久久激情视频| 91大操| 国产乱人偷精品人妻A片| 午夜婷婷久久 | 99综合网| 99精品久久久| 欧美视频五区| 国产97色在线 | 日韩| 婷婷五月天激情小说网站| 婷婷久久久久| 久久99网址| 久久99久久99www| 99精品偷自拍| 五月天激情小说| www.精品99| 五月婷婷香| 丁香五月瑟瑟| 久久有码| 久久综合激情婷婷激情| 丁香六月婷婷综合欧美| 天天做天天爱天天综合网| 大波美女VA网站| 99九九在线| 91丨九色|PRNY熟妇| 日本色啪| 久婷视频| 偷偷操99| 九九久久精品| 99热这里只有精品亚洲| 天天狠狠插| 激情网五夜婷婷| 婷婷的99视频网站| 五月天激情小说婷婷| 五月丁香 啪啪| 婷婷久久性爱| 99色综合网| 久久激情视频| ,99视频久久| 第2色五月婷| 夜夜涩涩涩| 日本女天天爽| 深爱激情av| 在线可以看的av网址| 久久五月婷婷开心网| 丁香五月婷婷动漫视频| 丁香五月综合在线视频| 综合激情在线| 丁香五月大香蕉| 亚洲激情四射| av一区二区电影免费在线观看| 思思干精品| 久久天堂色| av第一二区| 婷婷五月综激情| 婷婷五月天激情四射| 久久久人妻人伦| 国产精品久久99| 久久这里面只有精品视频| 综合激情五月丁香9999久久精| 色情五月天丁香社区| 天天色综合图片| 九九激情网| 97干在线播放| 99热1| 99免费| www,天天干| 五月天婷婷视频30| 欧美五月丁香| 97碰碰视频| 狠狠操狠狠插| 欧美性猛交99久久久99| 久久九九网| 日本啪啪网| av在线免费网站| 日本欧美成人片AAAA| 婷婷成年人免费视频| 5月婷婷五月天| 互月天综合| 色大综合| 日本VA视频| 九九99视频| 亚洲婷婷免费| 五月天丁香综合| 丁香五月自拍| 天天插天天插| 开心久久网婷婷| 天综合日日夜综合7799| www久久久久久久97| 26UUU欧美激情一区二区| 精品人妻在线| WWW色综合| 五月天性色| 色丁香五月婷婷在线| 日本VA视频| 99在线热视频| 99国产精品久久久久久久久久久| 日本久久九| AV免费在线网站| www.无码com| 成人婷婷| 亚洲综合网激情五月天| 色色网站免费| 激情综合网五月天| 91干网站| 成片免费观看视频大全| 丁香五月天激情综合网| 色无码| 99热这里只| 强壮的公次次弄得我高潮A片日本 | 亚洲V国产V欧美V久久久久久| 久草热8精品视频在线观看| 亲子乱AV-区二区三区| 色婷婷色| 狠狠狠狠狠狠狠狠狠狠狠色宗合图片| 天天色天天爱天天爱天天爱y| 九色无码| 思思re最新视频| 色99婷婷五月天| 久热无码| 26uuu最新地址| 亚洲成人一区| 久久艹网| www..com色爱| 亚洲婷婷91丁香| 少妇真实被内射视频三四区| 婷婷成人AV| 天天爽成人综合网站| 亚洲 五月 婷婷 成人| 久久99精品久久久久久三级| 亚洲12p| 色欲久久久久久综合网综合网| 青青草原中文字幕| 色婷婷国产精品综合在线观看| 色婷婷狠狠18禁| HD久久精品视频| 欧美色图45678| 激情五月婷婷色播网| 激情五月天色色网| 日韩有码久久| 中文字幕 久久9999| www.91在线观看| 噼里啪啦在线观看免费完整版视频| 色色丁香五月天社区| 亚洲成色综合网站免费观看| www99精品| 九九热视频精品999| 99操逼| 六月丁AV| 综合久久十三| 无码G高清天| 丁香六月激情| 国产免费一区二区三州老师F1F1……| 午夜电影网VA内射| 免费看欧美成人A片无码| 射区导航| 日本爆乳片手机在线播放| 日日躁夜夜躁狠狠久久AV| 婷婷色五月天在线观看| 色婷婷色五月综合| 五月天久久综合婷婷丁香| 五月天大香蕉| 五月天色色激情综合| 五月丁香色婷婷| 九九婷婷五月天| 99久久99视频只有精品| 狼人久草| 日夜操B| 97五月天| 99色.com| 99热在线播放| 香蕉中文在线| 99乱视频| 四季AV综合网| 九九在线精点品| 97人碰人操| 六月香五月婷| 国产精品人成A片一区二区| 久久99网站| 久久精品五月天| 五月丁香视频色色| 日日夜夜狠狠| 色色色色色五月| ji'qi'luan'ren'lun| 香蕉影院色| 五月丁香少妇网| 丁香色色网| ay2区| 99色亚洲| 色久播播| 嫩BBB搡BBBB榛BBBB| 青青热久久综合| 久色激情| 激情纯色婷婷五月天在线不卡视频| 99热久| 丁香五月婷婷少妇| 色爆五月| 五月开心深爱激情网| 五月刺激丁香月综合| 伊人网色婷婷五月天| 丁香综合日产精品久久| 天天日,天天射,天天舔| 五月丁香偷拍| 五月丁香无码| 婷婷爱在线观看| 中文av网站| 99re这里只有精品国产99| 五月丁香激情综合| 欧洲激情五月天| 免费无码毛片一区二区A片| 五月丁香六月停停| 大香蕉七区| 色七七九九| 99re久久| AV中文网| 天天爱天天操| WWW,激情五月天,COM| 激情av| 思思热再线视频| 3DAV亚洲香蕉久久 一区二区| 久久激情五月婷婷| 丁香婷婷性爱| 狠狠精品干练久久久无码中文字幕 | 五月色婷婷AV| 最新AV在线观看| 97香蕉久久超级碰碰高清版| 99热20| 狠狠色中色| www.五月天婷婷| 91日韩在线| 麻豆AV一区二区三区| 国产成人+亚洲+欧洲| 激情综合色婷婷啪啪六月天| www.99热| 夜夜爽天天爽| 国内婷婷丁香社区在线播放| 热久久婷婷| 大香蕉网站,大香蕉综合| 天天 青草 制服丝袜 在线| 午夜天堂一区人妻| 开心五月婷婷| 日韩成人网站精品久久大全| 午夜福利8055| 欧美 日韩 人妻 高清 中文| www.天天干| 第四色色六月色综合| 久久玖玖99| 在线中文字幕视频| 六月丁香社区| XXXX岛国| 婷婷午夜精品久久久| 97久久人人人干| 婷婷六月色| www.91有码.com| 99色在线观看视频| 青青草婷婷五月天| 五月丁香| www婷婷| 婷婷六月丁香1| 色播播婷婷| 久久久国产精品黄毛片| 91人人爽狠狠狠| 婷婷五月天另类网站| 91精品久久久久久综合五月天| 中文字幕操比影片| 天天爽天天爽| 99久久久| 日日日日日| 天天热夜夜操| 欧美精品久久久久久视频观看| 9九色首页| 婷婷色五月91啪啪| 大香蕉520| 色欧美影院| 99色最新在线视频网站| 五月天婷婷在看| 天天摸天天肏| 婷婷色六月| 国产欧美日韩综合精品一区二区 | 亚洲色图日韩网址| 影音先锋男士资源网一区| 综合网激情| www.天天干| 婷婷五月视频| 激情亚洲婷婷六月| 美妞av| 日本久久婷| 超碰人人99| 欧美日本不卡黄色片| 99热免费| 天堂无码人妻精品AV一区| 五月丁香婷婷综合网| 爱草人视频| 婷婷精品性性性性性性性| 色五月天综合| 激情婷婷内射| 狠狠操天天操| 99热日韩这里只有精品| 色五月开心婷婷| 色综合区| 欧美极品999| 91精品久久久久久| 婷婷色五月激情| 亚洲成人av在线| 日韩欧美老妇性视频91久久久| 超碰熟女农村在线69| 国产精品蜜臀99| 色五月婷婷激情综合网| 人人色婷婷五月天| 99re这里只有精品国产99| 婷婷性爱| 色六月丁香婷婷狠狠干| 激情WWW| 五月激情丁香五月宗合| 天天碰天天插天天操| 人人摸人人射| 激情五月天激情综合网| 五月花在线观看视频| 婷婷五月亚洲一本在线丁香| 婷婷 色 丁香 夜| 天天干 夜夜爽| 舔色婷婷| 超碰免费人妻| 九九成人视频| 99干日日干| 国产精品久久久久久喷浆| 色涩视频久久| 久久精品五月| 热99精品视频五月| 99久久99视频只有精品| 五月社区丁香| 婷婷五月天成人网站| 色婷婷丁香| 无码99| 色婷婷狠| 久操婷婷| 麻豆忘忧草午夜| 婷婷丁香黄色| 九九热中文| 激情五月图| 色色亚卅| 亚洲va成人va成人va在线观看| 激情婷婷丁香| 婷婷伊人綜合中文字幕| 99热 日韩| 91青娱乐青青草| 五月丁香色色| 婷婷五月天激情网| 丁香五月 激情文学| 综合性爱网| www.99在线| 六月丁香射婷婷欧美色图片| 26uuu另类亚洲欧美日本一| 丁香美女五月天婷婷| 色色婷婷丁香| 8050一级网| 影音先锋 一区| 久久这里都是精品免费| 天天日天天日天天搞| 人人摸人人澡人人| 九九热精品视频在线观看| 热久综合| 99视频精品全部免费看| 99思思热只有在这里看| 99精品自拍视频| 日本人妻伦在线中文字幕| 岛囯综合激情网| 六月婷婷激情| 五月丁香婷婷激激激综合网色播| 天堂网啪啪| 婷婷在线视频| 国产精品色婷婷99久久精品| 逼逼AV| 五月丁香婷婷综合| 国产AV一区二区三区最新精品 | 秋霞影音91人妻久久| 久热超碰91| 免费视频WWW在线观看网站| 婷婷激情四射五月天| 思恩热国产视频右线观看| 激情婷婷。| 色噜噜狠狠色综合伊人| 激情第四色| 中文字幕有多少字| 国产99久久久| 欧美色色色色色| 丁香激情五月| 超碰免费成人| 婷婷五月天天天| 精品国产乱码久久久久夜深人妻| 99在线视频精品| 五月天停停成人网| 婷婷色婷婷| 超碰国产AV| 99福利视频| 婷婷丁香十月| 六月丁香综合| 五月天婷婷无码| 中文字幕 中文字幕明步| 综合激情在线视频| 五月天涩涩| 情欲禁地| 人人色婷婷五月天| 色婷婷久久| 色色丁香五月| 这里只有精品网站| 国产午夜精品AV一区二区麻豆| 五月丁香六月激情综合| 26UUU精品一区二区| 狠狠色色色| 另类图片五月天婷婷| 久久婷婷热| 青996青| 五月丁香六月激情欧美综合| 曰本久久女| 婷婷五月激情丁香激情| 99精品在线观看| 精品久久99| 超碰成人在线观看| 婷婷五月综合社区| 色婷婷69| 9精品视频在线观看| 久久久久久久五月| 无码人妻一区二区三区免费九色| 99久久精品免费精品国产_国产精品久久久久久_国产在线|日韩_久久国产精品电影 | 五月色婷婷中文字幕| 婷婷丁香五月色| 99玖玖视频| 九九99一区| 国产精品黑丝| 五月丁香六月婷婷亚洲综合| 99re视频在线精品| 精品久久66| 久久久9久| 婷婷五月天狠狠| 色色六月| 日韩啊啊啊| 午夜丁香 婷婷| 十一月婷婷激情四射| 国产精品视频网| 五月激情综合美女久久| 亚洲色图在线视频| 精品人妻在线| 五月丁香六月香香蕉| 99精品在线| 色色色五月婷婷| 天天操人人干| 欧洲亚洲免费视频9| 免费看欧美成人A片无码| 欧美性丁香色色五月天综合爱爱| 91男同视频| 天天日天天干天天插天天射| 啪啪九九色| 99re6久热只有精品6在线直播| www.com任你艹| 操人久久| 玖玖资源站国产| 亚洲乱码精品久久久久..| 啪啪五月天啪啪| 伊人丁香在线| 色天五月天在线观看视频| 九色七七| 99操碰| 久久丁香五月婷婷| 91人碰| 色色婷婷五月天| 婷婷大美在线| 婷婷五月色花丁香社区| 五月丁香久久综合| 色国产五月| 五月丁香 狠狠爱| 婷婷丁香六月| 99惹在线精品免费观看| 97碰碰九九视频| 9九色首页| 99er这里只有精品| 热日韩欧美| 婷婷五月丁香91| 久久国产性爱A V| 亚洲成人AV一区在线观看| 丁香五婷婷| 五月丁香色色综合| 成人五月天。COM| 人妻AV在线观看| ,99视频久久| 操婷婷久久| 五月婷婷中文字幕| 亚洲色模骚货| 天天爽夜夜爽夜夜爽精品| 大香蕉220| 狠狠色丁香婷婷久久综合| 乱女乱妇熟女熟妇综合网站| 五月深情久久| 激情综合网激情五月天| 天天日天天舔| 婷婷五月天亚洲色| 亚洲AV中文在线| 五月婷婷黄色网址| 婷婷丁香十月| 99精品在线观看视频| 色噜噜狠狠色综合伊人| 亚洲一级AV在线免费播放| 久久婷婷色| 九九热最新| 五月激激网w'w'w| 91色噜噜狠狠狠狠色综合| 乱精品一区字幕二区| 97人凄人人操人人爽| 婷婷娱乐丁香综合网| 99在线精品观看99| 99热全是精品| 色99综合色88| 国产成人网| 激情五月天开心| WWW.桔色成人.COM| 色丁香五月婷婷婷| 色丁香五月| 69久久久| 影音先锋91网站在线观看| 婷婷五月综合激情| 伊人五月综合网| 色五月首页| 电影爱拉战争免费观看| 人人操日| 大香蕉五月| 情色五月天 网站| 777影视理论片大全在线观看| 影音先锋色婷婷| 五月天成人网在线观看| 九九热精品视频九九| 热久久思思热思思| 婷婷五月天成人在线视频| 色9月| 超碰99热在线观看| yw国产AV| 久草婷婷网| 这里只有精品视频在线| 丁香六月在线| 91碰| 91干视频| 欧洲一区二区| 成人视频在线免费播放| 色综合伊人网| 天天日综合| 美女妹子后射视频网站在线观看| 伊人婷婷色激情丁香| 99热精品10| 狠狠色丁香久久久婷| 天天射美女| 99九九综合久久九九| 日本WWW九九九| 免费看片在线观看| 在线综合91| 热久91| 日韩久久日| 丁香影院五月综合| 色婷综合| 亚洲AV免费国产电影| 91色欲综合| 色综合久久88色综合天天| 色噜婷婷| 亚洲黄3级片网站欧美| 99视频在线观看视频| 色婷婷五月成人网| 99狠狠| 玖玖爱资源站| 久综合网| 亚洲性爱干干| 五月丁香婷婷国产精品综合| 丁香五月人妻熟女| cc精品国产性传播| 九九婷婷网五月天| 色婷婷AV在线| 99热综合| 色情婷婷| aV直接看| 丁香五月www| 蜜臀av粉嫩av懂色av| 九色自拍| 天堂婷婷五月在线| 五月丁香狠狠爱婷婷综合| 麻豆123区| 丁香五月婷综合网| 婷婷刺激综合| 五月婷综合| 久久婷婷色| 久久艹 五月天| 97操男人的天堂| www.五月天婷婷| 九九久久99| 亚洲色欲欧美一区二区三区| 天天天天爽爽天干| 香焦网五月天| 91精品久久久久久综合五月天| A片试看120分钟做受视频红杏| 色欲色欲久久宗合网| 超碰五月婷婷五月天| 亚洲啪啪网| 激情六月下句是什么| 婷婷五月综合啪| 丁香五月婷婷视频| 久久丁香五月天| 狠狠噪| 丁香婷婷91在线观看视频| www久久久| 亚洲色vA| 综合色五月| 疯狂做受XXXX高潮A片动画| 丁香婷婷久久综合在线| 午夜色婷婷| 69er小视频| 色色色在线观看| 人人爱操| 免费人人操| 六月丁婷婷| 婷婷五月天视频亚洲| 99re思思热久久| 97操资源婷婷| 99热自拍| 五月婷婷六月开心| 99热激情| 久久人视频| 婷婷的激情五月| 婷婷五月草| 91啪啪视频| 五月天伊人久久久久| 色色综合无码| 丁香五月婷婷网| 涩五月婷婷| 另类视屏| 99热精品6| 亚洲第一第二网站| 婷综合六月| 午夜美女人啪最红院| 久久99综合网| 久久99草五月婷婷| 丁香五月天激情四射网络不好 | 狠狠草狠狠草| 国产精品久久久久久久久久| 超碰不卡在线| 丁香社区婷婷五月| 天天干,夜夜爽| 久久婷婷夜| 9999色色色色| 丁香色五月 97干| 天堂综合久久| 五月停停丁香| 99热在线播放| 六月丁香大香蕉| 色五月影视| 六月成人网| 天天性视频| 波多野结衣AV无码Porn| 日本综合99| A√天堂网在线| 欧美97色| 99在线视频女女视频| 亚洲色vA| 96精品成人无码A片观看金桔 | 碰碰女| 97婷婷五月激情六月丁香伊人| 久久婷婷六月综合资源| 99re8这里只有精品99re8热视频| 怡红院91a√| 婷婷综合五月色播| 99免费在线视频| 五月天婷婷色| 激情久久久久久久久久久| 任我肏视频精品| 色色aⅤ網| 黄桃AV无码免费一区二区三区| 操碰91| 中文字幕,综合,91| 99ri视频在线观看| 99热无码| 美女久久天堂| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 久噜久噜| 五月色情| yazhouzonghesese| www.婷婷六月天| www.激情五月天.com| 高清无码入口| 九九色中文| 亚洲AV免费在线| 狠狠综合久久| www.91色| 五月色在线| 色九月| 丁香六月开心| 51国精产品自偷自偷综合| 九九热这里只有精品5| 无码激情| 欧韩性爱| 天天干天天插| 狠狠搞综合色| 精品亚洲国产成AV人片传媒| 人妻在线中文字幕久久| 欧美日韩成卜| 丁香五月,激情五月,深爱五月| 丁香婷婷五月色综合| 五月丁香婷婷俺| 五月丁香A片| 色五月天婷婷| 婷婷九月狠狠色| 色玖玖爱| 丁香六月婷婷一区| 欧美精品XXXXBBBB| 天天干天天干天天干天天干天天干天天| 亚洲国产精品二二三三区| 夜夜操夜夜姧| 禁片二区| 国产激情av| 婷婷大香蕉| 久久久GOGO无码啪啪艺术| 另类激情五月| 一区二区三区四区牛| 激情五月天啪啪| 丁香五月色| 欧美S码亚洲码精品M码| 66精品成人免费网站在线观看| 丁香九色不卡aaa| 五月丁香婷婷婷激情爱爱| 色V狠狠的干| 色啪网| 人人操人人爱丁香五月| 停停六月 综合| 色色色婷婷五月| 丁香六月婷婷缴情欧美| 丁香五月激情图片婷婷| 五月婷婷六月丁香在线| 大香蕉五月天婷婷丁香91| 人妻久久久| 五月丁香久久丝袜啪啪| 亚洲成人av在线播放| 狠狠干狠狠色| 天天色,天天操,天天射| 中文字幕天天干| 99ri国产| 九九婷婷五月天影视| 超色欲天天| 久色网| 五月成人天| 色婷婷97| 激情婷婷五月丁香啪啪啪| 激情视频综合| 就爱啪啪婷婷| 欧美日韩国产一区二区| 五月丁香在线| 人人爱人人摸人人澡| 色色五月天丁香| 亚洲深喉aV| 精品网站:999WWW| 伊人久久婷婷五月天激情四射| 六月丁香成人| 久久激情五月| 韩国激情五月天综合网| 丁香五月狠狠在线观看| 一区二区三区四区牛| 激情六月天| 婷婷久久色| 99这里精品| 国产资源在线视频| 图片区 小说区 区 亚洲五月 | 五月天伊人久久| 中文av网站| 亚洲这里只有精品| 狠狠草天天草| 九久久精品视频99| 精品二区| 九九热99热| 欧洲亚洲精品| 天天草天天舔| 丁香五月中文字幕| 色天使久久综合| 99热综合网| 玖玖资源在线视频| 婷婷久久五月天亚洲欧美国产日韩在线观看 | 人人爱天天摸摸天天爱| 五月婷婷丁香啪啪| 大香蕉久久视频久久视频 | 99在线视频播放| 五月丁香婷在线| 66精品国产成人| 97色色综合| 五月天婷婷无码| 激情第四色| 91干| 婷婷五月婷婷| 五月婷六月丁| 99在线观看视频精品| 亚欧州精品视频| 97久久精品视频| 青青草免费公开视频| 秋霞性爱AV| 丁香婷婷激情| 国产五月天欧美色| 思思99热这里只有精品6| 婷婷欧美激情综合| 99热亚洲| 久xxxx| 91怕怕网| 色一色综合| 国产亚洲成AV人片在线观黄桃 | 日韩无码专区| 精品99在线| 在线看av| 国产黄色av| 婷婷情色五月| 午夜无码熟熟妇丰满人妻| 久久99精品视频| 91啪啪视频| 4438激情网| 综合色影院| a久久| 99re6久热只有精品6在线直播| 婷婷五月天偷拍| 丁香婷婷六月激情综合| 亚洲无码成人性爰网| 性 色 婷婷| 六月婷婷网| 99色色热| 久久五月天激情美女| 久久九区| 久色网| 怡红院 久久| 天天综合情| 久久这里只有精彩| 五月婷婷六月丁香免费| 这里只有精品视频222| 亚洲五月婷婷| 热99国产精品| 久热久色| A一级操| 无码中文一区二区三区| 丁香五月aV| 激情婷婷五月色| 大伊久久| 99色最新在线视频网站| 五月情婷婷| 五月婷婷av| 人人操人人爰人人一天天碰夜夜拍夜夜爽-中国A级毛片天天看天天谢… | 99精品激情| 高清无码.com| 99热这是里只有精品| 成人婷婷桔色| 天天干肏夜夜| 久久这里只| 亚洲另类日本| 操操国产| 久久九九国产精品怡红院| 色色热| 婷婷五月激情四射手| 亚洲不卡123| 高清国产AV| 婷婷五月天黄色| 丁香5月激情网| 日日夜夜青青草| 99这里只有精彩视频| 五月天色不卡| 另类视频一区| 成人综合网站| 665566 无码| 六月激情婷婷综合| 美日韩成人| 678五月丁香亚洲综合| 日日做夜夜爱| 久久婷婷亚洲| 丁香五月色| 国外亚洲成AV人片在线观看| 99久久超级| 日韩日比视频| 狠狠色婷婷7| 丁香五月中文字幕久色| 五月天婷婷AV| 亚洲欧美成人在线| 91午夜婷婷狠狠久久综合9色| 99久久久久久久| 五月五婷婷网| 久热中文字幕在线线观看| 激情综合五月婷婷| 天天插天天射| 日韩五月婷婷久久| 色噜噜夜夜夜综合网| 台湾综合丁香五月蜜桃| 天天插天天插天天插| 日韩久热| 一本色综合色| 99资源在线视频| 这里只精品| 99免费在线| 五月天婷婷在线视频| 就爱日五月天| 黄色片区子| 丁香五月av在线| 超碰色综合| 久久人人做人人妻人人玩精品va| 91精品国产综合久久蜜芽解析速度| 99色天堂| 五月婷婷开心综合| 91九色精品熟女内射| 狠狠久久婷五月综合色| 成人五月天丁香婷| 精品综合五月| 久久婷婷色| 97成人丁香| 丁香 婷婷 激情 综合 五月| 丁香色综合| 激情综合网激情五月天| 秋霞网在线免费基地五月婷婷丁香| 色婷婷影视| 天天精品视频免费观看| 99超级碰免费视频| 六月丁香天堂| 五月丁综合在线观看| 五月丁香久久综合| 婷婷桃色网| 久久婷婷激情五月天一区二区| 日本五月天婷婷丁香| 亚洲视频在线观看| 丁香五月婷婷亚洲综合精品| 婷婷五月天激情综合网| 99热首页| 狠狠色噜噜狠狠| 丁香五月欧美色综合| 婷婷深爱五月| 六月婷基地| 五月停停丁香| 五月天开心网| 91人妻人人做人碰人人爽九色| 激情丁香六月| 99在线精品免费视频| 久久久人妻久久久| 欧美狠狠色| 丁香五月天大香蕉啪啪| 五月天婷婷色五月天| 91日视频| 免费操超碰| 欧美激情2025| 欧美成人精品三区综合A片| 伊人久久大香网| 亚洲综合99| 97色综合| 色丁香婷婷美女视频网站| 97香蕉碰碰人妻国产欧美| 97人妻碰碰碰久久香蕉| 99综合色| 亚洲激情四谢| 国产五月天激情小说| 激情综合五月天| 激情综合网五月丁香| 欧美综合激情丁香五月六月婷| 亚洲日韩久久婷婷伊人| 狠狠狠狠免费| 高清无码网址| 亚洲色综合| 在线另类视频| 99视频网址| 久久538| 热996精品在线观看| 狠狠插日日干撸| 波多婷婷久久| www激情| 久久久久亚洲AV成人无码电影| 超碰2021| 狠狠五月综合在线| 影音先锋男人女人| 久久五月网| 亚洲亚洲人成综合网络| 亚洲天天免费| 欧美日韩欧美| 六月色婷婷欧美| 日本精品久久久久中文字幕| 成人视频九九| 欧美三级A做爰在线观看| 2025中文在线视频字幕免费观看| 久久98| 久久在这里有精品| 国产精品久久久久久亚洲毛片| 精品无码色| 国产毛片精品一区二区色欲黄A片| www.五月天婷婷.com| av九九| hd五月婷婷在线| AV中文网| 色综合色综合色综合| 欧美日韩国产成人在线| 婷婷五月丁香在线视频| 婷婷五月天丁香成人社区| 久热这里只有| 91视频精品99| 日韩人妻无码专区| 深爱五月月天| 色五月综合网| 婷婷激情六月中文| 五月丁香婷婷伊人日韩| 狠狠插狠狠操| 九洲一级A片| 天天天天干| 五月激情综合五月| 久久精品熟女亚洲AV麻豆| WWW,五月| 久久久久8888| 丁香六月色婷婷| 久久久久婷婷五月热综合| 亚洲电影在线观看| 99热这里只有精品最新网址| 国产亚洲色婷婷久久99精品91 www.riverspirits.org www.hnnun.com www.changh | 婷婷色情五月| 伊人碰碰碰| 五月天第四色开心色播| 亚洲欧洲另类图片| 色五月在线播放| 91在线日| 亚洲精品久久久久AV无码| 综合网五月天123| 91色在线 | 日韩| 久久婷婷五月| 久久成人精品视频| 射久久丁香五月| 九九伊人网| 六月婷婷日| 99久久色| 色中色综合| 色噜综| 成人中文字幕在线| 丁香六月婷婷| 婷婷五月天久久久| 五月婷精品| 亚洲乱码日产精品BD| 色五月播五月| 99热这里只有精品26| 婷婷色色亚洲| 婷婷五月天丁香社区| 人人色婷婷五月天| 久久99网| 久久综合丁香激情五月| 99视频在线观看欧| 九九色院| 8090在线影视少妇| 中文av网| 久1色色| 五月天之色情综合网| 久热超碰| 五月天色综合| 婷婷五月丁香综合激情小说| 超碰AV成人| 国产成人精品一区二区三区视频 |