Landscape printing from HTML

前端 未结 16 1792
被撕碎了的回忆
被撕碎了的回忆 2020-11-22 06:31

I have a HTML report, which needs to be printed landscape because of the many columns. It there a way to do this, without the user having to change the document settings?

16条回答
  •  长情又很酷
    2020-11-22 07:16

    I tried Denis's answer and hit some problems (portrait pages didn't print properly after going after landscape pages), so here is my solution:

    body {
      margin: 0;
      background: #CCCCCC;
    }
    
    div.page {
      margin: 10px auto;
      border: solid 1px black;
      display: block;
      page-break-after: always;
      width: 209mm;
      height: 296mm;
      overflow: hidden;
      background: white;
    }
    
    div.landscape-parent {
      width: 296mm;
      height: 209mm;
    }
    
    div.landscape {
      width: 296mm;
      height: 209mm;
    }
    
    div.content {
      padding: 10mm;
    }
    
    body,
    div,
    td {
      font-size: 13px;
      font-family: Verdana;
    }
    
    @media print {
      body {
        background: none;
      }
      div.page {
        width: 209mm;
        height: 296mm;
      }
      div.landscape {
        transform: rotate(270deg) translate(-296mm, 0);
        transform-origin: 0 0;
      }
      div.portrait,
      div.landscape,
      div.page {
        margin: 0;
        padding: 0;
        border: none;
        background: none;
      }
    }
    First page in Portrait mode
    Second page in Landscape mode (correctly shows horizontally in browser and prints rotated in printer)
    Third page in Portrait mode

提交回复
热议问题