我正在使用以下代码在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,将颜色设置为红色只是我正在使用的调试设置,直到我弄清楚为什么它没有出现。
答案 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();
创建
这对应于iText in Action,2nd edition中的样本。