どのように迅速にASP.NETコアでPDF文書を構築します

  例えば、我々は我々、ASP.NETコアは、これは難しいことではありませんよう、PDFを通じていくつかの簡単なレポートを開発する必要がありますが、まだお祝い、その後、いくつかの情報を検索するために急いで、この記事はあなたに役立つ必要があります私はいくつかの貴重な時間を無駄に行くことはありません。

  この記事では、.NETのコアWebプログラムで私たちのDinkToPDFビルドPDF文書を処理するために使用しようとしています!今、私たちはちょうど楽しみの一部を開始、言っても過言を持っています。

序文

  次の方法でPDF文書を作成することができ、私の倉庫スターを解放するために歓迎し、ソースコードを取得し、...

  私は気にしないMVC、APIは、あるとして今、私たちは、.NETのコア3.0プロジェクトを作成します。プロジェクトに直接NugetインストールDinkToPDFを作成した後。そして、あなたは私のコードリポジトリ「をダウンロードする必要がnativeLibrary」フォルダ、我々は二つのファイルの32ビット見つかりますここで、および64ビットの私たちは、ライブラリのための右のオペレーティングシステムを選択する必要がありますので。私たちは、64ビットのファイルフォルダを選択します。

  最後に、我々はライブラリを起動する必要があり、IOC DinkToPDF。

公共 のボイドConfigureServices(IServiceCollectionサービス)
        {
            VaRの状況は= 新しいCustomAssemblyLoadContext();
            context.LoadUnmanagedLibrary(Path.Combine(Directory.GetCurrentDirectory()、" libwkhtmltox.dll " ));

            services.AddSingleton(typeof演算(IConverter)、新しい SynchronizedConverter(PdfTools()));
            services.AddControllers();
        }

実体の設立

プロジェクトの実際の状況では、データベースからデータを収集したり、他のAPIからデータを受信することができます。しかし、簡単にするために、我々はデータのPDF文書にローカルストアを収集します。その後、我々は、HTMLテンプレートを作成し、PDFドキュメントに保存されます。

 パブリック クラス従業員
    {
        パブリック 文字列名前{ 取得しますセット; }
         パブリック 文字列氏名{ 得ますセット; }
         公共の int型年齢{ 取得しますセット; }
         パブリック 文字列性別{ GETセット; }
    }

その後、再び、私たちは、新しいフォルダを作成したいServicesとどのファイルの種類  DataServices.cs と  TemplateGenerator.csを 以下のように完全な構造:

パブリック クラスのDataServices
    {
        パブリック 静的リスト<従業員> GetAllEmployess()=>
            新しいリスト<従業員>
           {
                新しい従業員{NAME = " ハオ紫張"、氏名= " ターナー"、年齢= 35、性別= " 男性" }、
                 新しい従業員{NAME = " ゆうチェン"、氏名= " マルクス"、年齢= 22、性別= " 女性" }、
                 新しい従業員{NAME = " 建志チュー"、氏名= " マーチン"、年齢= 40、性別= "男性" }、
                 新しい従業員{NAME = " ElderJames "氏名= " Packner "年齢= 30、性別= " " }、
                 新しい従業員{NAME = " BlaZui "氏名= " ドウ、年齢= 45、性別= " 男性" }
           }。
    }

追加されたサービスは、サービスをシミュレートするために使用されるいくつかのデータを返します。我々は変更する必要があるので、HTMLテンプレートを生成したい  TemplateGenerator.csの  ファイルを:

パブリック クラスTempleGenertor
    {
        パブリック 静的の 文字列GetHTMLString()
        {
            VaRの従業員= DataServices.GetAllEmployess();

            だった SB = 新しい文字列ビルダは();
            sb.Append(@」
                        <HTML>
                            <ヘッド>
                            </ head>の
                            <身体>
                                <H1>これで生成されたPDFレポート!!! </ H1> </ div> <divのクラスは、 'ヘッダ' =>
                                <テーブルALIGN = '中央'>
                                    <TR>
                                        <番目>名前</目>
                                        <番目>姓</目>
                                        <番目>年齢</目>
                                        <番目>性別</目>
                                    </ TR> " );

            foreachのVARの EMP 従業員)
            {
                sb.AppendFormat(@」<TR>
                                    <TD> {0} </ TD>
                                    <TD> {1} </ TD>
                                    <TD> {2} </ TD>
                                    <TD> {3} </ TD>
                                  </ TR> " 、emp.Name、emp.LastName、emp.Age、emp.Gender)。
            }
            sb.Append(@」
                                </ TABLE>
                            </ BODY>
                        </ HTML> " );

            リターンsb.ToString();
        }
    }

あなたはCSSスタイルを指定したい場合は、あなたには、いくつかのフォルダを作成することができ、その後、パスを選択するために、サーバーのAPIを設定します。

.header {
    テキスト - 整列:センター;
    色:緑;
    パディング - 下:35px;
}

テーブル{
    幅:、80;
    国境 - 崩壊:崩壊。
}

TD、第{
    国境:1pxの灰色の固体。
    パディング:15ピクセル;
    フォント - サイズ:22px;
    テキスト - 整列:センター;
}

表番目{
    背景 - 色:緑;
    色:白;
}

  それは我々がHTMLのためのHTMLテンプレートを作成している方法です。今、私たちは、コントローラのロジックを続けることができます。

[ルート(" API / PDFCreatorを" )]
    [ApiController]
    パブリック クラスPdfCreatorController:ControllerBase
    {
        プライベートIConverterの_converter。

        公共PdfCreatorController(IConverterコンバータ)
        {
            _converter = コンバータ。
        }

        [HTTPGET]
        公共IActionResult CreatePDF()
        {
            グローバル設定= 新しいグローバル設定
            {
                カラーモード = ColorMode.Color、
                オリエンテーション = Orientation.Portrait、
                PaperSizeを = PaperKind.A4、
                マージン = 新しい MarginSettings {トップ= 10 }、
                DocumentTitle = " PDFレポート"
            }。

            VaRの objectSettings = 新しいObjectSettings
            {
                PagesCount = 
                HtmlContent = TempleGenertor.GetHTMLString()、
                WebSettings = {DefaultEncoding = " UTF-8 "、UserStyleSheet = Path.Combine(Directory.GetCurrentDirectory()、" 資産"" style.cssに" )}、
                HeaderSettings = {のFontName = " Arialの"、のFontSize = 9、右= " ページ[ページ]の[toPage] "、ライン= }、
                FooterSettings = {のFontName = " Arialの"、のFontSize = 9、ライン= 、センター= " レポートフッター" }
            }。

            VaRの PDF = 新しいHtmlToPdfDocument()
            {
                GlobalSettings = GlobalSettings、
                オブジェクト = {} objectSettings
            }。

            VaRのファイル= _converter.Convert(PDF)。
            リターンファイル(ファイル、" アプリケーション/ PDF " );
        }
    }

コード説明

上記のコードでは、まず使用  IConverter  インタフェースを登録する  コンバータ  依存性注入は、コンストラクタに注入されるとその後、我々は、2つのオブジェクトの作成  GlobalSettings 、  objectSettingsを して、それらを使用し  HtmlToPdfDcoumentの プロパティ設定

今、私たちは言わせ  GlobalSettings と  ObjectSettingsの クラスを。

GlobalSettingsクラスについて

これは、PDF文書の全体的な構成プロパティが含まれています。私たちは、カラーモード、向き、用紙サイズ、ドキュメントのタイトルとその上を設定するには、これらのプロパティのいくつかを使用するだけで...それはまた、プロパティを超えています。

ObjectSettingsクラスについて

ObjectSettingsコンテンツ属性に関連するPDF文書によります。したがって、我々は、ヘッダーとフッターのテキスト形式の文書(の内容ページカウンタの可視性を設定することができますHtmlContent属性)またはWeb設定を。

HtmlContentこのような特性は非常に重要な属性です。それは我々がメインのPDFドキュメントを生成し、表示するHTMLテンプレートが含まれています。

WebSettingsそれは私たちが、スタイルの設定に外部CSSファイルを持っている場合は特に、また非常に重要です。このプロパティでは、ドキュメントのエンコーディングを設定し、CSSファイルへのパスを提供することができます。私たちは、このプロパティを調べると、我々はこのような背景のPDF文書、テキストサイズなど複数の構成設定を見つけるでしょう、と上のよう..

スタートアップの項目

私たちのAPI、PDF印刷のリダイレクトインターフェイスへのルートを見つけることで。

  すべてはロジックとセットに関連するいくつかの書類を私たちは簡単にASP.NETコアでPDF文書を作成することができますので、その完璧なようだともぴったりです!

おすすめ

転載: www.cnblogs.com/ZaraNet/p/12037634.html