PDFファイルのプレビューとダウンロード

背景:プロジェクトのプレビューとのpdfファイルダウンロード

    環境:jdk1.8、SpringBoot2.0、Mavenの
    (2.1をダウンロードしhttp://mozilla.github.io/pdf.js/getting_started/#download:pdf.jsダウンロードを。 266バージョン缶)

コピーインのダウンロードソースプロジェクトの
    レビューviewer.js:

defaultUrl:{
    値: 'compressed.tracemonkey-PLDI-09.pdf'、---は、デフォルトのPDFパスです
    OptionKind.VIEWER:種類
  }
  変更します:
  defaultUrl:{
    値: ''、
    種類:OptionKind.VIEWERは
  }

    :新しいウィンドウプレビューが開きます

     。<INPUTタイプ= "ボタン"値= "プレビュー" ID = "viewBtn">
    <スクリプトタイプ= "テキスト/ JavaScriptを">
        $を( "#viewBtn")
                .click(
                        関数(){
                            VAR curWwwPath = window.document.location.href;
                            VAR =パス名window.document.location.pathname。
                            VaRのPOS = curWwwPath.indexOf(パス名)。
                            VAR localhostPath = curWwwPath.substring(0、POS)。

                         //リクエストは、インターフェイスを取得し、新しいウィンドウでPDFファイルを開くには、ここでコールバック

             窓。オープン("?のhttp:// localhostを:8081 / API /ファイル/プレビューfileNameに= 2019_PDF.pdf");


                        });
    //バックグラウンド制御コードは、ディスプレイ上に、遠位着信ファイル名による指定したディレクトリにPDFファイルを読み取る
    @RequestMapping(値=「/プレビュー」、メソッド= RequestMethod.GET)
    公共ボイドprePDF(文字列のファイル名、HttpServletRequestのリクエスト、HttpServletResponseの応答){
        logger.info( "ファイル名:" + fileNameに);
        ファイルファイル=新しい新しいファイル( "E:/ PDF /" + fileNameに);
        IF(File.Exists()){
            バイト[] = NULLデータ;
            試み{
                FileInputStreamの新しい新しいINPUT = FileInputStreamを(ファイル);
                データ=新しい新しいバイト[input.available()];
                input.read(データ)
                。response.getOutputStream()ライト(データ);
                input.closeを();
            }キャッチ(例外e){
                logger.info( "PDF文件处理异常...")。
            }
        }
    }

    PDF文件下载:

の<input type = "ボタン"値= "下载" ID = "ダウンロード">
。$( "#ダウンロード")(クリック関数(){
            VAR形= $( "<FORM>") ;
            form.attr( "スタイル"、 "表示:なし");
            form.attr( "ターゲット"、 "");
            form.attr( "方法"、 "ポスト"); //提交方式为ポスト
            form.attr ( "アクション"、 "/ downloadFile"); //定义アクション
            。$( "本体")(フォーム)を追加し、
            form.submit();
        });



        文字列downloadFilePath = "E:/ PDF /"; //サーバーでダウンロードされたファイルへのパス、
        文字列fileNameに= "0602.pdf"、ダウンロードするファイルの名前//
    
        ファイルファイル=新しいファイル(downloadFilePath + fileNameに)。
        (File.Exists()){IF
            response.setContentType( "ファイルアプリケーション/ダウンロード力"); //は開かずに強制ダウンロードを設定            
            Response.AddHeader( "コンテンツの廃棄"、 "添付ファイルを、fileNameに=" + filename)で、
            バイト; [] =新しい新しいバイトバッファー[1024]
            のFileInputStream FIS = NULL;
            BufferedInputStreamをBIS = NULL;
            試み{
                FIS新しい新しい= FileInputStreamを(ファイル);
                BIS =新しい新規にBufferedInputStream(FIS)。
                OutputStreamのOutputStream = response.getOutputStream()。
                int型I = bis.read(バッファ)
                (!I = -1){一方
                  outputStream.write(バッファ、0、I)。
                  I = bis.read(バッファ)
                }
            }キャッチ(例外e){
                e.printStackTrace();
            }最後に、{
                (!ビス= NULL)場合、{
                    {試みる
                        )(bis.closeします。
                    }キャッチ(IOExceptionを電子){
                        e.printStackTrace();
                    }
                }
                (FIS!= null)の場合は{
                    {みてください
                        fis.close();
                    }キャッチ(IOExceptionをE){
                        e.printStackTrace();
                    }
                }
            }
        }
    }

 
    上部には、等に対応するプレビューページツールバー、印刷、ダウンロード、フリップ、ズームを持って、個々の実際のニーズに応じて、とすることができます表示ページのソースコードにviewer.htmlに対応する機能をコメントアウト。

    PDFコンテンツファイルのpdfboxを読み取ることができます:

jarファイルのパッケージを導入する:
<! -依存PDFを読んで- >
        <依存>
            <groupIdを> org.apache。 PDFBox </ groupIdを>
            <たartifactId> PDFBox </たartifactId>
            <バージョン> 2.0.4 </バージョン>
        </依存関係>


背景読み込みPDFファイルのコード:

パブリック文字列viewPDF(proCode文字列、文字列のファイル名、文字列originPage、HttpServletRequestのリクエスト){
        request.setAttribute( "dse_sessionId"、request.getParameter( "dse_sessionId")TRIM());
        logger.info( "開示レポートのプレビューがファイル名:" +ファイル名);
        ファイルファイル=新しい新しいファイル(constant.getExposeLocalDir()+ fileNameに);
        IF(File.Exists(!)){//ファイルがFTPのダウンロードファイルからローカルに、存在しない
            }
        }
        //コンテンツファイル、PDFを読んで-のためのコード
        のtry {
            PDDocument = PDDocument.load文書(ファイル);
            document.getClass();
            IF(document.isEncrypted()!){
                PDFTextStripperByArea新しい新しいPDFTextStripperByAreaストリッパー=();
                stripper.setSortByPosition(真の);
                PDFTextStripper textStripper PDFTextStripper新しい新=();
                ストリングexposeContent = textStripper.getText(文書)。
                文字列[]コンテンツ= exposeContent.split( "\\ N")。
                StringBufferのStringBufferの=新しいStringBufferを();
                (文字列ライン:コンテンツ)のための{
                    stringBuffer.append(ライン)
                }
            }
            
        }キャッチ(例外e){
            logger.info( "读取PDF文件异常...")。
        }
    
        リターン「」。
    }

 

免責事項:します。https://blog.csdn.net/Xing_Pengfei/article/details/97649888から転載フィルム物品

これに基づき、著者だけでいくつかの変更は、私は、Mavenプロジェクトを使用し、これはわずかに異なるビットのブログかもしれ
----------------
免責事項:この記事はCSDNブロガーです「真夜中の見習いXPFのオリジナルの記事、CC 4.0 BY-SAの著作権契約、複製、元のソースのリンクと、この文を添付してくださいに従ってください。
オリジナルリンクします。https://blog.csdn.net/Xing_Pengfei/article/details/97649888

おすすめ

転載: www.cnblogs.com/langcangsheng/p/11527898.html