我以爲我理解你的問題,但你對我的反問題的回答是令人困惑的,所以讓我給你一個解釋你的問題的例子。
假設你有這樣的文字:
我也有一個矩形的座標: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