A4页面就像html中的布局

前端之家收集整理的这篇文章主要介绍了A4页面就像html中的布局前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在开发基于小型网络的应用程序,其中用户被呈现2-3页长报告,可以打印为PDF.我在 stackoverflow /互联网上查看了不同的解决方案,发现了一些有效的解决方案到打印方面(内容打印有额外的边距,但我需要努力修复它)我当前的问题是我无法在浏览器中显示html内容页面布局.我能够显示A4尺寸的第一页,但是当内容超过1页时,它看起来好像打印在外页,您可以查看下面的图像

>如何在浏览器中显示页面

>它是如何打印预览的

这是CSS

.A4 {
   background: white;
   width: 21cm;
   height: 29.7cm;
   display: block;
   margin: 0 auto;
   padding: 10px 25px;
   margin-bottom: 0.5cm;
   Box-shadow: 0 0 0.5cm rgba(0,0.5);
}

@media print {
.page-break { display: block; page-break-before: always; }
size: A4 portrait;
} 

@media print {
 .noprint {display:none;}
 .enable-print { display: block; }
}

我想解决下面的问题,

>如果所有报告都以页面布局显示(另外,如果我可以在水平分页显示页面而不是长垂直页面),我会很高兴
>打印时没有填充问题,您看到的是打印的!

解决方法

你的第二个问题:

您必须将体边距和填充设置为零.您还需要从A4类中删除框阴影,边距,宽度和高度,以便打印多个页面.

.A4 {
  background: white;
  width: 21cm;
  height: 29.7cm;
  display: block;
  margin: 0 auto;
  padding: 10px 25px;
  margin-bottom: 0.5cm;
  Box-shadow: 0 0 0.5cm rgba(0,0.5);
  overflow-y: scroll;
  Box-sizing: border-Box;
}

@media print {
  .page-break {
    display: block;
    page-break-before: always;
  }

  size: A4 portrait;
}

@media print {
  body {
    margin: 0;
    padding: 0;
  }

  .A4 {
    Box-shadow: none;
    margin: 0;
    width: auto;
    height: auto;
  }

  .noprint {
    display: none;
  }

  .enable-print {
    display: block;
  }
}

你的第一个问题:

您可以尝试通过计算滚动高度来创建分页功能,并继续从页面删除元素,直到scollheight小于页面本身.

示例:https://jsfiddle.net/tk8rwnav/31/

var max_pages = 100;
var page_count = 0;

function snipMe() {
  page_count++;
  if (page_count > max_pages) {
    return;
  }
  var long = $(this)[0].scrollHeight - Math.ceil($(this).innerHeight());
  var children = $(this).children().toArray();
  var removed = [];
  while (long > 0 && children.length > 0) {
    var child = children.pop();
    $(child).detach();
    removed.unshift(child);
    long = $(this)[0].scrollHeight - Math.ceil($(this).innerHeight());
  }
  if (removed.length > 0) {
    var a4 = $('<div class="A4"></div>');
    a4.append(removed);
    $(this).after(a4);
    snipMe.call(a4[0]);
  }
}

$(document).ready(function() {
  $('.A4').each(function() {
    snipMe.call(this);
  });
});

这个例子打破了每个元素.段落不会破坏单词,但你可以实现这一点,但这将变得非常复杂.

原文链接:https://www.f2er.com/html/225762.html

猜你在找的HTML相关文章