【问题标题】:iTextSharp GetFieldPositions to SetSimpleColumniTextSharp GetFieldPositions 到 SetSimpleColumn
【发布时间】:2011-08-17 16:12:54
【问题描述】:

我正在使用最新版本的 iTextSharp:http://sourceforge.net/projects/itextsharp/

在使用 GetFieldPositions(fieldName) 获取某些 AcroField 的位置后,我正在尝试使用 ColumnText.SetSimpleColumn。

我能找到的所有示例都显示 GetFieldPositions 返回一个 float[],但现在情况似乎不再如此。它现在似乎正在返回 IList,它不会(根据 Visual Studio)隐式转换为 float[]。

在 0 索引处的返回值内部是一个位置成员,它是一个 Rectangle,但是由于我看到的示例对返回的 float[] 执行数学运算,我不确定 GetFieldPostions 中的返回值有哪些值在使用 SetSimpleColumn 时使用。这是我引用的一篇文章:http://blog.dmbcllc.com/2009/07/08/itextsharp-html-to-pdf-positioning-text/

接受的最简单答案是如何将值从 GetFieldPositions 转换为 SetSimpleColumn。

谢谢!

【问题讨论】:

    标签: c# .net pdf itextsharp itext


    【解决方案1】:

    我认为这样做有两个原因。 1),GetFieldPositions() 实际上可以返回多个项目,因为从技术上讲,您可以拥有多个具有相同名称的字段和 2),原始数组方法需要知道“魔术数组数字”才能找到什么是什么。您看到的所有代码几乎都假设GetFieldPositions() 只返回一个项目,99% 的情况下都是如此。您现在可以使用普通属性,而不是使用索引。

    所以您发布的链接中的代码:

    float[] fieldPosition = null;
    fieldPosition = fields.GetFieldPositions("fieldNameInThePDF");
    left = fieldPosition[1];
    right = fieldPosition[3];
    top = fieldPosition[4];
    bottom = fieldPosition[2];
    if (rotation == 90)
    {
        left = fieldPosition[2];
        right = fieldPosition[4];
        top = pageSize.Right - fieldPosition[1];
        bottom = pageSize.Right - fieldPosition[3];
    }
    

    应转换为:

    IList<AcroFields.FieldPosition> fieldPositions = fields.GetFieldPositions("fieldNameInThePDF");
    if (fieldPositions == null || fieldPositions.Count <= 0) throw new ApplicationException("Error locating field");
    AcroFields.FieldPosition fieldPosition = fieldPositions[0];
    left = fieldPosition.position.Left;
    right = fieldPosition.position.Right;
    top = fieldPosition.position.Top;
    bottom = fieldPosition.position.Bottom;
    if (rotation == 90)
    {
        left = fieldPosition.position.Bottom;
        right = fieldPosition.position.Top;
        top = pageSize.Right - fieldPosition.position.Left;
        bottom = pageSize.Right - fieldPosition.position.Right;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-29
      • 1970-01-01
      • 2011-02-18
      • 1970-01-01
      • 2012-01-04
      • 1970-01-01
      • 2017-09-30
      • 2012-05-17
      相关资源
      最近更新 更多