クラス AbstractPdfView

実装されたすべてのインターフェース:
AwareBeanNameAwareApplicationContextAwareServletContextAwareView

public abstract class AbstractPdfView extends AbstractView
PDF ビューの抽象スーパークラス。アプリケーション固有のビュークラスは、このクラスを継承します。ビューは、テンプレートではなく、サブクラス自体に保持されます。

このビューの実装では、Bruno Lowagie の iText API を使用します。オリジナルの iText 2.1.7 とそのフォークである OpenPDF で動作することが知られています。OpenPDF は積極的にメンテナンスされており、信頼できない PDF コンテンツに対する重要な脆弱性を修正しているため、強くお勧めします。

メモ: Internet Explorer は、宣言されたコンテンツ型を常に考慮するとは限らないため、".pdf" 拡張子が必要です。

作成者:
Rod Johnson, Juergen Hoeller, Jean-Pierre Pawlak
関連事項:
  • コンストラクターの詳細

    • AbstractPdfView

      public AbstractPdfView()
      このコンストラクターは、適切なコンテンツ型 "application/pdf" を設定します。IE はこれにあまり気づきませんが、これについてできることはあまりありません。生成されたドキュメントの拡張子は ".pdf" である必要があります。
  • メソッドの詳細

    • generatesDownloadContent

      protected boolean generatesDownloadContent()
      クラスからコピーされた説明: AbstractView
      このビューがダウンロードコンテンツ(通常は PDF ファイルや Excel ファイルなどのバイナリコンテンツ)を生成するかどうかを返します。

      デフォルトの実装は false を返します。通常、レスポンス OutputStream を介して、クライアント側で一時キャッシュを必要とするダウンロードコンテンツを生成していることがわかっている場合、サブクラスはここで true を返すことが推奨されます。

      オーバーライド:
      クラス AbstractViewgeneratesDownloadContent 
      関連事項:
    • renderMergedOutputModel

      protected final void renderMergedOutputModel(MapSE<StringSE,ObjectSE> model, HttpServletRequestEE request, HttpServletResponseEE response) throws ExceptionSE
      クラスからコピーされた説明: AbstractView
      ビューを実際にレンダリングするには、サブクラスでこのメソッドを実装する必要があります。

      最初のステップは、リクエストの準備です。JSP の場合、これはモデルオブジェクトをリクエスト属性として設定することを意味します。2 番目のステップは、たとえば RequestDispatcher を介した JSP を含む、実際のビューのレンダリングです。

      次で指定:
      クラス AbstractViewrenderMergedOutputModel 
      パラメーター:
      model - 静的な属性よりも動的な値が優先される、結合された出力マップ(非 null
      request - 現在の HTTP リクエスト
      response - 現在の HTTP レスポンス
      例外:
      ExceptionSE - レンダリングに失敗した場合
    • newDocument

      protected com.lowagie.text.Document newDocument()
      PDF コンテンツを保持する新しいドキュメントを作成します。

      デフォルトでは A4 ドキュメントを返しますが、サブクラスは任意のドキュメントを指定できます。場合によっては、ビューで定義された Bean プロパティによってパラメーター化されます。

      戻り値:
      新しく作成された iText ドキュメントインスタンス
      関連事項:
      • Document(com.lowagie.text.Rectangle)
    • newWriter

      protected com.lowagie.text.pdf.PdfWriter newWriter(com.lowagie.text.Document document, OutputStreamSE os) throws com.lowagie.text.DocumentException
      指定された iText ドキュメントに対して新しい PdfWriter を作成します。
      パラメーター:
      document - iText ドキュメントを作成するためのライター
      os - 書き込む OutputStream
      戻り値:
      使用する PdfWriter インスタンス
      例外:
      com.lowagie.text.DocumentException - ライターの作成中にスローされた場合
    • prepareWriter

      protected void prepareWriter(MapSE<StringSE,ObjectSE> model, com.lowagie.text.pdf.PdfWriter writer, HttpServletRequestEE request) throws com.lowagie.text.DocumentException
      指定された PdfWriter を準備します。PDF ドキュメントを構築する前、つまり Document.open() を呼び出す前に呼び出されます。

      たとえば、ページイベントリスナーの登録に役立ちます。デフォルトの実装では、このクラスの getViewerPreferences() メソッドによって返されるビューアー設定を設定します。

      パラメーター:
      model - メタ情報を入力する必要がある場合のモデル
      writer - 準備する PdfWriter
      request - ロケールなどが必要な場合に備えて。属性を見てはいけません。
      例外:
      com.lowagie.text.DocumentException - ライターの準備中にスローされた場合
      関連事項:
      • Document.open()
      • PdfWriter.setPageEvent(com.lowagie.text.pdf.PdfPageEvent)
      • PdfWriter.setViewerPreferences(int)
      • getViewerPreferences()
    • getViewerPreferences

      protected int getViewerPreferences()
      PDF ファイルのビューアー設定を返します。

      デフォルトでは AllowPrinting および PageLayoutSinglePage を返しますが、サブクラス化することもできます。サブクラスは、設定を固定するか、ビューで定義された Bean プロパティから取得することができます。

      戻り値:
      PdfWriter 定義に対するビット情報を含む int
      関連事項:
      • PdfWriter.ALLOW_PRINTING
      • PdfWriter.PageLayoutSinglePage
    • buildPdfMetadata

      protected void buildPdfMetadata(MapSE<StringSE,ObjectSE> model, com.lowagie.text.Document document, HttpServletRequestEE request)
      iText ドキュメントのメタフィールド (作成者、タイトルなど) を入力します。
      デフォルトは空の実装です。サブクラスはこのメソッドをオーバーライドして、タイトル、件名、作成者、作成者、キーワードなどのメタフィールドを追加できます。このメソッドは、ドキュメントに PdfWriter を割り当てた後、document.open() を呼び出す前に呼び出されます。
      パラメーター:
      model - メタ情報を入力する必要がある場合のモデル
      document - iText ドキュメントが入力
      request - ロケールなどが必要な場合に備えて。属性を見てはいけません。
      関連事項:
      • Document.addTitle(java.lang.String)
      • Document.addSubject(java.lang.String)
      • Document.addKeywords(java.lang.String)
      • Document.addAuthor(java.lang.String)
      • Document.addCreator(java.lang.String)
      • Document.addProducer()
      • Document.addCreationDate()
      • Document.addHeader(java.lang.String, java.lang.String)
    • buildPdfDocument

      protected abstract void buildPdfDocument(MapSE<StringSE,ObjectSE> model, com.lowagie.text.Document document, com.lowagie.text.pdf.PdfWriter writer, HttpServletRequestEE request, HttpServletResponseEE response) throws ExceptionSE
      サブクラスは、モデルに基づいて iText PDF ドキュメントを構築するためにこのメソッドを実装する必要があります。Document.open() 呼び出しと Document.close() 呼び出しの間で呼び出されます。

      渡された HTTP レスポンスは、Cookie またはその他の HTTP ヘッダーを設定するために使用されることに注意してください。ビルドされた PDF ドキュメント自体は、このメソッドが返された後、自動的にレスポンスに書き込まれます。

      パラメーター:
      model - モデルマップ
      document - iText ドキュメントに要素を追加する
      writer - 使用する PdfWriter
      request - ロケールなどが必要な場合に備えて。属性を見てはいけません。
      response - クッキーを設定する必要がある場合に備えて。書いてはいけません。
      例外:
      ExceptionSE - ドキュメントの構築中に発生した例外
      関連事項:
      • Document.open()
      • Document.close()