使用iTextSharp在不同PDF中使用坐标系和移位文本的问题

问题描述 投票:1回答:2

我正在使用iTextSharp和.NET 3.5 SP1(在C#中,你可以猜到)并使用PdfStamper类修改一些现有的PDF。现在我有两个问题:

转换坐标系

在我看来,iTextSharp使用(postscript?)点作为度量单位,但我想将这些坐标转换为毫米。现在,实现这一目标的最佳方法是什么?

在文档中查看了以下方法:

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:

alt text

这是使用iTextSharp中完全相同的坐标创建的第二个PDF:

alt text

任何帮助表示赞赏。

c# pdf itext coordinate-systems
2个回答
1
投票

但问题是:没有System.Drawing.Drawing2D汇编!这个集会被丢弃了或发生了什么事吗?我该怎么做才能将iTextSharp的坐标转换为毫米。我在错误的路上吗?

http://msdn.microsoft.com/en-us/library/system.drawing.drawing2d.matrix.aspx(在System.Drawing.dll中)


0
投票

好吧,尽管使用了相同的坐标,我解决了文本被移位的第二个问题。

事实证明,第一个PDF包含一些不可见的修剪空间,第二个没有。修剪空间不可见'因为使用PDF创建者裁剪了视图空间,但是看起来修剪空间仍在那里并计算坐标。

© www.soinside.com 2019 - 2024. All rights reserved.