svg text文字

背景介绍:最近研究svg生成pdf,那我遇到的问题是我们前端编辑器编辑文字的时候有文字框,文字可以左中右对齐,研究svg的应该知道svg文字没有文字框属性,并且svg文字的原点是左下角,而css的文本框对齐是左上角,我们应该都可以想到用text+rect的组合来实现文字框,但问题是文字的原点如何确定成了问题,那有没有办法把text文字的原点从左下角变换到右上角呢?这个问题我在itext里找到了答案 (当然也是自己看svg的文档不够用心,漏掉了matrix这个,因为文档里说如果你没有很好的数学功底就不要考虑使用这个。。。呃呃),transform="matrix(1, 0, 0, 1, 0,35)这个可以把文字原点矩阵变换到左下角,这时候通过text-anchor 和指定text x,y(x=rect的x值+width,y=rect的y+height)的方式实现文本的右对齐,如下是一个带有边框的左对齐的文本框实现。

<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="text/ecmascript" width="640" zoomAndPan="magnify" contentStyleType="text/css" height="1008" preserveAspectRatio="xMidYMid meet" version="1.0">
   <g>
      <rect x="0" y="200" fill="rgb(248,331,28)" width="490" height="42" stroke="red" stroke-width="5" />
      <text x="490" font-size="35" y="200" text-decoration="line-through" fill="#000000" font-family="Microsoft YaHei" font-style="italic" font-weight="bold" text-anchor="end" transform="matrix(1, 0, 0, 1, 0,35)">我是super</text>
   </g>
</svg

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值