2011-12-15 37 views
10

Trong những gì kích thước và định hướng là Rectangle trongkhu vực PDFBox PDFTextStripperByArea phối

PDFTextStripperByArea 's chức năng addRegion(String regionName, Rectangle2D rect).

Nói cách khác, không hình chữ nhật R bắt đầu từ đâu và như thế nào lớn là nó (kích thước của các giá trị gốc, kích thước của hình chữ nhật) và trong những gì hướng nó đi (hướng mũi tên màu xanh minh hoạ), nếu new Rectangle(10,10,100,100) được đưa ra dưới dạng tham số thứ hai?

PdfBox rectangle

Trả lời

10
new Rectangle(10,10,100,100) 

có nghĩa là hình chữ nhật sẽ có góc trên bên trái ở vị trí (10, 10), vì vậy 10 đơn vị ở bên trái và phía trên cùng của tài liệu PDF. Ở đây một "đơn vị" là 1 pt = 1/72 inch.

100 đầu tiên thể hiện chiều rộng của hình chữ nhật và chiều cao thứ hai là chiều cao của hình chữ nhật. Để tổng hợp, hình ảnh bên phải là hình ảnh đầu tiên.

tôi đã viết mã này để trích xuất một số khu vực của một trang nhất định như các đối số cho hàm:

Rectangle2D region = new Rectangle2D.Double(x, y, width, height); 
String regionName = "region"; 
PDFTextStripperByArea stripper; 

stripper = new PDFTextStripperByArea(); 
stripper.addRegion(regionName, region); 
stripper.extractRegions(page); 

Vì vậy, x và y là tọa độ tuyệt đối của góc trên bên trái của hình chữ nhật và sau đó bạn chỉ định chiều rộng và chiều cao của nó. trang là một biến PDPage được đưa ra làm đối số cho hàm này.

+2

Đơn vị là bao nhiêu? – ipavlic

+1

Đơn vị mặc định là điểm pt (điểm) tôi nghĩ. –

+2

Nhưng làm thế nào để xác định tổng 'chiều rộng' /' chiều cao' của một tệp PDF? nghĩa là độ rộng 'chiều rộng' (' chiều cao ') có thể là gì đối với tệp PDF? –

1

Đã nhìn vào làm một cái gì đó như thế này, vì vậy tôi nghĩ rằng tôi muốn vượt qua những gì tôi tìm thấy dọc.

Đây là mã để tạo bản pdf gốc của tôi bằng cách sử dụng văn bản.

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() 
     } 
    } 
} 

Nếu bạn mở pdf, bạn sẽ thấy văn bản ở góc trên bên trái. Đây là bài kiểm tra cho thấy những gì bạn đang tìm kiếm.

@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.") 
} 

Vị trí (0, 0) là góc trên bên trái của tài liệu. Chiều rộng và chiều cao đang đi xuống và sang phải. Tôi đã có thể cắt giảm phạm vi một chút xuống (35, 52, 120, 3) và vẫn nhận được bài kiểm tra để vượt qua.

Tất cả các mã được viết bằng groovy.