| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- import unittest
- from pdf_table_to_docx.extractor import _merge_tables
- from pdf_table_to_docx.table_parser import CellInfo, TableInfo
- class PdfCrossPageMergeTests(unittest.TestCase):
- def test_continued_row_does_not_swallow_next_row_label(self):
- """跨页续行并入上一行后,纵向合并跨度必须收回。"""
- def cell(text, row_span=1, col_span=1):
- return CellInfo(
- text=text,
- row_span=row_span,
- col_span=col_span,
- )
- t1 = TableInfo(
- rows=4,
- cols=2,
- cells=[
- [cell("项目内容"), cell("要求")],
- [cell("投标文件内容"), cell("要求1")],
- [cell("投标有效期"), cell("90天")],
- [cell("投标报价"), cell("前半段")],
- ],
- )
- t2 = TableInfo(
- rows=2,
- cols=2,
- cells=[
- [cell(""), cell("后半段")],
- [cell("服务期限"), cell("三年")],
- ],
- )
- merged = _merge_tables(t1, t2)
- self.assertEqual(merged.rows, 5)
- quote_cell = merged.cells[3][0]
- self.assertEqual(quote_cell.text, "投标报价")
- self.assertEqual(quote_cell.row_span, 1)
- self.assertIn("前半段", merged.cells[3][1].text)
- self.assertIn("后半段", merged.cells[3][1].text)
- self.assertEqual(merged.cells[4][0].text, "服务期限")
- for row in merged.cells:
- for cell in row:
- self.assertLessEqual(cell.row_span, 1)
- if __name__ == "__main__":
- unittest.main()
|