wkhtmltopdf - 添加一个侧边栏,跟随一段不同的文本

wkhtmltopdf - adding a sidebar that follows a span of varying text

只要任何文本在 class sidebar 范围内,我都会尝试在输出的 PDF 的左边缘添加侧边栏。我 运行 遇到的主要问题是,当文本跨越 运行 多行时,在 wkhtmltopdf returns 中计算 JS 中的跨度高度或坐标显示不正确的值,所以我不没有适当的值来调整或定位生成的侧边栏元素。我对任何可能使这项工作有效的想法持开放态度。

我尝试过的一些事情:


<style>
  .sidebar { position: relative; background-color: yellow; }
  .sidebar::before { position: absolute; content: ''; border-left: 2px #000 solid; left: 0; height: 100%; }
</style>

<body>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. <span class="sidebar">Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem.</span> Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?</body>

Here's a mock-up of my target. The sidebar on the left here matches the height of the yellow selected text.

给你:

</<!DOCTYPE html>
<html>

<head>
    <style>
        body {
            height: 842px;
            width: 595px;
        }

        .sidebar {
            background-color: yellow;
        }

        .sidebar::before {
            position: fixed;
            content: '';
            border-left: 2px #000 solid;
            left: 0;
        }
    </style>
</head>

<body>
    Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.
    <span class="sidebar">Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem.
    </span> Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?

    <script>
        document.addEventListener("DOMContentLoaded", function(event) {
            var span = document.getElementsByClassName('sidebar')[0];
            document.styleSheets[0].addRule('.sidebar::before', 'height: ' + span.offsetHeight + 'px;');
        });
    </script>
</body>


</html>

注意:我不得不为 wkhtmltopdf 添加高度和宽度的正文样式 javascript 以显示正确的 span.offsetHeight。没有那个,身高太大了。

在 Chrome 中进行测试,我不需要 body 样式,但是 wkhtmltopdf 需要。

我只是将其设置为一些 width/height 像素,但您可以将其设置为正确的像素,同时考虑到边距。