Skip to content

Instantly share code, notes, and snippets.

@lnramirez
Last active August 29, 2015 13:57
Show Gist options
  • Save lnramirez/9470779 to your computer and use it in GitHub Desktop.
Save lnramirez/9470779 to your computer and use it in GitHub Desktop.
@Grab('com.itextpdf:itextpdf:5.3.4')
@GrabConfig(systemClassLoader = true)
import java.io.FileOutputStream;
import java.io.IOException;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;
import com.itextpdf.text.pdf.PdfRectangle;
import com.itextpdf.text.pdf.parser.PdfReaderContentParser;
import com.itextpdf.text.pdf.parser.TextMarginFinder;
import com.itextpdf.text.pdf.PdfDictionary;
import com.itextpdf.text.pdf.PdfName
import java.util.*
LowerX = 145
UpperX = 355
LowerAY = 465
UpperAY = 484
LowerFY = 484
UpperFY = 504
frect = new PdfRectangle(LowerX,LowerFY,UpperX,UpperFY);
arect = new PdfRectangle(LowerX,LowerAY,UpperX,UpperAY);
def cropFile(String theFile) {
inFile = new File(theFile)
name = inFile.getName().hashCode()
reader = new PdfReader(theFile);
parser = new PdfReaderContentParser(reader);
String fnFile = "generated/f" + "fn_${name}".hashCode() + ".pdf"
stamper = new PdfStamper(reader, new FileOutputStream(fnFile));
pageDict = reader.getPageN(1)
pageDict.put(PdfName.CROPBOX, frect);
stamper.close();
reader = new PdfReader(theFile);
String anFile = "generated/f" + "an_${name}".hashCode() + ".pdf"
stamper = new PdfStamper(reader, new FileOutputStream(anFile));
pageDict = reader.getPageN(1)
pageDict.put(PdfName.CROPBOX, arect);
stamper.close();
return new Tuple(fnFile,anFile)
}
PdfFilter_ = new FileFilter() {
def boolean accept(File pathName) {
return pathName.getName().endsWith(".pdf") || pathName.isDirectory()
}
}
def searchFiles(File rootDir, List<String> res) {
for (File file_ : rootDir.listFiles(PdfFilter_)) {
if (file_.isDirectory()) {
searchFiles(file_,res)
} else {
res.add(file_)
}
}
return
}
files = new ArrayList<String>()
searchFiles(new File("./"),files)
new File("db.txt").withWriter { out ->
files.each { f ->
tuple = cropFile(f.getCanonicalPath())
out.println "${f.getName()},${tuple.get(0)},${tuple.get(1)}"
}
}
Copy link

ghost commented Mar 16, 2014

Groovy?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment