在什麼尺寸和方向是矩形在PDFBox的PDFTextStripperByArea區域座標
PDFTextStripperByArea
的功能addRegion(String regionName, Rectangle2D rect)
。
換句話說,哪裏矩形[R開始,是有多大它(原點值的尺寸,矩形的尺寸)在什麼方向?它走的藍色箭頭的(方向在插圖中),如果new Rectangle(10,10,100,100)
作爲第二個參數給出?
在什麼尺寸和方向是矩形在PDFBox的PDFTextStripperByArea區域座標
PDFTextStripperByArea
的功能addRegion(String regionName, Rectangle2D rect)
。
換句話說,哪裏矩形[R開始,是有多大它(原點值的尺寸,矩形的尺寸)在什麼方向?它走的藍色箭頭的(方向在插圖中),如果new Rectangle(10,10,100,100)
作爲第二個參數給出?
new Rectangle(10,10,100,100)
表示矩形的左上角位於(10,10)位置,因此距離PDF文檔的左側和頂部10個單位。這裏「單位」是1磅= 1/72英寸。
第一個100代表矩形的寬度,第二個代表矩形的寬度。總之,正確的圖片是第一個。
我寫了這個代碼以提取參數中所給的功能頁面的某些領域:
Rectangle2D region = new Rectangle2D.Double(x, y, width, height);
String regionName = "region";
PDFTextStripperByArea stripper;
stripper = new PDFTextStripperByArea();
stripper.addRegion(regionName, region);
stripper.extractRegions(page);
因此,x和y是矩形的左上角的絕對座標,然後你指定其寬度和高度。頁面是一個PDPage變量,作爲該函數的參數。
正在研究做這樣的事情,所以我想我會通過我一起發現的。
下面是使用itext創建我的原始pdf的代碼。
import com.lowagie.text.Document
import com.lowagie.text.Paragraph
import com.lowagie.text.pdf.PdfWriter
class SimplePdfCreator {
void createFrom(String path) {
Document d = new Document()
try {
PdfWriter writer = PdfWriter.getInstance(d, new FileOutputStream(path))
d.open()
d.add(new Paragraph("This is a test."))
d.close()
} catch (Exception e) {
e.printStackTrace()
}
}
}
如果你打開pdf,你會看到左上角的文字。這是測試,顯示你在找什麼。
@Test
void createFrom_using_pdf_box_to_extract_text_targeted_extraction() {
new SimplePdfCreator().createFrom("myFileLocation")
def doc = PDDocument.load("myFileLocation")
Rectangle2D.Double d = new Rectangle2D.Double(0, 0, 120, 100)
def stripper = new PDFTextStripperByArea()
def pages = doc.getDocumentCatalog().allPages
stripper.addRegion("myRegion", d)
stripper.extractRegions(pages[0])
assert stripper.getTextForRegion("myRegion").contains("This is a test.")
}
位置(0,0)是文檔的左上角。寬度和高度向下並向右。我能夠將範圍縮小到(35,52,120,3),並且仍然通過測試。
所有代碼都是用groovy編寫的。
單位多少錢? – ipavlic 2012-07-16 09:23:25