ホームページ >バックエンド開発 >PHPの問題 >PHPベースのWeChatアプレットPDFファイルのプレビュー機能を実装する方法

PHPベースのWeChatアプレットPDFファイルのプレビュー機能を実装する方法

WBOY
WBOY転載
2022-08-26 14:05:283253ブラウズ

(推奨チュートリアル: PHP ビデオ チュートリアル)

問題の説明

ライブラリ クラスの WeChat アプレット以前、開発中にミニ プログラムで Alibaba Cloud OSS の PDF ファイルをプレビューするという問題に遭遇しました。 WeChat が提供する公式の解決策は 1 つだけあり、それはドキュメントをローカルにキャッシュし、リソース マネージャーで開くことです。

この書き方の問題点は明らかです。PDF ファイルが小さい場合は問題ありませんが、PDF ファイルが大きい場合、読み込み速度が非常に遅くなります。 。また、最初の数ページをプレビューするだけでよく、すべてのドキュメントをキャッシュしてファイル エクスプローラーで開く必要もあります。とても悪い経験です。

探索プロセス

  • オプション 1: ミニ プログラムの Web ビューを使用して、Web ページ上でプレビューします。エクスペリエンスはまだ問題ありませんが、クロスドメインの問題を解決できないという問題が発生しました。

  • オプション 2: pdf.js。インターネット上の多くのソリューションでは、これを使用し、プレビュー用にサーバー上に静的ページを作成する必要があります。このソリューションでは、PDF ファイルが独自のドメイン名のサーバー上にあっても問題ありません。ただし、ファイルがサードパーティ OSS にある場合は、引き続きクロスドメインの問題が発生します。さらに、オンライン ミニ プログラムはジャンプ プロンプトを発行します。 pdf.js ドキュメントは、さまざまな互換性の問題や、予測できない未知の問題があり、読みにくいです。

  • オプション 3: PDF ファイルを画像に変換すると、ミニ プログラムは対応する画像のみを読み込みます。このソリューションは最も完璧ですが、大学院生のバックエンド開発者により適しています。うちのバックエンドがめんどくさいので直すしかありません。自分にしかできないんです。

実装アイデア

プレビューする PDF ファイルのリンクとプレビューするページ数をバックエンドに渡します。バックエンドは、渡されたパラメーターに従って PDF ファイルを解析し、必要なページを画像として返します。

  • サーバーには画像を生成するための画像処理ソフトウェア (ImageMagick) をインストールする必要があります
  • php には ImageMagick に対応する拡張機能をインストールする必要があります
  • サーバーには Ghostscript をインストールする必要がありますPDF ファイルを開いて解析するための

最終効果

パラメータ p で対応するページ番号を指定した後、対応するページ番号の画像が表示されます。左側に が表示されます。

実装手順

  • 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

5 つのコマンドに対応する操作は、ダウンロード、抽出、ディレクトリを開く、構成です。 、コンパイルしてインストールします

  • PHP 用の拡張機能 imagemagick をインストールします (私はパゴダでワンクリックでインストールしました)

次のことができます。コンパイルしてインストールすることもできますが、ここでは省略します。

    #ゴーストスクリプトのインストール
  • 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
5 つのコマンドに対応する操作は次のとおりです: ダウンロード、解凍、ディレクトリを開く、構成、コンパイル、インストール

    Linux にコマンドを設定します。
  • echo "/usr/local/lib" >> /etc/ld.so.conf 
    ldconfig
    php ファイル解析コード
  • <?php
    try{
        $url = !empty($_GET[&#39;url&#39;]) ? $_GET[&#39;url&#39;] : die(&#39;error&#39;);
        $page = isset($_GET[&#39;p&#39;]) ? $_GET[&#39;p&#39;]-1 : &#39;0&#39;;
        $file_name = &#39;temp_&#39; . mt_rand(1000,9999) . &#39;pdf&#39;;
        file_put_contents( &#39;./&#39;.$file_name,file_get_contents($url));
        $imagePreview = new imagick(&#39;./&#39;. $file_name . &#39;[&#39;.$page.&#39;]&#39;);
        $imagePreview->setImageFormat( "jpg" );
        // $imagePreview->setResolution( 900, 900 );
        header( "Content-Type: image/jpeg" );
        echo $imagePreview;
        unlink(&#39;./&#39;. $file_name);
    }catch(\Exception $e){
        echo &#39;发生错误&#39;;
    }
注: PDF ファイルのパスは、独自のサーバーにすることも、自分のサーバーにすることもできます。自分で調整できます。

(推奨チュートリアル:

PHP ビデオ チュートリアル )

以上がPHPベースのWeChatアプレットPDFファイルのプレビュー機能を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjb51.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。