Java 路径构造或图形操作符是';不允许在文本对象内部使用

Java 路径构造或图形操作符是';不允许在文本对象内部使用,java,itextsharp,itext,Java,Itextsharp,Itext,当我试图用下面的代码(PdfContentByteobject)使用itextpdf-5.5.4.jar画一条线时 contentByte.moveTo(55755)。这是在抛出异常 com.itextpdf.text.exceptions.IllegalPdfSyntaxException: Path construction or drawing operators aren't allowed inside a text object. at com.itextpdf.text.p

当我试图用下面的代码(
PdfContentByteobject
)使用itextpdf-5.5.4.jar画一条线时

contentByte.moveTo(55755)
。这是在抛出异常

com.itextpdf.text.exceptions.IllegalPdfSyntaxException: Path construction or drawing operators aren't allowed inside a text object.
    at com.itextpdf.text.pdf.PdfContentByte.moveTo(PdfContentByte.java:776)
    at DemoS.TextPostion.createPdfHeader(TextPostion.java:652)
    at DemoS.TextPostion.fillCelldata(TextPostion.java:352)
    at DemoS.TextPostion.createPDF(TextPostion.java:175)
    at DemoS.TextPostion.main(TextPostion.java:128)
但是同样的代码在itextpdf-5.0.6.jar上运行良好有什么建议吗?
如何使用itextpdf-5.0.6.jar完成相同的工作。

正如注释中提到的mkl,在绘制线条之前,我们先结束这一点,然后在绘制之后开始文本对象。像-

...
contentByte.endText();
contentByte.moveTo(50, 637);
contentByte.lineTo(5400, 637);
contentByte.stroke();
contentByte.beginText();
但是,如果您正在使用stroke并在
contentByte.stroke()之后调用
beginText()
,请小心


这就解决了我的问题。

我认为您需要显示更多的代码。.消息“文本对象中不允许使用路径构造或绘图运算符”是正确的,如果您在文本对象中,则必须在绘制线条之前执行endText。您可以先执行beginText,然后继续绘制文本。是。你是对的,但是同样的代码在itextpdf-5.0.6.jar上运行良好?@mlk:谢谢你:)但是同样的代码在itextpdf-5.0.6.jar上运行良好-它可能在itextpdf-5.0.6上运行良好,但由于它创建了损坏的PDF,所以工作不好。大多数PDF查看器都会显示损坏的PDF,但它仍然是损坏的。您的代码在旧版本中工作,但它创建的PDF违反了ISO标准。