9

単語、インターネット エクスプローラー、クロムで機能する改ページを作成するための一貫した方法が見つからないようです。

次の例 ( Google Chrome Printing Page Breaksから) では、Chrome と Internet Explorer の両方で適切に改ページが作成されますが、Word では改ページがありません。

      <head>
    <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
    <title>Paginated HTML</title>
    <style type="text/css" media="print">
      div.page
      {
        page-break-after: always;
        page-break-inside: avoid;
      }
    </style>
  </head>
  <body>
    <div class="page">
      <h1>This is Page 1</h1>
    </div>
    <div class="page">
      <h1>This is Page 2</h1>
    </div>
    <div class="page">
      <h1>This is Page 3</h1>
    </div>
  </body>

私が発見した単語をいじった後、次のように改ページを追加する単語を取得できます。

<br style="ms-special-character:line-break;page-break-before:always" />

ここでの問題は、Internet Explorer もこれを改ページと見なすため、この方法を組み合わせると、Chrome と Word では適切に改ページが行われますが、Internet Explorer では 2 つの改ページが挿入されます。1つだけを使用する場合、chromeとexplorerのいずれかが正しく、wordはそうではありません。

4

5 に答える 5

4

これを試して:

<!--[if IE]>
<br>
<![endif]-->
<!--[if !IE]>
<br style="ms-special-character:line-break;page-break-before:always" />
<br>
<![endif]-->

それはあなたのニーズに合っていますか?(これらは単純な古いhtmlで動作することに注意してください。私はChromeとMS Word(IEと共に)でテストしましたが、正常に動作しました。)

于 2012-05-04T21:30:42.807 に答える
1

これは IE8 と IE9 の違いです (IE9 が標準モードである場合)。そのため、条件付きコメントまたは次のような CSS ハックを使用して、これらのブラウザーを何らかの形で区別する必要があります。

div.page:not(.dummy)
{
    page-break-after: always;
    page-break-inside: avoid;
}

(Chrome、Firefox、OpenOffice Writer [Word の適切な代用になることを願っています]、および IE 7、8、9 でテスト済み)

br に改ページを適用し、:not を理解するブラウザーに対する保護のために、これを追加できますが、これを必要とするブラウザーは知りません。

br:not(.dummy)
{
    page-break-before: auto;
}
于 2012-05-11T00:11:03.557 に答える
0

この種の問題を処理する一部の人々に役立つかもしれないもう 1 つの追加: 変更はブロック要素のみに適用されます。以前のテストでは、誰かが「スパン」を使用してブロックをコーディングしました。何度もテストしましたが、Vreality のソリューションを機能させることができませんでした。それから、span がブロック要素ではないからかなと思ったので、デフォルトでブロック要素でない要素に「display:block」を追加します。

別のこと: 私は最新の Chrome (v.25)、「page-break-inside: avoid;」を使用しています。修正はもう必要ないようです。

于 2013-03-05T20:30:52.433 に答える
0

そのような投稿が私を犠牲にする可能性があることは知っていますが、真剣に、一歩下がって、あなたが達成しようとしていることを再考してください.

Word を使用してレポートを表示および印刷できるユーザーは、IE も使用可能であり、Chrome に簡単にアクセスできます。つまり、Word は表示と印刷だけでなく、特に編集用であると思います。

私はあなたの例に従いましたが、私の (あらゆる面で変更されていない) IE9 は Word 2010 を使用して挿入された改ページを印刷しません。結果の HTML ドキュメントは最初のドキュメントとほとんど似ていません。特に DIV がなくなっているため、ドキュメントがまだ印刷されていると仮定すると、 Wordが発言権を持った後も、ほとんど不注意に楽観的です。

このアイデア全体が壊れているようです:

  • HTML をあなたのやり方で書くことは、Word がそれで行うことを考えると無意味に思えます
  • 最近の IE でも、Word を使用して改ページが挿入された単純な例を処理できません。
  • Word を保存すると、言語設定固有のディレクトリと 3 つの新しいファイルが作成され、あらゆる製品に必要な大量のテストが大量に生成されます。
  • 静的な Microsoft エコシステム内でもこれを機能させるには、多くのユーザーの知識 (作成ディレクトリ、正しく保存する方法、ドキュメント全体を正しくコピーする方法) が必要なようです。
  • ユーザー定義の設定は、HTML を使用するソリューションを簡単に壊す可能性があるようです

最初はレポートを Word 文書として作成することをお勧めします。圧縮されていても、Word 文書は HTML のようにマークアップされているため、既に HTML を生成できる場合は、わずかな労力で Word を生成できます。事実上すべての x86 または ARM ベースのデバイス用の Word ビューアーを入手できるため、単純な例でさえ失敗する方向に探索するよりも、より合理的な方向に思えます。

于 2012-05-15T10:38:03.427 に答える
0

関連する CSS を !IE 条件付きコメントに入れます。他のすべてはそのままにしておくことができます。

<style type="text/css" media="print">
<!--[if !IE]>
      div.page
      {
        page-break-after: always;
        page-break-inside: avoid;
      }
<![endif]-->
   </style>

Explorer は<!--[if !IE]><![endif]-->タグの間のすべてをコメントとして扱い、Word はそれに反応しません。他のすべてのブラウザは、以前と同じように表示され続けます。

于 2012-05-09T09:02:52.523 に答える