この要件を達成する他の方法はありますか。
ページを回転させるために使用filter: progid:DXImageTransform.Microsoft.BasicImage(Rotation=3);
していますが、コンテンツが長い場合、ページが正しく印刷されません。
印刷 CSS を使用します。CSS では、以下に示すように @page プロパティを設定できます。
@media print{@page {size: landscape}}
@page はCSS 2.1 仕様の一部ですが、 Is @Page { size:landscape} obsolete?size
という質問への回答では強調されていません。:
CSS 2.1 では size 属性が指定されなくなりました。CSS3 Paged Media モジュールの現在のワーキング ドラフトでは、それが指定されています (ただし、これは標準ではなく、受け入れられていません)。
前述のように、サイズ オプションはCSS 3 Draft Specificationに由来します。私のサンプルではサイズは省略されていますが、理論的にはページサイズと向きの両方に設定できます。
このサポートは、Firefox に提出されたバグ レポートの開始と非常に混在しており、ほとんどのブラウザはサポートしていません。
IE7 で動作するように見えるかもしれませんが、これは、IE7 が印刷プレビューでユーザーが最後に選択した横長または縦長を記憶しているためです (ブラウザーのみが再起動されます)。
この記事では、JavaScript または ActiveX を使用してユーザーのブラウザーにキーを送信する回避策をいくつか提案していますが、それらは理想的ではなく、ブラウザーのセキュリティ設定の変更に依存しています。
または、ページの向きではなくコンテンツを回転させることもできます。これは、スタイルを作成し、これらの 2 つの線を含むボディに適用することで実行できますが、これには多くの配置とレイアウトの問題を引き起こす欠点もあります。
<style type="text/css" media="print">
.page
{
-webkit-transform: rotate(-90deg); -moz-transform:rotate(-90deg);
filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
}
</style>
私が見つけた最後の代替手段は、PDF で横向きバージョンを作成することです。ユーザーが印刷を選択すると、PDF が印刷されます。ただし、これをIE7で自動印刷することはできませんでした。
<link media="print" rel="Alternate" href="print.pdf">
結論として、一部のブラウザーでは @page size オプションを使用することは相対的に簡単ですが、多くのブラウザーでは確実な方法はなく、コンテンツと環境に依存します。これがおそらく、印刷が選択されたときに Google Documents が PDF を作成し、ユーザーがそれを開いて印刷できるようにする理由です。