我以为我理解你的问题,但你对我的反问题的回答是令人困惑的,所以让我给你一个解释你的问题的例子。
假设你有这样的文字:
我也有一个矩形的坐标:new Rectangle(100, 500, 200, 600);
和偏移:在矩形移动所有10个点的左侧和2点的底部,像这样:
这是很容易实现的。看看在CutAndPaste例如:
public void manipulatePdf(String src, String dest)
throws IOException, DocumentException {
// Creating a reader
PdfReader reader = new PdfReader(src);
// step 1
Rectangle pageSize = reader.getPageSize(1);
Rectangle toMove = new Rectangle(100, 500, 200, 600);
Document document = new Document(pageSize);
// step 2
PdfWriter writer
= PdfWriter.getInstance(document, new FileOutputStream(dest));
// step 3
document.open();
// step 4
PdfImportedPage page = writer.getImportedPage(reader, 1);
PdfContentByte cb = writer.getDirectContent();
PdfTemplate template1 = cb.createTemplate(pageSize.getWidth(), pageSize.getHeight());
template1.rectangle(0, 0, pageSize.getWidth(), pageSize.getHeight());
template1.rectangle(toMove.getLeft(), toMove.getBottom(),
toMove.getWidth(), toMove.getHeight());
template1.eoClip();
template1.newPath();
template1.addTemplate(page, 0, 0);
PdfTemplate template2 = cb.createTemplate(pageSize.getWidth(), pageSize.getHeight());
template2.rectangle(toMove.getLeft(), toMove.getBottom(),
toMove.getWidth(), toMove.getHeight());
template2.clip();
template2.newPath();
template2.addTemplate(page, 0, 0);
cb.addTemplate(template1, 0, 0);
cb.addTemplate(template2, -20, -2);
// step 4
document.close();
reader.close();
}
如果这不是你想要的。如果你想检测实际的单词并移动这些单词,那么你有一个问题。在那种情况下,我们正在讨论一个项目,这个项目很容易花费几个月的时间才能正确完成,而且你的简短问题很大程度上不足以知道在可以想象的许多边缘情况下该怎么做。
只是要清楚:你想要在矩形区域内移动文本。这是否意味着您知道该矩形的**坐标**,并且您想要看起来好像该矩形已被剪切并放置在另一个位置? – 2015-02-06 15:02:42
不,不是图形效果。它可能会更加混乱。我有坐标,并且我发现“在”内的任何文本块都应该在x和y轴上移动给定数量的点。我发誓我上下读了你的书,但仍然无法将我的头围绕在工作流程中这个任务:) – 2015-02-06 19:10:37
你说*不*但有什么区别? – mkl 2015-02-06 20:00:31