用podofo为pdf文档添加倾斜透明文字水印
前言
在podofo中可以通过 PdfPainter::SetTransformationMatrix,PdfPainter::SetExtGState,PdfPainter::drawText三个方法组合,来实现倾斜透明文字水印。但这种方法是有局限性的。因为没有根据页面自身的转换矩阵做出调整。这可能会导致用同样的代码给不同的pdf添加水印,会出现水印文字颠倒的问题。
要解决这个问题,我们首先要获取页面的转换矩阵。获取的方法可以参看《Podofo获取页面方向(转换矩阵)设置》。
那获取了转换矩阵,又该如何设置自己的转换矩阵呢。
本文将就以上问题进行说明。
一、预备知识
什么是转换矩阵,请先参看PDF坐标系统,PDF格式分析(五十六)Coordinate Systems 坐标系。
二、PdfPainter::SetTransformationMatrix的详细解释
官方文档给的说明:
/** Set the transformation matrix for the current coordinate system
* See the operator 'cm' in PDF.
*
* The six parameters are a standard 3x3 transformation matrix
* where the 3 left parameters are 0 0 1.
*
* \param a scale in x direction
* \param b rotation
* \param c rotation
* \param d scale in y direction
* \param e translate in x direction
* \param f translate in y direction
*
* \see Save()
* \see Restore()
*/
即使将这段英文完美的翻译完,仍然不知所云。
经过我的实际测试,各个参数的中文解释是这样的
/*SetTransformationMatrix的参数含义:
第一个:设置x轴的扩张系数。如果要保持与旋转前的坐标系的单位长度一致,
则要设置对应的余弦值,如逆时针旋转30度,要设置为cos(30度)=0.8660254
第二个:设置Y轴的倾斜度,如果要逆时针旋转30度,则设置为sin(30度)=0.5
第三个:设置X轴的倾斜度,如果要逆时针旋转30度,则设置为-sin(30度)=-0.5
第四个:设置Y轴的扩张系数。如果要保持与旋转前的坐标系的单位长度一致ÿ