2011-12-15 10 views
10

W jakim kierunku wymiary i jest prostokątna wPDFBox PDFTextStripperByArea regionie koordynuje

PDFTextStripperByArea „s funkcję addRegion(String regionName, Rectangle2D rect).

Innymi słowy, skąd prostokąt R zacząć i jak duży jest to (wymiary wartości pochodzenie, wymiary prostokąta) i w jakim kierunku to idzie (kierunek niebieskie strzałki na ilustracji), jeśli jako drugi parametr podano new Rectangle(10,10,100,100)?

PdfBox rectangle

Odpowiedz

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

oznacza, że ​​prostokąt będzie miał swój lewy górny róg na miejscu (10, 10), a więc 10 jednostek daleko od lewej i górnej części dokumentu PDF. Tutaj "jednostka" to 1 punkt = 1/72 cala.

Pierwsze 100 reprezentuje szerokość prostokąta, a drugie jego wysokość. Podsumowując, prawy obrazek jest pierwszy.

Napisałem ten kod, aby wyodrębnić pewne obszary strony podanej jako argumenty funkcji:

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

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

Tak, X i Y są bezwzględne współrzędne lewego górnego rogu prostokąta, a potem określić jego szerokość i wysokość. strona to zmienna PDPage podana jako argument tej funkcji.

+2

Ile kosztuje urządzenie? – ipavlic

+1

Domyślną jednostką jest pt (punkt). –

+2

Ale jak określić całkowitą "szerokość"/"wysokość" pliku PDF? tj. jak duża "szerokość" ("wysokość") może być dla pliku PDF? –

1

szukał do zrobienia czegoś takiego, więc pomyślałem, że przechodzą co znalazłem wzdłuż.

Oto kod do tworzenia mojego oryginalnego pliku pdf z użyciem itext.

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

Jeśli otworzysz plik pdf, zobaczysz tekst w lewym górnym rogu. Oto test pokazujący, czego szukasz.

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

Pozycja (0, 0) to lewy górny róg dokumentu. Szerokość i wysokość są skierowane w dół i na prawo. Udało mi się zmniejszyć nieco zasięg do (35, 52, 120, 3) i nadal muszę zdać test.

Cały kod jest napisany w groovy.

Powiązane problemy