A4页面就像html中的布局

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

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

>它是如何打印预览的

这是CSS

  1. .A4 {
  2. background: white;
  3. width: 21cm;
  4. height: 29.7cm;
  5. display: block;
  6. margin: 0 auto;
  7. padding: 10px 25px;
  8. margin-bottom: 0.5cm;
  9. Box-shadow: 0 0 0.5cm rgba(0,0.5);
  10. }
  11.  
  12. @media print {
  13. .page-break { display: block; page-break-before: always; }
  14. size: A4 portrait;
  15. }
  16.  
  17. @media print {
  18. .noprint {display:none;}
  19. .enable-print { display: block; }
  20. }

我想解决下面的问题,

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

解决方法

你的第二个问题:

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

  1. .A4 {
  2. background: white;
  3. width: 21cm;
  4. height: 29.7cm;
  5. display: block;
  6. margin: 0 auto;
  7. padding: 10px 25px;
  8. margin-bottom: 0.5cm;
  9. Box-shadow: 0 0 0.5cm rgba(0,0.5);
  10. overflow-y: scroll;
  11. Box-sizing: border-Box;
  12. }
  13.  
  14. @media print {
  15. .page-break {
  16. display: block;
  17. page-break-before: always;
  18. }
  19.  
  20. size: A4 portrait;
  21. }
  22.  
  23. @media print {
  24. body {
  25. margin: 0;
  26. padding: 0;
  27. }
  28.  
  29. .A4 {
  30. Box-shadow: none;
  31. margin: 0;
  32. width: auto;
  33. height: auto;
  34. }
  35.  
  36. .noprint {
  37. display: none;
  38. }
  39.  
  40. .enable-print {
  41. display: block;
  42. }
  43. }

你的第一个问题:

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

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

  1. var max_pages = 100;
  2. var page_count = 0;
  3.  
  4. function snipMe() {
  5. page_count++;
  6. if (page_count > max_pages) {
  7. return;
  8. }
  9. var long = $(this)[0].scrollHeight - Math.ceil($(this).innerHeight());
  10. var children = $(this).children().toArray();
  11. var removed = [];
  12. while (long > 0 && children.length > 0) {
  13. var child = children.pop();
  14. $(child).detach();
  15. removed.unshift(child);
  16. long = $(this)[0].scrollHeight - Math.ceil($(this).innerHeight());
  17. }
  18. if (removed.length > 0) {
  19. var a4 = $('<div class="A4"></div>');
  20. a4.append(removed);
  21. $(this).after(a4);
  22. snipMe.call(a4[0]);
  23. }
  24. }
  25.  
  26. $(document).ready(function() {
  27. $('.A4').each(function() {
  28. snipMe.call(this);
  29. });
  30. });

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

猜你在找的HTML相关文章