Web ページ印刷時に ActiveX コントロールの領域が複数ページにまたがると、後ろのページに ActiveX コントロール部分が印刷されない

現象
ActiveX コントロールを利用して描画した Web ページを印刷する際に、ページが正常に印刷されない場合があります。具体的には、ActiveX コントロールで描画した領域が複数ページにまたがる場合、2 ページ目以降では ActiveX コントロールの描画領域が印刷されません。

以下の画像は、ActiveX コントロールを使用して大きな円を描画する Web ページを印刷した際のスクリーンショットです。ActiveX コントロールで描画された円が大きい場合は、円が 2 ページにまたがって印刷される必要がありますが、2 ページ目以降の描画領域は印刷されません。




原因
本現象は、Internet Explorer を使用して印刷した場合の動作制限です。
Internet Explorer や ActiveX コントロールの仕組み上、ActiveX コントロールで描画した領域がページをまたがった場合に、その内容を分割して描画することができません。
解決方法
ActiveX コントロールの描画領域の大きさによって、事象が回避できるかが異なります。

-      ActiveX コントロールの描画領域が 1 ページの高さよりも大きい場合
上記のスクリーンショットのように、ActiveX コントロール自体の描画領域が縦に長く、印刷時に 2 ページ以上にまたがる場合、ActiveX コントロールや HTML/JavaScript などの実装変更によって事象を回避することはできません。

-      ActiveX コントロールの描画領域が1 ページの高さよりも小さい場合
ActiveX コントロールの描画領域が 1 ページの高さよりも小さい場合、基本的に事象は発生しません。しかし、ActiveX コントロールがページの先頭になく、ページの上部に他の要素があるために位置が下がった場合、ActiveX コントロールの描画領域がページの境界にかかります。この場合は、Web ページのレイアウトを変更することで事象が回避できます。

たとえば、ActiveX コントロールの描画領域の前に page-break-before 属性を記述し、印刷時に強制的に ActiveX コントロールの描画領域前で改ページを行うといった手法が考えられます。これにより、ActiveX コントロールの描画領域が複数ページにまたがることがなくなります。

以下は、page-break-before 属性を利用した回避方法の例です。

--------------------------------

<HTML>
    <HEAD>
        <style type=”text/css”>
            div.page-break{
                page-break-before:always;
            }
        </style>
    </HEAD>

    <BODY>
        <DIV class=”page-break”>
            <OBJECT id=”activeX” codebase=”Cab ファイルへの URI” classid=”ActiveX の CLSID” />
        </DIV>
    </BODY>
</HTML>

--------------------------------
回避策
状況
詳細
Page-break-before 属性については、以下のマイクロソフト Web サイトを参照してください。

page-break-before
http://msdn.microsoft.com/ja-jp/library/cc410293.aspx
関連情報
注意 : これは、マイクロソフトのサポート組織内で直接作成された "緊急公開" の資料です。 この資料には、確認中の問題に関する現状ベースの情報が記載されています。 情報提供のスピードを優先するため、資料には誤植が含まれる可能性があり、予告なしに随時改定される場合があります。 その他の考慮事項については、使用条件を参照してください。
プロパティ

文書番号:2982088 - 最終更新日: 09/29/2016 15:45:00 - リビジョン: 3.0

Windows Internet Explorer 9, Windows Internet Explorer 10, Internet Explorer 11

  • KB2982088
フィードバック