iTextSharp中的PDF坐标系

时间:2015-09-14 08:22:35

标签: pdf itextsharp itext

现在我正在使用iTextSharp从PDF中提取线条和矩形。我使用的方法如下:

PdfReader reader = new PdfReader(strPDFFileName);
var pageSize = reader.GetPageSize(1);
var cropBox = reader.GetCropBox(1);
byte[] pageBytes = reader.GetPageContent(1);
PRTokeniser tokeniser = new PRTokeniser(new(RandomAccessFileOrArray(pageBytes));
PRTokeniser.TokType tokenType;
string tokenValue;
CoordinateCollection cc = new CoordinateCollection();
while (tokeniser.NextToken())
{
   tokenType = tokeniser.TokenType;
   tokenValue = tokeniser.StringValue;

   if (tokenType == PRTokeniser.TokType.OTHER)
   {
      if (tokenValue == "re")
      {
         if (buf.Count < 5)
         {
            continue;
         }

         float x = float.Parse(buf[buf.Count - 5]);
         float y = float.Parse(buf[buf.Count - 4]);
         float w = float.Parse(buf[buf.Count - 3]);
         float h = float.Parse(buf[buf.Count - 2]);
         Coordinate co = new Coordinate();
         co.type = "re";
         co.X1 = x;
         co.Y1 = y;
         co.W = w;
         co.H = h;
         cc.AddCoordinate(co);

      }


    }
 }

代码工作正常。但是我遇到了关于PDF测量单元的问题。来自reader.getPageSize的值是(619 * 792),这意味着页面大小是691 * 792,但是当我从tokeniser获取矩形时,x和y总是超过页面大小,它的值总是x = 150,Y = 4200,W = 1500,H = 2000。

我相信reader.getPageSize和tokeniser的测量单位是不同的。

那么请你帮忙告诉我如何转换它们?

0 个答案:

没有答案