2 回答
TA贡献1828条经验 获得超6个赞
您可以使用以下代码从 Java 中调用 tabula,希望对您有所帮助
public static void main(String[] args) throws IOException {
final String FILENAME="../test.pdf";
PDDocument pd = PDDocument.load(new File(FILENAME));
int totalPages = pd.getNumberOfPages();
System.out.println("Total Pages in Document: "+totalPages);
ObjectExtractor oe = new ObjectExtractor(pd);
SpreadsheetExtractionAlgorithm sea = new SpreadsheetExtractionAlgorithm();
Page page = oe.extract(1);
// extract text from the table after detecting
List<Table> table = sea.extract(page);
for(Table tables: table) {
List<List<RectangularTextContainer>> rows = tables.getRows();
for(int i=0; i<rows.size(); i++) {
List<RectangularTextContainer> cells = rows.get(i);
for(int j=0; j<cells.size(); j++) {
System.out.print(cells.get(j).getText()+"|");
}
// System.out.println();
}
}
}
TA贡献1866条经验 获得超5个赞
// ****** Extract text from the table after detecting & TRANSFER TO XLSX *****
XSSFWorkbook wb = new XSSFWorkbook();
Sheet sheet = wb.createSheet("Barang Baik");
List<Table> table = sea.extract(page);
for (Table t : table) {
int rowNumber = 0;
try {
while (sheet.getRow(rowNumber).getCell(0) != null) {
rowNumber++;
}
} catch (Exception e) { }
List<List<RectangularTextContainer>> rows = t.getRows();
for (int i = 0; i < rows.size(); i++) {
List<RectangularTextContainer> cells = rows.get(i);
Row row = sheet.createRow(i+rowNumber);
for (int j = 0; j < cells.size(); j++) {
Cell cell = row.createCell(j);
String cellValue = cells.get(j).getText();
cell.setCellValue(cellValue);
}
}
FileOutputStream fos = new FileOutputStream("C:\\your\\file.xlsx");
wb.write(fos);
fos.close();
}
添加回答
举报