2011-12-15 4 views
10

Dans quelles dimensions et de la direction est le rectangle en fonction de l »région PDFBox PDFTextStripperByArea coordonnées

PDFTextStripperByAreaaddRegion(String regionName, Rectangle2D rect).

En d'autres termes, où est le rectangle R départ et quelle est sa taille (dimensions des valeurs d'origine, les dimensions du rectangle) et dans quelle direction aller (direction des flèches bleues en illustration), si new Rectangle(10,10,100,100) est donné en tant que second paramètre?

PdfBox rectangle

Répondre

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

signifie que le rectangle aura son coin supérieur gauche à la position (10, 10), de sorte que 10 unités loin de la gauche et le haut du document PDF. Ici, une "unité" est 1 pt = 1/72 pouce.

La première 100 représente la largeur du rectangle et la seconde sa hauteur. En résumé, la bonne image est la première.

J'ai écrit ce code pour extraire certaines zones d'une page donnée comme arguments à la fonction:

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

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

Ainsi, x et y sont les coordonnées absolues du coin supérieur gauche du rectangle et vous spécifiez sa largeur et sa hauteur. page est une variable PDPage donnée en argument à cette fonction.

+2

Combien coûte une unité? – ipavlic

+1

L'unité par défaut est le pt (point) je pense. –

+2

Mais comment déterminer le 'width' /' height' total d'un fichier PDF? c'est-à-dire quelle est la largeur de 'width' (' height') pour un fichier PDF? –

1

cherchait à faire quelque chose comme ça, donc je pensais que je passerais ce que je trouve le long.

Voici le code pour créer mon pdf original en utilisant 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() 
     } 
    } 
} 

Si vous ouvrez le pdf, le texte apparaîtra dans le coin supérieur gauche. Voici le test montrant ce que vous cherchez.

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

La position (0, 0) est le coin supérieur gauche du document. La largeur et la hauteur se dirigent vers le bas et vers la droite. J'ai pu réduire un peu la portée (35, 52, 120, 3) et réussir le test.

Tout le code est écrit en groovy.

Questions connexes