Here's the pdf file that this storytest looks at: http://files/pdf/eg.pdf. * It's worth reading this as it is a document that discusses the issues in accessing text from PDFs. |''with PDF''| |''open''|pdf/eg.pdf| |''number of pages''|'''is'''|2| |''select all pages''| |'''show'''|''text''| * We can check that the whole document contains some specific text: |''text''|''contains''|PDF| |''text''|''contains''|PDF Format| |''text''|''contains''|PDF Format PDFs do not retain paragraph| * We can use pattern matching if we want to ignore parts of the document: |''text''|''matches''|PDF Format PDFs do not .* paragraph| * The footer appears twice (and it is added in the middle of the main text): |''text''|''matches''|Extracting Paragraphs from PDFs.*Extracting Paragraphs from PDFs| * The flow of text from one column to the next is captured here (luckily, but not between pages): |''text''|''matches''|If the space between that line and the previous one is larger than a space threshhold| * We can use the paragraph structure to select a relative paragraph: |''paragraph below heading''|pdfbox|'''contains'''|extracts the text elements| |''paragraph after containing''|Limitations|'''contains'''|a simple approach| * Show the text with breaks between the paragraphs, to make it easier to see the results: |show|paragraphed text| * We can match some of the paragraphs: |paragraphs from|0|to|6| |Extracting Paragraphs from PDF Files| |PDF Format| |PDFs do not retain paragraph, heading, etc information. Instead, a PDF encodes a rendered form of a document, rather like the individual characters that are rendered on a screen. A PDF file can be thought of as containing a sequence of pieces of information. Each piece of text is located at a particular (x,y,z) position, along with font information.| |Depending on the application writing the PDF file, a word may be added as a single word, or it may be added as several substrings. Some applications tend to add each of the characters of a word separately.| |Space characters are not (usually) added to the file, as they don't add anything to the rendering.| |pdfbox| |PDFDocument uses pdfbox to do much of the work. pdfbox extracts the text elements from a PDF file, taking account of columns of text and pages. pdfbox works out where to add spaces, and is configured by PDFDocument to add a space at the end of each line.| |show|text| |''select page''|2| |show|paragraphed text| * This shows the affect of customising the heuristics: |''customise''| |''basic paragraph drop''|4| |''height space factor''|0.5| |show|paragraphed text| |''close PDF file''|