使用 iTextSharp 在不同 PDF 中的坐标系和置换文本问题
Posted
技术标签:
【中文标题】使用 iTextSharp 在不同 PDF 中的坐标系和置换文本问题【英文标题】:Problem with coordinate system and displaced Text in different PDFs using iTextSharp 【发布时间】:2009-05-14 12:40:04 【问题描述】:我正在使用 iTextSharp 和 .NET 3.5 SP1(在 C# 中,您可以猜到)并使用 PdfStamper
类修改一些现有的 PDF。现在我有两个问题:
变换坐标系
在我看来,iTextSharp 使用(后记?)点作为测量单位,但我想将这些坐标转换为毫米。现在,实现这一目标的最佳方法是什么?
查看文档发现了以下方法:
PdfContentByte cb = new PdfContentByte();
System.Drawing.Drawing2D.Matrix scale = new System.Drawing.Drawing2D.Matrix(
0.352777778, 0, 0.352777778, 0, 0, 0); // 1 point = 0.352777778 mm
cb.Transform(scale);
我希望我得到了正确的转换矩阵。但问题是:没有System.Drawing.Drawing2D
大会!这个程序集是被丢弃还是发生了什么?我该怎么做才能将 iTextSharp 的坐标转换为毫米。我是不是走错路了?
PDF 中的文本在使用相同坐标的不同 PDF 中被置换
我注意到,在修改两个不同具有相同内容的PDF文件时,相同的坐标发生了偏移,并且文本没有被放置在完全相同的位置。这是什么原因造成的,我该如何预防?
这是第一个 PDF:
这是第二个 PDF,使用 iTextSharp 中完全相同的坐标创建:
感谢任何帮助。
【问题讨论】:
【参考方案1】:但问题是:没有 System.Drawing.Drawing2D 组装!曾是 这个程序集掉了或者发生了什么 给它?我能做些什么来改变 iTextSharp 的坐标到 毫米。我是不是走错路了 在这里?
http://msdn.microsoft.com/en-us/library/system.drawing.drawing2d.matrix.aspx(在 System.Drawing.dll 中)
【讨论】:
如何使用这个类?我已经插入了“使用 System.Drawing;”声明,但它仍然无法识别 System.Drawing.Drawing2D.Matrix。我不确定“在 System.Drawing.dll 中”是什么意思。我必须以其他方式包含此内容吗? 你必须引用 System.Drawing.Dll。在您的项目中,找到 References 文件夹。右键单击,添加引用,然后五分钟后,在第一个选项卡中搜索 System.Drawing.Dll。现在把我的 2 分还给我! 一旦你引用了它,你就可以像例子中一样使用它。他们正在做矩阵变换,这并不是最容易学习或理解的事情。如果你想做的比示例代码演示的更多,恐怕你必须自己做一些阅读。 很高兴,但您必须先编辑您的帖子,然后我才能投票。最好将您的解释从帖子中的评论中放入,以便其他用户直接看到。谢谢! :) 1)他们可以看到它 2)它的基本 3)我很懒【参考方案2】:好的,我解决了第二个问题,尽管使用了相同的坐标,但文本被移位。
事实证明,第一个 PDF 包含一些不可见的修剪空间,第二个没有。修剪空间不可见,因为视图空间是使用 PDF 创建器裁剪的,但看起来修剪空间仍然存在并计入坐标。
【讨论】:
以上是关于使用 iTextSharp 在不同 PDF 中的坐标系和置换文本问题的主要内容,如果未能解决你的问题,请参考以下文章