PDFBox:写入 PDPageContentStream 或 PDPage 时剪切文本

PDFBox: clipping text when writing to PDPageContentStream or PDPage

我正在研究布局 PDF 文档的选项,它必须非常整洁和准确。

该文档是一种报告,在现有背景上显示数据。 在某些情况下,文本比它应该适合的房间大。

我想将文本裁剪到允许占用的精确区域(这不是换行或 "elipsizing",因为文本大部分时间都是数字)。

这是我正在寻找的效果(这是一个例子,我不是在考虑缩短字符串,我希望字符串保持不变,但实际上被剪裁到其允许的区域之外)。

谢谢, JM

首先创建一个路径,例如PDPageContentStream.addRect()。然后调用PDPageContentStream.clip()。这将使当前剪切路径与您的路径相交。然后画任何你想剪的东西。

不要忘记将整个东西放在 saveGraphicsState()restoreGraphicsState() 之间,否则你的剪切路径有时会因为再次相交而变空。

要在开发时验证您的剪切路径是否正确,请将 clip() 调用替换为 stroke() 以便您可以看到它的位置。