【问题标题】:Problem with coordinate system and displaced Text in different PDFs using iTextSharp使用 iTextSharp 在不同 PDF 中的坐标系和置换文本问题
【发布时间】: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 中完全相同的坐标创建:

感谢任何帮助。

【问题讨论】:

    标签: c# pdf itext coordinate-systems


    【解决方案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 创建器裁剪的,但看起来修剪空间仍然存在并计入坐标。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-02
      • 1970-01-01
      • 2018-04-25
      • 1970-01-01
      • 2011-11-22
      • 2017-08-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多