| | |
| | | int sheetNum = xssfWorkbook.getNumberOfSheets(); |
| | | //遍历工作簿中的所有数据 |
| | | for (int i = 0; i < sheetNum; i++) { |
| | | if (i>1) break; |
| | | //读取第i个工作表 |
| | | System.out.println("读取第" + (i + 1) + "个sheet"); |
| | | XSSFSheet sheet = xssfWorkbook.getSheetAt(i); |
| | | //获取最后一行的num,即总行数。此处从0开始 |
| | | |
| | | int maxRow = sheet.getLastRowNum(); |
| | | if (sheet.getRow(1) != null && sheet.getRow(1).getCell(0) != null) { |
| | | String srcPath = sheet.getRow(1).getCell(0).toString(); |
| | | String beforePath = srcPath; |
| | | String targetPath = sheet.getRow(1).getCell(1).toString(); |
| | | Document pdfDoc = new Document(srcPath); |
| | | for (int row = 1; row <= maxRow; row++) { |
| | | //获取最后单元格num,即总单元格数 ***注意:此处从1开始计数*** |
| | | // 源文件路径 |
| | | String srcPath2 = sheet.getRow(row).getCell(0).toString(); |
| | | String beforePath = sheet.getRow(row - 1).getCell(0).toString(); |
| | | srcPath = sheet.getRow(row).getCell(0).toString(); |
| | | String nextPath = null; |
| | | if (sheet.getRow(row + 1) != null && sheet.getRow(row + 1).getCell(0) != null) { |
| | | nextPath = sheet.getRow(row + 1).getCell(0).toString(); |
| | | } |
| | | |
| | | |
| | | if (!beforePath.equals(srcPath2) && row - 1 != 0) { |
| | | if (!beforePath.equals(srcPath) && row - 1 != 0) { |
| | | // 输入文件路径 |
| | | beforePath = srcPath; |
| | | targetPath = sheet.getRow(row).getCell(1).toString(); |
| | | pdfDoc = new Document(srcPath2); |
| | | System.out.println(srcPath); |
| | | pdfDoc = new Document(srcPath); |
| | | } |
| | | |
| | | if (srcPath.contains("sb2020-10.pdf")){ |
| | | System.out.println(111); |
| | | } |
| | | String srcText = sheet.getRow(row).getCell(2).toString(); |
| | | String targetText = sheet.getRow(row).getCell(3).toString(); |
| | | String fontName = sheet.getRow(row).getCell(4).toString(); |
| | |
| | | pages.accept(textFragmentAbsorber); |
| | | |
| | | for (TextFragment textFragment : textFragmentAbsorber.getTextFragments()) { |
| | | // 计算替换前后文本长度差异 |
| | | /* // 计算替换前后文本长度差异 |
| | | int lengthDifference = targetText.length() - srcText.length(); |
| | | // 如果差异为正数,则需要向左移动 X 坐标 |
| | | if (lengthDifference > 0) { |
| | |
| | | float displacement = lengthDifference * 3; |
| | | // 调整 X 坐标 |
| | | textFragment.setPosition(new Position(textFragment.getPosition().getXIndent() - displacement, textFragment.getPosition().getYIndent())); |
| | | } |
| | | }*/ |
| | | |
| | | textFragment.setText(targetText); |
| | | textFragment.getTextState().setFont(FontRepository.findFont(fontName)); |
| | | } |
| | | if (!srcPath2.equals(nextPath)) { |
| | | if (!srcPath.equals(nextPath)) { |
| | | pdfDoc.save(targetPath); |
| | | try { Thread.sleep(50); } catch (InterruptedException e) { e.printStackTrace(); } |
| | | break; |
| | | } |
| | | } |
| | | } |