2017-02-17 37 views
3

我正在寻找用于布局PDF文档的选项,该文档必须非常整齐和准确。PDFBox:在写入PDPageContentStream或PDPage时剪辑文本

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

我想将文本剪辑到允许的精确区域(这不是包装或“缩进”,因为文本是大部分时间数字)。

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

enter image description here

谢谢, JM

回答

3

首先创建一个路径,例如与PDPageContentStream.addRect()。然后致电PDPageContentStream.clip()。这将与您的路径相交的当前剪贴路径。然后绘制任何你想要裁剪的东西。

不要忘记把整个东西放在saveGraphicsState()restoreGraphicsState()之间,否则由于再次相交,剪切路径在某个时候会变空。

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

+0

Hhmmm,我刚刚看到所有'PDPageContentStream'剪切方法都自动为路径执行'n'。为什么?为什么不同时抚摸和/或填充? – mkl

+0

@mkl“它总是这样的”:-)我没有看到有必要改变这种情况,我从来没有在我看过的PDF中看到除了“n”之外的其他任何东西。 –

+0

Thxs @TilmanHausherr,它像一个魅力。如果可以的话,我想知道为什么在PDFBox中没有高级功能。我想我们都必须发展自己的功能,左对齐,右对齐,裁剪,对齐文本和其他。我很惊讶这不是套件的一部分。任何想法为什么? – jmc34