iText-pdfanotation.createInk

iText-pdfanotation.createInk,itext,Itext,我试图解析XFDF中的注释数据,并使用iText库绘制它。我想画像附加图像一样的注释 下面是我测试PdfAnnotation.createInk函数的代码,但在运行代码后它不起作用 我有谷歌和阅读的文件,但没有太多的信息提供。有什么建议和建议吗?谢谢 // step 1 Document document = new Document(PageSize.A4); // step 2 PdfWriter writer = PdfWriter.getInstance(docu

我试图解析XFDF中的注释数据,并使用iText库绘制它。我想画像附加图像一样的注释

下面是我测试PdfAnnotation.createInk函数的代码,但在运行代码后它不起作用

我有谷歌和阅读的文件,但没有太多的信息提供。有什么建议和建议吗?谢谢

// step 1
    Document document = new Document(PageSize.A4);
    // step 2
    PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(destFile));
    // step 3
    document.open();

    PdfContentByte pcb = new PdfContentByte(writer);
    pcb.setColorStroke(BaseColor.RED);
    Rectangle rect = new Rectangle(52.92f, 397.56f, 173.36f, 530.67f);
    float[][] inkList = {{61.736111f,530.669250f},{61.295139f,525.820984f},{61.295139f,518.768860f},
            {61.295139f,505.986969f},{61.295139f,490.560547f},{61.295139f,470.726562f},{59.972221f,452.214844f},
            {57.767361f,434.143890f},{56.003471f,418.276703f},{53.357639f,404.172516f},{51.593750f,391.390625f},
            {50.711807f,382.134766f},{49.829861f,376.845703f}
    };

    //float inkList[][] =
    PdfAnnotation an = PdfAnnotation.createInk(writer, rect, "", inkList);
    an.setPage(1);
    an.setColor(BaseColor.RED);
    an.setFlags(PdfAnnotation.FLAGS_PRINT);

    writer.addAnnotation(an);
    //Step 5
    document.close();

输出PDF似乎不包含注释,因为定义的注释只是孤立点的集合

pdfantotation.createInk
float[][]
参数对应于Ink注释字典的InkList条目:

InkList数组(必需)由n个数组组成的数组,每个数组表示一个冲程路径。每个 阵列应为一系列交替的水平和垂直坐标 默认用户空间,指定沿路径的点。绘制时,将显示 各点应以直线或曲线的形式连接在一起 依赖于实现的方式

因此,在OPs阵列的情况下

float[][] inkList = {{61.736111f,530.669250f},{61.295139f,525.820984f},{61.295139f,518.768860f},
        {61.295139f,505.986969f},{61.295139f,490.560547f},{61.295139f,470.726562f},{59.972221f,452.214844f},
        {57.767361f,434.143890f},{56.003471f,418.276703f},{53.357639f,404.172516f},{51.593750f,391.390625f},
        {50.711807f,382.134766f},{49.829861f,376.845703f}
};
我们收集了13条路径,每条路径只包含一个点。所以,什么都没有画出来

但是,如果我们将所有点合并到一条路径中

    float[][] inkList = {{61.736111f,530.669250f,61.295139f,525.820984f,61.295139f,518.768860f,
            61.295139f,505.986969f,61.295139f,490.560547f,61.295139f,470.726562f,59.972221f,452.214844f,
            57.767361f,434.143890f,56.003471f,418.276703f,53.357639f,404.172516f,51.593750f,391.390625f,
            50.711807f,382.134766f,49.829861f,376.845703f}
    };
结果是:


这看起来像问题屏幕截图中“H”的左行。

但它不起作用-会发生什么情况?输出pdf而不做任何注释。我本周将不再任职。如果你的问题在下周初还没有得到回答,我会调查一下。谢谢。你有没有任何参考资料说明如何使用PdfAnnotation.createInk函数?此外,你知道如何设置批注的线宽吗?谢谢。祝你好运。