绘制的垂直线不会出现

时间:2014-12-05 01:34:42

标签: itext

我正在使用以下代码在PDF中绘制一条垂直线。

    logger.info("x1, y1: " + x + ", " + y1);
    logger.info("x2, y2: " + x + ", " + y2);

    dcUnder.saveState();
    dcUnder.setColorStroke(BaseColor.RED);
    dcUnder.setLineWidth(2f);
    dcUnder.moveText(x, y1);
    dcUnder.lineTo(x, y2);
    dcUnder.closePath();
    dcUnder.stroke();
    dcUnder.restoreState();

    logger.info("Line Drawn");

代码上方和下方的记录器正在打印,因此我知道代码正在执行。但页面上没有行。我正在尝试复制iText in Action一书中的例子,我没有看到任何重大差异。

我在代码中使用LineSeparator并使用相同的dcUnder PdfContentByte,它运行正常。我不明白为什么这个代码在我手动绘制时失败了。没有错误或例外,页面上没有任何行。我想我错过了一些简单的东西,但我需要帮助找到它。

谢谢!

注意:将线宽设置为2,将颜色设置为红色只是我正在使用的调试设置,直到我弄清楚为什么它没有出现。

1 个答案:

答案 0 :(得分:2)

如果您将moveText替换为moveTo,您将看到您的线条(给定合理的坐标......),例如

    float x = 100;
    float y1 = 50;
    float y2 = 550;

    PdfContentByte dcUnder = writer.getDirectContentUnder();

    dcUnder.saveState();
    dcUnder.setColorStroke(BaseColor.RED);
    dcUnder.setLineWidth(2f);
    dcUnder.moveTo(x, y1);
    dcUnder.lineTo(x, y2);
    dcUnder.closePath();
    dcUnder.stroke();
    dcUnder.restoreState();

创建

enter image description here

这对应于iText in Action,2nd edition中的样本。