前提・実現したいこと
Ionic4とAngular8でレスポンシブル対応のWEBページを作っています。
その際にページ(画面)のうちの1つをPCでもスマホでもA4サイズで印刷できるように実装したいのですが、iOSでの印刷・PDF出力のレイアウトが期待通りにならず困っています。
発生している問題・エラーメッセージ
iOSのSafariで該当画面を開いた際にはスマホ表示となります。ここまでは確認できています。
そのままSafariの共有ボタンから「プリント」もしくは「ブック(PDFとして保存)」を押すとPC表示と同じA4サイズ(=PC表示)の出力をおこないたいのですが、レイアウトが崩れます。
具体的にはA4サイズ(=PC表示)出力されているように見えますが、印刷プレビューでは左上部分だけが描画されており、右側と下部が見切れております。
AndroidのChromeでは期待通り印刷の時だけA4サイズ(=PC表示)出力されております。
該当のソースコード
A4サイズは下記のようにmm指定でおこなっております。
css
1width: 189mm; 2height: 277mm; 3margin: 0 auto; 4padding-top: 30px; 5
下記の通りスマホ用のメディアクエリを記述していますが、印刷時にはPC表示のままとする為にprintは記述していません。
css
1@media screen and (max-width: 767px) { 2こちらで画面表示のレイアウトを指定しています。 3}
index.htmlのviewport設定が関係しているのでしょうか。
html
1<meta name="viewport" content="viewport-fit=cover, width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
試したこと
印刷状態のレイアウトを確認する為にChromeの開発者ツールからスマホ表示(例.iPhoneX)にしてEmulate CSS media typeのprintを見てみました。
印刷はA4表示としたいのでスマホ表示(例.iPhoneX)では「A4サイズの一部」が見えている状態です。これは妥当な表示だと思います。
ところが実際にiOS実機で印刷プレビューを見ると前述の「A4サイズの一部」しか印字されません。右側と下部は余白だけとなります。
MacのSafariにてWebインスペクタをしながらCSSを見てみてもどのスタイルが影響しているのかわかりかねる状態です。
もし何かお分かりの方がいましたらご教授いただけると幸いです。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー