亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

如何基于PHP實現(xiàn)微信小程序pdf文件的預(yù)覽功能

 更新時間:2022年05月27日 12:02:35   作者:小柳666  
前段時間文庫類微信小程序開發(fā)中遇到個問題,就是要在小程序中預(yù)覽pdf文件,下面這篇文章主要給大家介紹了關(guān)于如何基于PHP實現(xiàn)微信小程序pdf文件的預(yù)覽功能,需要的朋友可以參考下

知識點

微信小程序預(yù)覽pdf文件

這都是一些實際項目的開發(fā)經(jīng)驗,不是東拼西湊的網(wǎng)上水文。如果這篇文章幫到了你,麻煩動動你發(fā)財?shù)男∈纸o點個贊,留下個評論。??????

問題描述

前段時間文庫類微信小程序開發(fā)中遇到個問題,就是要在小程序中預(yù)覽阿里云OSS中的pdf文件。微信官方給的方案就一個,就是把文檔緩存到本地然后用資源管理器打開。

這樣寫問題很明顯,pdf文件小的話還可以,當(dāng)pdf文件很大的時候,加載速度就會很慢。而且我只是需要預(yù)覽單純的前幾頁而已,也要把所有的文檔緩存下來,在文件資源管理器中打開。體驗非常不好。

探索過程

  • 方案一:使用小程序的webview,在網(wǎng)頁中實現(xiàn)預(yù)覽。體驗還是可以的,但是遇到的問題是 跨域問題無法解決。

  • 方案二:pdf.js。網(wǎng)上很多方案說是用這個,在服務(wù)器上寫個靜態(tài)頁面進(jìn)行預(yù)覽。這種方案的話,如果pdf文件在自己域名的服務(wù)器上還可以。但是如果文件在第三方的oss中,還是會碰到跨域問題。而且線上小程序會出跳轉(zhuǎn)提示。pdf.js文檔比較難啃,各種兼容性,未知問題無法預(yù)知。

  • 方案三:pdf文件轉(zhuǎn)圖片,小程序端只是加載相應(yīng)的圖片。這種方案最完美了,不過比較考研后端開發(fā)者。我們的后端嫌麻煩,不給我整,無奈。我只能自己來整了。

實現(xiàn)思路

將要預(yù)覽的pdf文件的鏈接,跟要預(yù)覽的頁數(shù)傳遞給后端。后端根據(jù)傳遞的參數(shù)去解析pdf文件,并把需要的那一頁返回為圖片即可。

  • 服務(wù)器需要安裝圖像處理軟件(ImageMagick) 用于生成圖片
  • php需要安裝ImageMagick對應(yīng)的擴展
  • 服務(wù)器需要安裝 ghostscript 用于打開并解析pdf文件

最終效果

通過參數(shù)p指定相應(yīng)的頁數(shù)以后,左邊就能顯示出相對應(yīng)頁數(shù)的圖片了。

實現(xiàn)步驟

  • 下載并編譯安裝 ImageMagick
wget https://netix.dl.sourceforge.net/project/imagemagick/im7-src/ImageMagick-7.0.7-25.tar.gz
tar -zxvf ImageMagick-7.0.7-25.tar.gz
cd ImageMagick-7.0.7-25
./configure
make && make install

五條命令分別對應(yīng)的操作為:下載 解壓 打開目錄 配置 編譯安裝

  • 為php安裝擴展 imagemagick (我是在寶塔中一鍵安裝的)

還可以進(jìn)行編譯安裝,這里就暫且省略咯。

  • 安裝 ghostscript
wget https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs925/ghostscript-9.25.tar.gz
tar zxvf ghostscript-9.25.tar.gz
cd ghostscript-9.25
./configure --prefix=/usr
make && make install

五條命令分別對應(yīng)的操作為:下載 解壓 打開目錄 配置 編譯安裝

  • 配置命令到linux中
echo "/usr/local/lib" >> /etc/ld.so.conf 
ldconfig
  • php解析文件代碼
<?php
try{
    $url = !empty($_GET['url']) ? $_GET['url'] : die('error');
    $page = isset($_GET['p']) ? $_GET['p']-1 : '0';
    $file_name = 'temp_' . mt_rand(1000,9999) . 'pdf';
    file_put_contents( './'.$file_name,file_get_contents($url));
    $imagePreview = new imagick('./'. $file_name . '['.$page.']');
    $imagePreview->setImageFormat( "jpg" );
    // $imagePreview->setResolution( 900, 900 );
    header( "Content-Type: image/jpeg" );
    echo $imagePreview;
    unlink('./'. $file_name);
}catch(\Exception $e){
    echo '發(fā)生錯誤';
}

注意:pdf文件的路徑可以是自己服務(wù)器的,也可以自己調(diào)整。

總結(jié)

到此這篇關(guān)于如何基于PHP實現(xiàn)微信小程序pdf文件預(yù)覽功能的文章就介紹到這了,更多相關(guān)PHP微信小程序pdf文件預(yù)覽內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論