10
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

IE11でsvgを含むページを印刷するとクラッシュする件の対応

Last updated at Posted at 2016-12-12

IE11でsvgを含むページを印刷しようとするとクラッシュすることがあります。
※IEでsvgがクラッシュする条件は多々あります。

改ページ付近でsvgでスプライトしていたりすると、あるページでは大丈夫なのにあるページではクラッシュする
mshtml.dll でエラーコード 0xc0000005 (アクセスバイオレーション)で落ちている)

ぐぐると

@media print{
  svg {
    display: none !important
  }
}

なんてカッコイイ解決かIEのバグだね、という情報くらいしか出てこないですが

svg {
  overflow: hidden;
}

としてあげると直るかもしれません。

発生条件と推察

自分が確認した限りは下記の現象が起こりました。

  • 同じSVGを使用していてもクラッシュしないページがある
  • A4印刷でクラッシュしていても、A3印刷だったらクラッシュしないことがある
  • SVGのコンテンツをブロック上部に持っていけばクラッシュしないことがある
  • SVGより上部にいるDOMを削除するとクラッシュしないことがある
  • SVG要素自体を非表示にするとクラッシュしない
  • コンテンツが長いページは発生率が高いが、長いページでもクラッシュしないページはある
  • クラッシュレポートをWindowsのイベントビューアーで確認するとmshtml.dll でエラーコード 0xc0000005が発生している

svguseで読み込んでおりスプライトで特定のアイコンだけを出すという利用方法です。(use xlink:href='foo#icon1' という指定)

発生条件から

  1. useで読み込んでいるのでsvgの読込分のメモリの確保が足りておらず違反?
  2. ページをまたぐようなsvgが存在する時に、超過して書込む等の違反?

と思い適当にデバッグしてたら

  • page-break-before:always等のcssを当てると大丈夫だった所もクラッシュする

現象が確認できたことから改ページ周りが非常に怪しいと思い適当にcssいじってたら回避策見つかりました。

10
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?