
最近我们遇到一个项目是:用随机不同的样式去打印 csv 里十几万条少数民族语。 我们的想法是:
.csv中的每一条语句转成.html中的一个<p>.html,得到一个.pdf。现在遇到的问题是:我们需要得到.csv里的每一条item对应的.pdf页数。
举个例子,.csv里的第 1000 条句子,最终打印出来在.pdf的第五十页,那么我们就需要得到一个(1000,50)。
现在的困惑是:.html打印成.pdf的过程似乎是一个黑盒。没有办法深入到底层去得知某一个<p>最终会落在哪张页面上。
希望有了解 HTML 打印的同学可以帮忙指个路。
亦或者大家有什么更好的思路来实现这个需求。
之所以不去用 python 中的reportlab是因为reportlab对 RTL (从右到左排版)的支持并不好。
1 myd 2020-05-16 19:28:17 +08:00 via Android 手动控制分页 |
2 exip 2020-05-16 19:31:24 +08:00 via Android html 上在哪页 pdf 上不就是在哪页吗? |
3 allele OP @myd 手动控制分页的问题在于”你不知道应该隔多少个<p>换一次页“。我们现在的想法就是每隔 20 行强制换页,同时保证字体不要太大。就是想知道有没有我们遗漏的更好的办法。 |
5 TimePPT PRO 其实你的需求是纸质打印一本书,带目录索引? |
7 dallaslu 2020-05-16 19:54:21 +08:00 做一堆撑满一页的高度的块元素,然后均匀地把内容放进去? |
8 redtea 2020-05-16 19:59:07 +08:00 openhtmltopdf 可以实现,但是用的是 Java 。 |
10 967182 2020-05-16 20:12:17 +08:00 html 当然能控制让它分页啊 <div style="page-break-before: always"> <div id=page2 style='position:relative;width:760px;height:1070px;'> |
11 967182 2020-05-16 20:17:13 +08:00 html 转换可以试试 https://wkhtmltopdf.org/index.html 这个工具,效果还不错。 |
14 ccraohng 2020-05-16 23:42:48 +08:00 via Android 手动分页数据兼容性不好吧。我们用的是 wkhtml 。可以读取 pdf 内容,再匹配查找 |
15 xiaoming1992 2020-05-17 00:36:00 +08:00 via Android canvas 有个方法叫 measureText,可以以此来精确地控制文字的换行,并算出 csv 每一项的高度,据此手动控制何时分页,效率可能会有些差,但才十几万条,应该不碍事。只是不知道对少数民族语的支持如何。 |
16 no1xsyzy 2020-05-17 13:23:08 +08:00 1. 考虑 xelatex 2. 考虑生成后再重新去解析 PDF (脏 |