首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将HTML转换为PDF发票

将HTML转换为PDF发票
EN

Stack Overflow用户
提问于 2018-08-31 13:50:27
回答 2查看 723关注 0票数 2

我正在尝试生成HTML页面( C# Razor ),该页面将被转换为PDF (使用wkhtmltopdf )并打印在预先打印的信纸上。

我的问题是,预先印刷的文具有一个标题(容易)和撕下部分底部(4cm),应该是空白的,直到最后一页,其中一些额外的信息被打印。

整个发票正在生成

代码语言:javascript
复制
<table><thead></thead><tbody></tbody></table>

那么,除了最后一次打印和最后一页打印的页边距之外,我如何在每一页上设置X的边距,而不是实际打印某一页的页边距?

试图与最后一个子选择器一起使用,但这不起作用。

也许其他一些解决方案更适合使用.Net核心(一些linux应用程序也可以使用)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-01 21:25:53

我终于找到了真相。因为页面的顶部不应该是一个问题(也可以用同样的方式处理,但是表头是另一个选项)

我的解决办法是:

代码语言:javascript
复制
 wkhtmltopdf test.html --footer-html footer.html output.pdf

整个技巧就是使用footer.html文件:

代码语言:javascript
复制
<!DOCTYPE html>
<html>

<head>
    <script>
        var mainHeader = "test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>";
        var secondHeader = "OOOOOOOOOOPOPOPOPOPOPOPOPOPOPOPOPOPOPOPOPOPOPOPPOPO<br>";

        function selectHeader() {
            var vars = {};
            var x = document.location.search.substring(1).split('&');
            for (var i in x) {
                var z = x[i].split('=', 2);
                vars[z[0]] = decodeURIComponent(z[1]);
            }

            if (vars["page"] == vars['topage']) {
                document.getElementById('main').innerHTML = secondHeader;
            } else {
                document.getElementById('main').innerHTML = mainHeader;
            }

            if (vars["page"] == vars['frompage']) {
                document.getElementById('test').innerHTML = secondHeader;
            }

        }
    </script>
</head>

<body onload="selectHeader()">

    <div style="min-height: 6cm; background-color: aqua; max-height: 6cm; overflow:visible;">
        <div id="main" onload="selectHeader()">
        </div>
    </div>
</body>

</html>

ps。在某个地方读到,如果没有!DOCTYPE,它可能不起作用。

谢谢你的帮助

票数 0
EN

Stack Overflow用户

发布于 2018-08-31 14:17:56

可以使用CSS @page规则指定页边距。您也可以使用这个为左右页指定额外的页边距(说明绑定)和第一页,但似乎不是最后一页!

代码语言:javascript
复制
/* Default left & right is 2cm, top & bottom margin is 4cm */
@page { margin: 4cm 2cm } 

/* First page, 10 cm margin on top */
@page :first {
  margin-top: 10cm;
}

/* Left pages, a wider margin on the left */
@page :left {
  margin-left: 3cm;
  margin-right: 2cm;
}

/* Right pages, a wider margin on the right */
@page :right {
  margin-left: 2cm;
  margin-right: 3cm;
}

进一步阅读:https://www.w3.org/TR/CSS21/page.html#page-box

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52116938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档