最近我们遇到一个项目是:用随机不同的样式去打印 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 2020-05-16 19:51:09 +08:00 1
其实你的需求是纸质打印一本书,带目录索引?
|
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 1
手动分页数据兼容性不好吧。我们用的是 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 (脏 |