我有一个现有的PDF,它将此作为最后一个矩阵转换:
q 0.70711 0.70711 -0.70711 0.70711 141.73 274.96 cm 1 0 0 1 -141.73 -274.96 cm(旋转45度,有些过渡)
我使用PdfStamper将图像插入OverContent(使用方法GetOverContent) . 问题是,最后一次转换设置了45度旋转,因此条形码也会旋转 . 我无法重置此矩阵 . 我甚至无法获得最后的转换矩阵 .
我已经尝试过PdfReaderContentParser来获取所有矩阵并将它们相乘,这样我就可以得到倒置矩阵来使用带有这个反转矩阵的ConcatCTM再次生成Identity矩阵,但解析器不会返回所有矩阵 . 它只能获取图像的矩阵,而不能获取文本的矩阵 .
我已经花了几个小时尝试不同的解决方案(创建模板,图层......),没有工作,一切都根据最后一个矩阵旋转 .
如何将矩阵重置回现有PDF中的标识?因此,PdfStamper插入的条形码不会旋转45度 .
请求不建议为条形码图像设置-45度旋转,它不会解决任何问题,因为PDF可以有或没有最后的旋转矩阵 .
我真的需要将转换矩阵重置为OverContent的单位矩阵 .
非常感谢你们...
编辑:这是完整的内容:
q 0.70711 0.70711 -0.70711 0.70711 141.73 274.96 cm 1 0 0 1 -141.73 -274.96 cm
问BT 141.73 274.96 Td 5 Tr(某些文字)Tj ET
Q
0.57瓦
BT / F1 20.00 Tf ET
q 1.00000 0.00000 0.00000 1.00000 155.91 246.61 cm 1 0 0 1 -155.91 -246.61 cm
问BT 155.91 246.61 Td 5 Tr(某些文字)Tj ET
Q
1 回答
您的PDF有语法问题 . 我看到"save state"运算符
q
,但我没有看到"restore state"运算符Q
.代替:
你应该有:
好吧,实际上,如果您在共享的PDF语法后面没有任何其他内容,则应该删除完整的代码段,因为引入坐标系转换没有意义,然后对其执行任何操作都没有意义 .
如果要为此特定PDF修复此问题,可以执行以下操作:
这将恢复图形状态(并在您放置时“重置矩阵”) . 不要对所有PDF执行此操作,仅针对此错误的PDF .
Update:
您说代码的语法如下所示:
这段代码错了 . 创建此PDF的人使用的是蹩脚的工具,或者他以非常糟糕的方式使用了一个好工具 . 正确的语法是:
您可以像这样解决问题:
现在
q
/Q
序列是 balancer 的 . 我正在添加数字以显示q
与哪个Q
对应:这个语法是错误的(显然),但数字显示为什么缺少两个
Q
语句 .