Kontentの使い方
ヘッドレスコンテンツをPDFにエクスポートする3つの簡単なステップ
By Dave Klement
通常、CMSからWebサイトを介して顧客にコンテンツを提供します。 Kontent by KenticoのようなヘッドレスCMSを使用して、モバイルアプリや音声アシスタントを作成することもできます。しかし、聴衆にPDFを提供する必要がある場合はどうでしょうか。
DeliveryAPIの応答をPDFまたはその他の形式に変換する方法はいくつかあります。サードパーティのサービスを利用することも、独自のサーバーで変換スクリプトを実行することもできます。
この記事では、Kentico byKenticoのカスタマーエデュケーションチームが、ラーニングセンターであるKontentLearnのコンテンツをPDFにエクスポートする方法を紹介します。
サービスオプションを選択し、Api2Pdfを選択しました。このサービスは、URLを介して提供されるスタイル付きHTMLページを使用し、PDFドキュメントを返します。簡単。しかし、待ってください-スタイル付きのHTML?Delivery APIは、スタイル付きHTMLではなくJSONを返しますよね?
はい。最初からそれを見て、私たちがどのようにそれをしたかを見てみましょう。
ステップ1:PDF用のJSONデータを準備する
KontentのDeliveryAPIは、視覚的な情報なしでコンテンツをJSONで提供します。顧客に提供するには、ビジュアルを自分で追加する必要があります。Webサイトの場合、コンテンツをHTMLページにアセンブルし、CSSでスタイルを設定し、対話性のためにJavascriptを使用します。
しかし、PDFドキュメントに対してどのようにそれを行いますか?これはWebページと非常によく似ています。CSSを使用したHTMLですが、PDFドキュメントが応答しない、ページで構成されているなどの事実に合わせてCSSを調整する必要があります。
前述のように、Api2Pdfサービスは、変換する記事のURLを使用します。ただし、記事をサービスに送信する前に行うことは、前述のPDFの詳細を説明する特別なCSSを記事に挿入することです。
ステップ2:PDFを作成する
PDF用のビジュアルが準備できたので、コンテンツを変換できます。ラーニングセンターの記事ごとに、訪問者が特定のチュートリアルをPDFでダウンロードできるボタンを追加しました。
このボタンは、記事のURLをApi2Pdfサービスに送信するバックエンドの関数を呼び出します。このサービスはコンテンツを処理し、APIを介して結果のPDFへの1回限りのリンクで応答します。
Kontent Learn Webアプリは、PDFをダウンロードしてサーバー側に保存し、キャッシュしたり、PDFを要求した顧客に提供したりします。
ステップ3:PDFをキャッシュする
キャッシングは、Webサイトでよく知られ、使用されている方法ですが、このユースケースでも役立ちます。ここでの目標は、訪問者がボタンをクリックしてPDFの記事を取得するたびにApi2Pdfサービスを呼び出さないようにすることです。
Kontent Learn Webアプリは、PDFファイルと、既に変換されたコンテンツに関するメタデータを保存します。誰かがチュートリアルのPDFバージョンを要求すると、キャッシュにあるかどうかを確認します。提供する場合は、キャッシュされたPDFを提供し、提供しない場合は、Api2Pdfサービスを呼び出します。
変換されたコンテンツに関するメタデータを保存する理由を尋ねられるかもしれません。なぜPDFファイルだけではないのですか?答えはキャッシュの無効化です。
各PDFファイルに保存するメタデータには、対応するコンテンツアイテムのコードネームが含まれています。ラーニングセンターでコンテンツが変更されると、Kontentは影響を受けるコンテンツアイテムのコードネームを含むWebhook通知を送信します。これにより、影響を受けて削除する必要のあるPDFファイルを簡単に判断できます。
結論
Kontentは、コンテンツモデルに基づいて構造化されたJSONでコンテンツを配信します。Delivery APIからJSONを受け取る場合、コンテンツの視覚的な側面は指定されません。これにより、コンテンツを自由に操作できます。モバイルアプリにプッシュしたり、スタイル付きHTMLに変換してウェブサイトとして提供したり、印刷可能な価格表やパンフレットなどを使用して素敵なPDFを生成するツールにフィードしたりできます。
しかし、それはWebサイト、モバイルアプリ、PDFだけにとどまりません。構造化コンテンツを任意の形式で任意のチャネルにフィードできます。オプションは無制限です。