我之前发过pdfmake (pdfmake.github.io),试用后发现它虽然强大,但是对于远程图片的排版支持不太好,如果是文字中混合着链接,似乎不支持,对于中文也很麻烦,需要额外生成字体脚本。

最近我在用一个第三方网站(twitter-thread.com)看Twitter的Thread,发现它有一个功能是将整个Thread保存成PDF(参考图8)https://t.cn/A6XWSI1O ,并且是在浏览器端生成的PDF,生成效果还不错,支持图片和链接,中文支持也很好。于是尝试反向了一下它的代码。

首先它是基于jsPDF (github.com/parallax/jsPDF) 生成的PDF,jsPDF是一个开源的JS生成pdf库,支持浏览器和服务端nodejs。

然后它需要预加载微软的Arial Unicode字体,以解决中文、日文等Unicode字符乱码的问题,这意味着每次生成之前要下载一个十几兆的字体。jsPDF添加字体比较简单,直接通过addFont的API下载一个远程的ttf字体文件,然后set这个Font就好了,不需要对字体进行预转换。(参考图4)

jsPDF没有提供文字自动换行和自动分页的功能,需要自己算页码,这个稍微有点麻烦,不过它有一些API可以帮助计算文字宽度,所以可以自己实现。

jsPDF的splitTextToSize API可以把文字按照宽度自动换行,借助它根据页面宽度把文字折成一行行。然后每次换行时,都可以根据行高计算位置,如果超过了页面高度,就可以新增一页。(参考图5)

还有个麻烦的就是如何在文字中添加链接。twitter-thread的实现也不复杂,就是先将普通文字和链接分开,然后在生成pdf的时候,记录2个位置,一个是x坐标,一个是y坐标,每次画一段文字或者链接,都先从当前x和y坐标开始,画的时候借助splitTextToSize换行,画完后更新x和y。(参考图6)

然后就是解决画图片的问题,jsPDF提供了addImage的API,支持远程图片,不需要做额外的base64操作,非常方便。twitter-thread在画图片时,先看图片宽度是不是超过页面宽度,超过就按比例缩小,再检查高度,如果高度超过页面高度,就按比例缩小高度。在画图片之前,如果图片太高会导致分页,就先分页,另起新页画图。(参考图7)

简单写了个Demo 参考(图9~图14):
https://t.cn/A6XWKFvl

德国拉锋RAVENOL EFS 0W-20:BMW LL-17 FE+认证机油#拉锋USVO##拉锋RAVENOL##机油[超话]##汽车[超话]##拉锋ravenol##汽车知识#

BMW LL-17 FE+是目前宝马最新的一种机油认证标准,由于国六排放的汽油发动机带有颗粒捕集器(GPF),所以须使用符合Long Life-17FE+ 0W-20标准的机油

RAVENOL EFS SAE 0W-20是一种基于 PAO(聚 α 烯烃)的全合成发动机油,采用特殊的 USVO® 和经过验证的 CleanSynto® 技术,适用于带和不带涡轮增压和直接喷射的汽车发动机(汽油和柴油)。

借助 USVO® 技术,实现了极高的粘度稳定性,在利用聚合物粘度改进剂的优点的同时避免了聚合物粘度改进剂的缺点。并且我们还改进了发动机保护、性能、优化发动机清洁度功能并延长换油周期。USVO® 技术使产品在整个更换周期内没有剪切损失成为可能,同时具有极强的抗氧化性。这种独特的技术有助于更快地将机油输送到要润滑的发动机部件,从而最大限度地减少摩擦,同时保持发动机清洁和高效。

· 特性
· 确保尽可能快地润滑发动机
· 由于使用了基础油和添加剂,因此具有较高的燃油经济性
· 即使在不利的操作条件下,也能防止污泥、结焦、上漆和腐蚀
· 液压升降器的功能在所有温度下都能得到保证。
· 发动机机油稳定,无氮氧化物氧化。
· 良好的烟尘颗粒吸收和分散

EFS 0W-20还有如下认证
ILSAC GF-5、API SN PLUS (RC);ACEA C5

宝马 BMW LONGLIFE-17 FE+

奔驰 MB 229.71

沃尔沃 VOLVO VCC RBS0-2AE

Ravenol拉锋机油中国独家总代理2022
拉锋(上海)贸易有限公司
德国Ravenol旗舰店-京东商城
www.ravenol.de

德国拉锋RAVENOL多脂类终极全合成USVO系列 SSV 0W-30#拉锋USVO##拉锋RAVENOL##机油[超话]##汽车[超话]##拉锋ravenol#

RAVENOL SSV SAE 0W-30
所用技术:Clean Synto®, USVO®
品质等级:ACEA A5/B5, API SL
原厂认证:MB-Freigabe 229.6, VOLVO VCC 95200377

RAVENOL SSV SAE 0W-30是一种基于PAO(聚α烯烃)的全合成发动机油,具有USVO®和经过验证的Cleansynto®清洁合成技术,适用于带有和不带有涡轮增压和直接喷射的汽车发动机(汽油和柴油)。
由于采用了USVO®技术,SSV SAE 0W-30获得了极高的粘度稳定性,在利用它们的同时避免了聚合物粘度改进剂的缺点。这样不仅可以改善发动机保护性能,还能保证发动机清洁度和排油间隔。
USVO®技术使产品在整个更换间隔内没有剪切损失,并且对氧化极其稳定。这项独特的技术有助于更快地为要润滑的发动机零件提供机油,从而最大程度地减少摩擦并同时保持发动机清洁高效。

RAVENOL SSV SAE 0W-30 能够确保最大限度地减少摩擦、磨损和燃料消耗,并具有极佳的冷起动特性。
凭借其新配方,SSV SAE 0W-30 即使在极高的操作温度下也能达到安全润滑层,防止腐蚀和因蒸发(氧化)或焦化而损失石油。出色的冷启动行为可确保冷态流动阶段的最佳润滑安全性。
RAVENOL SSV SAE 0W-30 能够节省大量燃料,通过减少排放来保护环境。按照制造商规定延长换油间隔。

RAVENOL SSV SAE 0W-30可提供:
-普遍应用于所有现代Otto和柴油机。
-即使在零下30度的温度下也能快速通过发动机的机油。
-蒸发斜度低,导致油耗低。
-即使在不利的使用条件下,也能防止堵塞、腐蚀、腐蚀和腐蚀。
-液压滑块的功能在所有温度下均得到保证。
-在燃烧室、活塞环区和阀门中不存在与油有关的沉积物。
-整个换油间隔内未改变粘度;高粘度指数。
-密封材料的中立性。
-与所有商用机油混合。不需要冲水功能。

Ravenol拉锋机油中国独家总代理2022
拉锋(上海)贸易有限公司
德国Ravenol旗舰店-京东商城
www.ravenol.de


发布     👍 0 举报 写留言 🖊   
✋热门推荐
  • 四七绝.期待张子耀南枝一夜转阳和,千朵红梅馥岌峨。七七绝.枯荷张子耀韶颜不在芬芳逝,瘦骨英风立石塘。
  • 当龚竣不好意思地上前来向他要微信的时候张晢翰就沦陷了,哪里蹦出来这么个可爱的人啊,又害羞又直接,干净得好像跟他不是一个世界似的。”周围一群荷尔蒙上头的A都开始嬉
  • #天文酷图# [2010年08月30日]【 火星的卡曼奇露头-过去曾有利于生命存在 】 火星是否曾存在生命呢?现今,任何地球上的动植物都无法生存在严苛的火星环
  • 在荡秋千的清欢,我见犹怜~自带清冷感的女演员,这可是六识不全的小璇玑啊,袁冰妍绝了!在荡秋千的清欢,我见犹怜~自带清冷感的女演员,这可是六识不全的小璇玑啊,袁冰
  • -追星小记每次都说不搞选秀啦再也不要真情实感啦结果看到这些还是会流泪在怀念什么呢 在怀念2018年那场雪 在怀念除夕夜的烟花 在怀念每一个站姐的喊话 在怀念每一
  • 紫霞是每个人的梦中情人,可惜她太完美,为了爱情她可以不顾一切,我们每个人都曾年轻过,疯狂过,可惜当孙悟空终于知道自己爱她的时候已经晚了,因为孙悟空已经不在年轻疯
  • 补肺气的话,日常食疗可以选择「竹荪」其色白入肺,可以补肺气、养肺阴,以缓解动则气喘、自汗等症,不妨试试这款 竹荪乌鸡汤。#中医[超话]#10种肾虚的表现及治疗1
  • 转专业之后很多事情都不是很顺利但是真的很幸运遇到了宋姐 有宋姐在我做了好多之前不敢做的事情 搬来第一天宋姐就给我指路然后告诉我哪家店好吃 半夜经常跟宋姐吐槽男
  • 成都所在的四川省去年人口仅增长1万,这说明成都对全省人口吸引力仍然巨大。数据显示,2021年一年,北京常住人口数量减少0.4万,上海人口仅增长1.07万,广州人
  • 读书学典:《论语.乡党》10.22 朋友死,无所归,曰:“于我殡。” ▲无所归:无亲属可归。”孔安国:“重朋友之恩。无所归,言无亲昵。”张栻:“无所归,谓无亲
  • 此生有妮真好,走过千山红尘,历经花谢花开,才发现,纵使人间万千相遇,也没有谁能够替代尼。最近几年来,在这片神奇的净土之上,在澄净清澈的蓝天和细碎洁白的云朵之外,
  • ”一护“我嘛,也不知道做男主角到底是要做什么,动脑筋的事我也不想去思考,虽然我们这里有个声音和佐助一样的家伙,和我基情四射,不过我救了露琪亚,真心的觉得与她相见
  • 。。
  • 一些已经存在经前期综合症的妇女,压力过大的情况下,内分泌会出现异常,头痛和身体肿胀的病症会比平常要更严重。一些已经存在经前期综合症的妇女,压力过大的情况下,内分
  • 如果爱美把15岁时遇到25岁的高寿当成一个怪叔叔,不相信他讲的故事,那这后面的事情可能也就不会发生了,就可以成功规避永别的悲伤。当然最心痛的还是爱美,15岁的时
  • 这时候你就需要结合公司的实力,确定自己属于大中小公司中的哪一家,这些蛋糕是否真的能吃到。相信很多卖家也看到了这个问题,就是售价太高,导致了一个很现实的问题,就是
  • 既然如此连人这么不可思议的生物都能诞生即使出现了比我们更神奇的一些现象或事物也并不是不能接受或者说不也是正常的吗?我们不是相信自己看到的吗那就请用我们的凡眼看看
  • 二、接受捐赠物资情况:1、遵化市隆泰商行 :价值28992元。截至3月27日18时,遵化市红十字会累计接受疫情防控捐赠款物总价值人民币 4736417.44元,
  •   就像是,在最后的决策阶段,东莞外贸业务员也会去思考,自己和Viki妹妹在一起的收益,真的远远超过了自己即将面临的损失吗? 假如是后者,这个时候,我们需要做的
  • #90后们竟已经秃了# #风湿骨病# #美容大王# #远离亚健康# 如何合理购买保健品  保健食品是吃到身体里面的东西,先不说买到假冒伪劣产品,即使是吃正牌的食