diff --git a/README.md b/README.md
index 16ed532b..1308a9e4 100644
--- a/README.md
+++ b/README.md
@@ -89,7 +89,7 @@ features, known gaps, and development workflow.
io.github.mini-software
minipdf
- 0.1.4
+ 0.1.5
```
diff --git a/artifacts/java-benchmark/issue/xlsx/report/benchmark_coverage.json b/artifacts/java-benchmark/issue/xlsx/report/benchmark_coverage.json
index dce297df..7593874e 100644
--- a/artifacts/java-benchmark/issue/xlsx/report/benchmark_coverage.json
+++ b/artifacts/java-benchmark/issue/xlsx/report/benchmark_coverage.json
@@ -8,16 +8,208 @@
"auxiliary_reference_label": "LibreOffice (auxiliary)",
"fixture_scope": "shared-on-disk-fixtures",
"executes_dotnet_xunit": false,
- "max_compare_pages": 0,
- "selected_cases": 1,
- "passed_conversions": 1,
+ "max_compare_pages": 3,
+ "selected_cases": 23,
+ "passed_conversions": 23,
"failed_conversions": 0,
"missing_references": 0,
"missing_auxiliary_references": 0,
"comparison_completed": true,
- "comparison_results": 1,
- "average_score": 0.9564,
+ "comparison_results": 23,
+ "average_score": 0.8067521739130434,
"cases": [
+ {
+ "name": "Academic Achievement Summary Table",
+ "case_id": "Academic Achievement Summary Table",
+ "suite": "issue",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/Academic Achievement Summary Table.xlsx",
+ "conversion_status": "passed",
+ "conversion_exit_code": 0,
+ "candidate_exists": true,
+ "reference_exists": true,
+ "auxiliary_reference_exists": true
+ },
+ {
+ "name": "AcademicAchievement_temp",
+ "case_id": "AcademicAchievement_temp",
+ "suite": "issue",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/AcademicAchievement_temp.xlsx",
+ "conversion_status": "passed",
+ "conversion_exit_code": 0,
+ "candidate_exists": true,
+ "reference_exists": true,
+ "auxiliary_reference_exists": true
+ },
+ {
+ "name": "Business expense budget1",
+ "case_id": "Business expense budget1",
+ "suite": "issue",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/Business expense budget1.xlsx",
+ "conversion_status": "passed",
+ "conversion_exit_code": 0,
+ "candidate_exists": true,
+ "reference_exists": true,
+ "auxiliary_reference_exists": true
+ },
+ {
+ "name": "Business expenses budget2",
+ "case_id": "Business expenses budget2",
+ "suite": "issue",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/Business expenses budget2.xlsx",
+ "conversion_status": "passed",
+ "conversion_exit_code": 0,
+ "candidate_exists": true,
+ "reference_exists": true,
+ "auxiliary_reference_exists": true
+ },
+ {
+ "name": "Business plan checklist with SWOT analysis1",
+ "case_id": "Business plan checklist with SWOT analysis1",
+ "suite": "issue",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/Business plan checklist with SWOT analysis1.xlsx",
+ "conversion_status": "passed",
+ "conversion_exit_code": 0,
+ "candidate_exists": true,
+ "reference_exists": true,
+ "auxiliary_reference_exists": true
+ },
+ {
+ "name": "Event budget1",
+ "case_id": "Event budget1",
+ "suite": "issue",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/Event budget1.xlsx",
+ "conversion_status": "passed",
+ "conversion_exit_code": 0,
+ "candidate_exists": true,
+ "reference_exists": true,
+ "auxiliary_reference_exists": true
+ },
+ {
+ "name": "Expense report basic1",
+ "case_id": "Expense report basic1",
+ "suite": "issue",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/Expense report basic1.xlsx",
+ "conversion_status": "passed",
+ "conversion_exit_code": 0,
+ "candidate_exists": true,
+ "reference_exists": true,
+ "auxiliary_reference_exists": true
+ },
+ {
+ "name": "Grocery list1",
+ "case_id": "Grocery list1",
+ "suite": "issue",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/Grocery list1.xlsx",
+ "conversion_status": "passed",
+ "conversion_exit_code": 0,
+ "candidate_exists": true,
+ "reference_exists": true,
+ "auxiliary_reference_exists": true
+ },
+ {
+ "name": "Issue202609031340",
+ "case_id": "Issue202609031340",
+ "suite": "issue",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/Issue202609031340.xlsx",
+ "conversion_status": "passed",
+ "conversion_exit_code": 0,
+ "candidate_exists": true,
+ "reference_exists": true,
+ "auxiliary_reference_exists": true
+ },
+ {
+ "name": "payroll-calculator_f",
+ "case_id": "payroll-calculator_f",
+ "suite": "issue",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/payroll-calculator_f.xlsx",
+ "conversion_status": "passed",
+ "conversion_exit_code": 0,
+ "candidate_exists": true,
+ "reference_exists": true,
+ "auxiliary_reference_exists": true
+ },
+ {
+ "name": "PO_anonymized",
+ "case_id": "PO_anonymized",
+ "suite": "issue",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/PO_anonymized.xlsx",
+ "conversion_status": "passed",
+ "conversion_exit_code": 0,
+ "candidate_exists": true,
+ "reference_exists": true,
+ "auxiliary_reference_exists": true
+ },
+ {
+ "name": "Simple invoice1",
+ "case_id": "Simple invoice1",
+ "suite": "issue",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/Simple invoice1.xlsx",
+ "conversion_status": "passed",
+ "conversion_exit_code": 0,
+ "candidate_exists": true,
+ "reference_exists": true,
+ "auxiliary_reference_exists": true
+ },
+ {
+ "name": "Small business cash flow forecast1",
+ "case_id": "Small business cash flow forecast1",
+ "suite": "issue",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/Small business cash flow forecast1.xlsx",
+ "conversion_status": "passed",
+ "conversion_exit_code": 0,
+ "candidate_exists": true,
+ "reference_exists": true,
+ "auxiliary_reference_exists": true
+ },
+ {
+ "name": "Wedding_timeline_planner1_copy",
+ "case_id": "Wedding_timeline_planner1_copy",
+ "suite": "issue",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/Wedding_timeline_planner1_copy.xlsx",
+ "conversion_status": "passed",
+ "conversion_exit_code": 0,
+ "candidate_exists": true,
+ "reference_exists": true,
+ "auxiliary_reference_exists": true
+ },
+ {
+ "name": "Weekly schedule planner1",
+ "case_id": "Weekly schedule planner1",
+ "suite": "issue",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/Weekly schedule planner1.xlsx",
+ "conversion_status": "passed",
+ "conversion_exit_code": 0,
+ "candidate_exists": true,
+ "reference_exists": true,
+ "auxiliary_reference_exists": true
+ },
+ {
+ "name": "XlsxIssue75",
+ "case_id": "XlsxIssue75",
+ "suite": "issue",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/XlsxIssue75.xlsx",
+ "conversion_status": "passed",
+ "conversion_exit_code": 0,
+ "candidate_exists": true,
+ "reference_exists": true,
+ "auxiliary_reference_exists": true
+ },
{
"name": "XlsxIssue77_MergedCellAlignment",
"case_id": "XlsxIssue77_MergedCellAlignment",
@@ -29,6 +221,78 @@
"candidate_exists": true,
"reference_exists": true,
"auxiliary_reference_exists": true
+ },
+ {
+ "name": "XlsxIssue77_Template1",
+ "case_id": "XlsxIssue77_Template1",
+ "suite": "issue",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/XlsxIssue77_Template1.xlsx",
+ "conversion_status": "passed",
+ "conversion_exit_code": 0,
+ "candidate_exists": true,
+ "reference_exists": true,
+ "auxiliary_reference_exists": true
+ },
+ {
+ "name": "XlsxIssue77_Template2_Workaround",
+ "case_id": "XlsxIssue77_Template2_Workaround",
+ "suite": "issue",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/XlsxIssue77_Template2_Workaround.xlsx",
+ "conversion_status": "passed",
+ "conversion_exit_code": 0,
+ "candidate_exists": true,
+ "reference_exists": true,
+ "auxiliary_reference_exists": true
+ },
+ {
+ "name": "XlsxIssue81_LayoutOptions",
+ "case_id": "XlsxIssue81_LayoutOptions",
+ "suite": "issue",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/XlsxIssue81_LayoutOptions.xlsx",
+ "conversion_status": "passed",
+ "conversion_exit_code": 0,
+ "candidate_exists": true,
+ "reference_exists": true,
+ "auxiliary_reference_exists": true
+ },
+ {
+ "name": "XlsxIssue82_5mb",
+ "case_id": "XlsxIssue82_5mb",
+ "suite": "issue",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/XlsxIssue82_5mb.xlsx",
+ "conversion_status": "passed",
+ "conversion_exit_code": 0,
+ "candidate_exists": true,
+ "reference_exists": true,
+ "auxiliary_reference_exists": true
+ },
+ {
+ "name": "XlsxIssue82_SampleTestData5mb",
+ "case_id": "XlsxIssue82_SampleTestData5mb",
+ "suite": "issue",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/XlsxIssue82_SampleTestData5mb.xlsx",
+ "conversion_status": "passed",
+ "conversion_exit_code": 0,
+ "candidate_exists": true,
+ "reference_exists": true,
+ "auxiliary_reference_exists": true
+ },
+ {
+ "name": "XlsxIssue82_WideTable",
+ "case_id": "XlsxIssue82_WideTable",
+ "suite": "issue",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/XlsxIssue82_WideTable.xlsx",
+ "conversion_status": "passed",
+ "conversion_exit_code": 0,
+ "candidate_exists": true,
+ "reference_exists": true,
+ "auxiliary_reference_exists": true
}
]
}
\ No newline at end of file
diff --git a/artifacts/java-benchmark/issue/xlsx/report/comparison_manifest.json b/artifacts/java-benchmark/issue/xlsx/report/comparison_manifest.json
index 13ee2ee5..a6ed442c 100644
--- a/artifacts/java-benchmark/issue/xlsx/report/comparison_manifest.json
+++ b/artifacts/java-benchmark/issue/xlsx/report/comparison_manifest.json
@@ -1,5 +1,197 @@
{
"cases": [
+ {
+ "name": "Academic Achievement Summary Table",
+ "case_id": "Academic Achievement Summary Table",
+ "suite": "issue",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/Academic Achievement Summary Table.xlsx",
+ "conversion_status": "pending",
+ "conversion_exit_code": null,
+ "candidate_exists": false,
+ "reference_exists": false,
+ "auxiliary_reference_exists": false
+ },
+ {
+ "name": "AcademicAchievement_temp",
+ "case_id": "AcademicAchievement_temp",
+ "suite": "issue",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/AcademicAchievement_temp.xlsx",
+ "conversion_status": "pending",
+ "conversion_exit_code": null,
+ "candidate_exists": false,
+ "reference_exists": false,
+ "auxiliary_reference_exists": false
+ },
+ {
+ "name": "Business expense budget1",
+ "case_id": "Business expense budget1",
+ "suite": "issue",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/Business expense budget1.xlsx",
+ "conversion_status": "pending",
+ "conversion_exit_code": null,
+ "candidate_exists": false,
+ "reference_exists": false,
+ "auxiliary_reference_exists": false
+ },
+ {
+ "name": "Business expenses budget2",
+ "case_id": "Business expenses budget2",
+ "suite": "issue",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/Business expenses budget2.xlsx",
+ "conversion_status": "pending",
+ "conversion_exit_code": null,
+ "candidate_exists": false,
+ "reference_exists": false,
+ "auxiliary_reference_exists": false
+ },
+ {
+ "name": "Business plan checklist with SWOT analysis1",
+ "case_id": "Business plan checklist with SWOT analysis1",
+ "suite": "issue",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/Business plan checklist with SWOT analysis1.xlsx",
+ "conversion_status": "pending",
+ "conversion_exit_code": null,
+ "candidate_exists": false,
+ "reference_exists": false,
+ "auxiliary_reference_exists": false
+ },
+ {
+ "name": "Event budget1",
+ "case_id": "Event budget1",
+ "suite": "issue",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/Event budget1.xlsx",
+ "conversion_status": "pending",
+ "conversion_exit_code": null,
+ "candidate_exists": false,
+ "reference_exists": false,
+ "auxiliary_reference_exists": false
+ },
+ {
+ "name": "Expense report basic1",
+ "case_id": "Expense report basic1",
+ "suite": "issue",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/Expense report basic1.xlsx",
+ "conversion_status": "pending",
+ "conversion_exit_code": null,
+ "candidate_exists": false,
+ "reference_exists": false,
+ "auxiliary_reference_exists": false
+ },
+ {
+ "name": "Grocery list1",
+ "case_id": "Grocery list1",
+ "suite": "issue",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/Grocery list1.xlsx",
+ "conversion_status": "pending",
+ "conversion_exit_code": null,
+ "candidate_exists": false,
+ "reference_exists": false,
+ "auxiliary_reference_exists": false
+ },
+ {
+ "name": "Issue202609031340",
+ "case_id": "Issue202609031340",
+ "suite": "issue",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/Issue202609031340.xlsx",
+ "conversion_status": "pending",
+ "conversion_exit_code": null,
+ "candidate_exists": false,
+ "reference_exists": false,
+ "auxiliary_reference_exists": false
+ },
+ {
+ "name": "payroll-calculator_f",
+ "case_id": "payroll-calculator_f",
+ "suite": "issue",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/payroll-calculator_f.xlsx",
+ "conversion_status": "pending",
+ "conversion_exit_code": null,
+ "candidate_exists": false,
+ "reference_exists": false,
+ "auxiliary_reference_exists": false
+ },
+ {
+ "name": "PO_anonymized",
+ "case_id": "PO_anonymized",
+ "suite": "issue",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/PO_anonymized.xlsx",
+ "conversion_status": "pending",
+ "conversion_exit_code": null,
+ "candidate_exists": false,
+ "reference_exists": false,
+ "auxiliary_reference_exists": false
+ },
+ {
+ "name": "Simple invoice1",
+ "case_id": "Simple invoice1",
+ "suite": "issue",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/Simple invoice1.xlsx",
+ "conversion_status": "pending",
+ "conversion_exit_code": null,
+ "candidate_exists": false,
+ "reference_exists": false,
+ "auxiliary_reference_exists": false
+ },
+ {
+ "name": "Small business cash flow forecast1",
+ "case_id": "Small business cash flow forecast1",
+ "suite": "issue",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/Small business cash flow forecast1.xlsx",
+ "conversion_status": "pending",
+ "conversion_exit_code": null,
+ "candidate_exists": false,
+ "reference_exists": false,
+ "auxiliary_reference_exists": false
+ },
+ {
+ "name": "Wedding_timeline_planner1_copy",
+ "case_id": "Wedding_timeline_planner1_copy",
+ "suite": "issue",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/Wedding_timeline_planner1_copy.xlsx",
+ "conversion_status": "pending",
+ "conversion_exit_code": null,
+ "candidate_exists": false,
+ "reference_exists": false,
+ "auxiliary_reference_exists": false
+ },
+ {
+ "name": "Weekly schedule planner1",
+ "case_id": "Weekly schedule planner1",
+ "suite": "issue",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/Weekly schedule planner1.xlsx",
+ "conversion_status": "pending",
+ "conversion_exit_code": null,
+ "candidate_exists": false,
+ "reference_exists": false,
+ "auxiliary_reference_exists": false
+ },
+ {
+ "name": "XlsxIssue75",
+ "case_id": "XlsxIssue75",
+ "suite": "issue",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/XlsxIssue75.xlsx",
+ "conversion_status": "pending",
+ "conversion_exit_code": null,
+ "candidate_exists": false,
+ "reference_exists": false,
+ "auxiliary_reference_exists": false
+ },
{
"name": "XlsxIssue77_MergedCellAlignment",
"case_id": "XlsxIssue77_MergedCellAlignment",
@@ -11,6 +203,78 @@
"candidate_exists": false,
"reference_exists": false,
"auxiliary_reference_exists": false
+ },
+ {
+ "name": "XlsxIssue77_Template1",
+ "case_id": "XlsxIssue77_Template1",
+ "suite": "issue",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/XlsxIssue77_Template1.xlsx",
+ "conversion_status": "pending",
+ "conversion_exit_code": null,
+ "candidate_exists": false,
+ "reference_exists": false,
+ "auxiliary_reference_exists": false
+ },
+ {
+ "name": "XlsxIssue77_Template2_Workaround",
+ "case_id": "XlsxIssue77_Template2_Workaround",
+ "suite": "issue",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/XlsxIssue77_Template2_Workaround.xlsx",
+ "conversion_status": "pending",
+ "conversion_exit_code": null,
+ "candidate_exists": false,
+ "reference_exists": false,
+ "auxiliary_reference_exists": false
+ },
+ {
+ "name": "XlsxIssue81_LayoutOptions",
+ "case_id": "XlsxIssue81_LayoutOptions",
+ "suite": "issue",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/XlsxIssue81_LayoutOptions.xlsx",
+ "conversion_status": "pending",
+ "conversion_exit_code": null,
+ "candidate_exists": false,
+ "reference_exists": false,
+ "auxiliary_reference_exists": false
+ },
+ {
+ "name": "XlsxIssue82_5mb",
+ "case_id": "XlsxIssue82_5mb",
+ "suite": "issue",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/XlsxIssue82_5mb.xlsx",
+ "conversion_status": "pending",
+ "conversion_exit_code": null,
+ "candidate_exists": false,
+ "reference_exists": false,
+ "auxiliary_reference_exists": false
+ },
+ {
+ "name": "XlsxIssue82_SampleTestData5mb",
+ "case_id": "XlsxIssue82_SampleTestData5mb",
+ "suite": "issue",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/XlsxIssue82_SampleTestData5mb.xlsx",
+ "conversion_status": "pending",
+ "conversion_exit_code": null,
+ "candidate_exists": false,
+ "reference_exists": false,
+ "auxiliary_reference_exists": false
+ },
+ {
+ "name": "XlsxIssue82_WideTable",
+ "case_id": "XlsxIssue82_WideTable",
+ "suite": "issue",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/XlsxIssue82_WideTable.xlsx",
+ "conversion_status": "pending",
+ "conversion_exit_code": null,
+ "candidate_exists": false,
+ "reference_exists": false,
+ "auxiliary_reference_exists": false
}
]
}
\ No newline at end of file
diff --git a/artifacts/java-benchmark/issue/xlsx/report/comparison_report.json b/artifacts/java-benchmark/issue/xlsx/report/comparison_report.json
index 2a6abc32..d71b91a5 100644
--- a/artifacts/java-benchmark/issue/xlsx/report/comparison_report.json
+++ b/artifacts/java-benchmark/issue/xlsx/report/comparison_report.json
@@ -1,81 +1,2133 @@
[
{
- "name": "XlsxIssue77_MergedCellAlignment",
+ "name": "Academic Achievement Summary Table",
"minipdf_exists": true,
"reference_exists": true,
"report_scope": "java-issue-xlsx",
- "case_id": "XlsxIssue77_MergedCellAlignment",
+ "case_id": "Academic Achievement Summary Table",
"format": "xlsx",
- "source_path": "tests/Issue_Files/xlsx/XlsxIssue77_MergedCellAlignment.xlsx",
+ "source_path": "tests/Issue_Files/xlsx/Academic Achievement Summary Table.xlsx",
"suite": "issue",
- "minipdf_size": 71248,
- "reference_size": 172385,
+ "minipdf_size": 54546,
+ "reference_size": 151877,
"pdf_valid": true,
- "minipdf_pages": 2,
+ "minipdf_pages": 4,
"reference_pages": 2,
- "text_similarity": 1.0,
- "flat_text_similarity": 1.0,
- "word_text_similarity": 1.0,
- "text_diff": "(identical)",
+ "compared_pages": 3,
+ "text_similarity": 0.9068,
+ "flat_text_similarity": 0.9052,
+ "word_text_similarity": 0.6864,
+ "text_diff": "--- minipdf/Academic Achievement Summary Table.pdf\n+++ reference/Academic Achievement Summary Table.pdf\n@@ -1,10 +1,10 @@\n 附件3\n\n 学术业绩汇总表\n\n-报考岗位: 报考岗位代码: 考⽣姓名:\n\n-博⼠论⽂题⽬: 博⼠论⽂研究⽅向:\n\n-公开发表的主要论⽂情况\n\n-⻆⾊ 转载刊物、转载字数及 是否为代表作\n\n-序号 题⽬ 刊物名称 核⼼期刊情况 刊号 发表时间\n\n+报考岗位: 报考岗位代码: 考生姓名:\n\n+博士论文题目: 博士论文研究方向:\n\n+公开发表的主要论文情况\n\n+角色 转载刊物、转载字数及 是否为代表作\n\n+序号 题目 刊物名称 核心期刊情况 刊号 发表时间\n\n (排名) 转载时间等 (指定1篇)\n\n 1\n\n 2\n\n@@ -20,29 +20,28 @@\n 12\n\n ---PAGE---\n\n 公开出版的主要专(译)著、教材情况\n\n-⻆⾊ 全书⽂ 本⼈写 转载刊物、转载字数及\n\n-序号 题⽬ 出版社名称 出版号 出版时间 备注\n\n+角色 全书文 本人写 转载刊物、转载字数及\n\n+序号 题目 出版社名称 出版号 出版时间 备注\n\n (排名) 字数 作量 转载时间等\n\n 1\n\n 2\n\n 获批的决策咨询报告情况\n\n-序号 题⽬ 批⽰领导级别 获批时间 ⻆⾊(排名) 备注\n\n+序号 题目 批示领导级别 获批时间 角色(排名) 备注\n\n 1\n\n 2\n\n 3\n\n 4\n\n 承担的主要科研课题情况\n\n-项⽬\n\n-序号 课题名称 项⽬来源 课题编号 ⻆⾊(排名) 起⽌时间 成果鉴定(评价) 备注\n\n+项目\n\n+序号 课题名称 项目来源 课题编号 角色(排名) 起止时间 成果鉴定(评价) 备注\n\n 级别\n\n 1\n\n 2\n\n 3\n\n 4\n\n-本⼈承诺以上情况属实,并有相应证明。如有不实之处,愿意承担相应责任。\n\n-报名⼈员签名:\n\n-⽇期: 年 ⽉ ⽇\n\n-填表说明:1.请将各类学术成果按等级、层次及⽔平⾃⾼到低顺序填写。不加⾏、减⾏,不加⻚、减⻚,本表采⽤A4正反⾯打印。\n\n-2.核⼼期刊是指北京⼤学图书馆“中⽂核⼼期刊”、南京⼤学“中⽂社会科学引⽂索引(CSSCI)来源期刊”(含扩展版、集刊)、中国科学技术信息研究所\n\n-“中国科技论⽂统计源期刊”和科学引⽂索引(SCI)、社会科学引⽂索引(SSCI)。其中,被SCI、SSCI收录的期刊要求进⼊所在学科领域Q1、Q2。\n\n----PAGE---\n+本人承诺以上情况属实,并有相应证明。如有不实之处,愿意承担相应责任。\n\n+报名人员签名:\n\n+日期: 年 月 日\n\n+填表说明:1.请将各类学术成果按等级、层次及水平自高到低顺序填写。不加行、减行,不加页、减页,本表采用A4正反面打印。\n\n+2.核心期刊是指北京大学图书馆“中文核心期刊”、南京大学“中文社会科学引文索引(CSSCI)来源期刊”(含扩展版、集刊)、中国科学技术信息研究所\n\n+“中国科技论文统计源期刊”和科学引文索引(SCI)、社会科学引文索引(SSCI)。其中,被SCI、SSCI收录的期刊要求进入所在学科领域Q1、Q2。",
"visual_scores": [
- 0.886,
- 0.896
+ 0.9586,
+ 0.9282,
+ 0.0
],
- "visual_avg": 0.891,
+ "visual_avg": 0.6289,
"diff_images": [
{
"page": 1,
- "minipdf_img": "XlsxIssue77_MergedCellAlignment_p1_minipdf.png",
- "reference_img": "XlsxIssue77_MergedCellAlignment_p1_reference.png",
- "auxiliary_img": "XlsxIssue77_MergedCellAlignment_p1_libreoffice.png",
- "heatmap_img": "XlsxIssue77_MergedCellAlignment_p1_heatmap.png",
+ "minipdf_img": "Academic Achievement Summary Table_p1_minipdf.png",
+ "reference_img": "Academic Achievement Summary Table_p1_reference.png",
+ "auxiliary_img": "Academic Achievement Summary Table_p1_libreoffice.png",
+ "heatmap_img": "Academic Achievement Summary Table_p1_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1754,
+ 1241
+ ],
+ "difference_bbox_px": [
+ 46,
+ 24,
+ 1717,
+ 1143
+ ],
+ "changed_pixels": 177377,
+ "changed_fraction": 0.081488,
+ "mean_abs_rgb": 12.1082,
+ "rmse_rgb": 47.6028,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "Academic Achievement Summary Table_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ },
+ {
+ "page": 2,
+ "minipdf_img": "Academic Achievement Summary Table_p2_minipdf.png",
+ "reference_img": "Academic Achievement Summary Table_p2_reference.png",
+ "auxiliary_img": "Academic Achievement Summary Table_p2_libreoffice.png",
+ "heatmap_img": "Academic Achievement Summary Table_p2_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1754,
+ 1241
+ ],
+ "difference_bbox_px": [
+ 46,
+ 11,
+ 1717,
+ 1170
+ ],
+ "changed_pixels": 256408,
+ "changed_fraction": 0.117796,
+ "mean_abs_rgb": 16.7922,
+ "rmse_rgb": 55.8028,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "Academic Achievement Summary Table_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ },
+ {
+ "page": 3,
+ "minipdf_img": "Academic Achievement Summary Table_p3_minipdf.png",
+ "reference_img": null,
+ "auxiliary_img": null
+ }
+ ],
+ "overall_score": 0.7143
+ },
+ {
+ "name": "AcademicAchievement_temp",
+ "minipdf_exists": true,
+ "reference_exists": true,
+ "report_scope": "java-issue-xlsx",
+ "case_id": "AcademicAchievement_temp",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/AcademicAchievement_temp.xlsx",
+ "suite": "issue",
+ "minipdf_size": 54546,
+ "reference_size": 151877,
+ "pdf_valid": true,
+ "minipdf_pages": 4,
+ "reference_pages": 2,
+ "compared_pages": 3,
+ "text_similarity": 0.9068,
+ "flat_text_similarity": 0.9052,
+ "word_text_similarity": 0.6864,
+ "text_diff": "--- minipdf/AcademicAchievement_temp.pdf\n+++ reference/AcademicAchievement_temp.pdf\n@@ -1,10 +1,10 @@\n 附件3\n\n 学术业绩汇总表\n\n-报考岗位: 报考岗位代码: 考⽣姓名:\n\n-博⼠论⽂题⽬: 博⼠论⽂研究⽅向:\n\n-公开发表的主要论⽂情况\n\n-⻆⾊ 转载刊物、转载字数及 是否为代表作\n\n-序号 题⽬ 刊物名称 核⼼期刊情况 刊号 发表时间\n\n+报考岗位: 报考岗位代码: 考生姓名:\n\n+博士论文题目: 博士论文研究方向:\n\n+公开发表的主要论文情况\n\n+角色 转载刊物、转载字数及 是否为代表作\n\n+序号 题目 刊物名称 核心期刊情况 刊号 发表时间\n\n (排名) 转载时间等 (指定1篇)\n\n 1\n\n 2\n\n@@ -20,29 +20,28 @@\n 12\n\n ---PAGE---\n\n 公开出版的主要专(译)著、教材情况\n\n-⻆⾊ 全书⽂ 本⼈写 转载刊物、转载字数及\n\n-序号 题⽬ 出版社名称 出版号 出版时间 备注\n\n+角色 全书文 本人写 转载刊物、转载字数及\n\n+序号 题目 出版社名称 出版号 出版时间 备注\n\n (排名) 字数 作量 转载时间等\n\n 1\n\n 2\n\n 获批的决策咨询报告情况\n\n-序号 题⽬ 批⽰领导级别 获批时间 ⻆⾊(排名) 备注\n\n+序号 题目 批示领导级别 获批时间 角色(排名) 备注\n\n 1\n\n 2\n\n 3\n\n 4\n\n 承担的主要科研课题情况\n\n-项⽬\n\n-序号 课题名称 项⽬来源 课题编号 ⻆⾊(排名) 起⽌时间 成果鉴定(评价) 备注\n\n+项目\n\n+序号 课题名称 项目来源 课题编号 角色(排名) 起止时间 成果鉴定(评价) 备注\n\n 级别\n\n 1\n\n 2\n\n 3\n\n 4\n\n-本⼈承诺以上情况属实,并有相应证明。如有不实之处,愿意承担相应责任。\n\n-报名⼈员签名:\n\n-⽇期: 年 ⽉ ⽇\n\n-填表说明:1.请将各类学术成果按等级、层次及⽔平⾃⾼到低顺序填写。不加⾏、减⾏,不加⻚、减⻚,本表采⽤A4正反⾯打印。\n\n-2.核⼼期刊是指北京⼤学图书馆“中⽂核⼼期刊”、南京⼤学“中⽂社会科学引⽂索引(CSSCI)来源期刊”(含扩展版、集刊)、中国科学技术信息研究所\n\n-“中国科技论⽂统计源期刊”和科学引⽂索引(SCI)、社会科学引⽂索引(SSCI)。其中,被SCI、SSCI收录的期刊要求进⼊所在学科领域Q1、Q2。\n\n----PAGE---\n+本人承诺以上情况属实,并有相应证明。如有不实之处,愿意承担相应责任。\n\n+报名人员签名:\n\n+日期: 年 月 日\n\n+填表说明:1.请将各类学术成果按等级、层次及水平自高到低顺序填写。不加行、减行,不加页、减页,本表采用A4正反面打印。\n\n+2.核心期刊是指北京大学图书馆“中文核心期刊”、南京大学“中文社会科学引文索引(CSSCI)来源期刊”(含扩展版、集刊)、中国科学技术信息研究所\n\n+“中国科技论文统计源期刊”和科学引文索引(SCI)、社会科学引文索引(SSCI)。其中,被SCI、SSCI收录的期刊要求进入所在学科领域Q1、Q2。",
+ "visual_scores": [
+ 0.9586,
+ 0.9282,
+ 0.0
+ ],
+ "visual_avg": 0.6289,
+ "diff_images": [
+ {
+ "page": 1,
+ "minipdf_img": "AcademicAchievement_temp_p1_minipdf.png",
+ "reference_img": "AcademicAchievement_temp_p1_reference.png",
+ "auxiliary_img": "AcademicAchievement_temp_p1_libreoffice.png",
+ "heatmap_img": "AcademicAchievement_temp_p1_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1754,
+ 1241
+ ],
+ "difference_bbox_px": [
+ 46,
+ 24,
+ 1717,
+ 1143
+ ],
+ "changed_pixels": 177377,
+ "changed_fraction": 0.081488,
+ "mean_abs_rgb": 12.1082,
+ "rmse_rgb": 47.6028,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "AcademicAchievement_temp_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ },
+ {
+ "page": 2,
+ "minipdf_img": "AcademicAchievement_temp_p2_minipdf.png",
+ "reference_img": "AcademicAchievement_temp_p2_reference.png",
+ "auxiliary_img": "AcademicAchievement_temp_p2_libreoffice.png",
+ "heatmap_img": "AcademicAchievement_temp_p2_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1754,
+ 1241
+ ],
+ "difference_bbox_px": [
+ 46,
+ 11,
+ 1717,
+ 1170
+ ],
+ "changed_pixels": 256408,
+ "changed_fraction": 0.117796,
+ "mean_abs_rgb": 16.7922,
+ "rmse_rgb": 55.8028,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "AcademicAchievement_temp_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ },
+ {
+ "page": 3,
+ "minipdf_img": "AcademicAchievement_temp_p3_minipdf.png",
+ "reference_img": null,
+ "auxiliary_img": null
+ }
+ ],
+ "overall_score": 0.7143
+ },
+ {
+ "name": "Business expense budget1",
+ "minipdf_exists": true,
+ "reference_exists": true,
+ "report_scope": "java-issue-xlsx",
+ "case_id": "Business expense budget1",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/Business expense budget1.xlsx",
+ "suite": "issue",
+ "minipdf_size": 45757,
+ "reference_size": 159864,
+ "pdf_valid": true,
+ "minipdf_pages": 4,
+ "reference_pages": 4,
+ "compared_pages": 3,
+ "text_similarity": 0.9712,
+ "flat_text_similarity": 0.9709,
+ "word_text_similarity": 0.8789,
+ "text_diff": "--- minipdf/Business expense budget1.pdf\n+++ reference/Business expense budget1.pdf\n@@ -3,43 +3,46 @@\n CATEGORY Q1 BUDGET Q1 ACTUAL Q2 BUDGET\n\n PERSONNEL\n\n Salaries & Wages 45,000.00 44,200.00 46,000.00\n\n-Benefits & Insurance 12,000.00 11,850.00 12,500.00\n\n+Benefits & Insurance 12,000.00 11,850.00 12,500.00\n\n Training & Development 3,000.00 2,800.00 3,200.00\n\n Recruitment 2,000.00 1,500.00 2,500.00\n\n Personnel Subtotal 62,000.00 60,350.00 64,200.00\n\n OPERATIONS\n\n-Rent & U ƟliƟes 8,000.00 8,000.00 8,200.00\n\n-Office Supplies 1,500.00 1,650.00 1,500.00\n\n+Rent & Utilities 8,000.00 8,000.00 8,200.00\n\n+Office Supplies 1,500.00 1,650.00 1,500.00\n\n Equipment & Maintenance 3,000.00 2,700.00 3,500.00\n\n-IT & So Ōware 4,000.00 4,200.00 4,500.00\n\n-Telecommunica Ɵons 2,000.00 1,900.00 2,100.00\n\n-Opera Ɵons Subtotal 18,500.00 18,450.00 19,800.00\n\n+IT & Software 4,000.00 4,200.00 4,500.00\n\n+Telecommunications 2,000.00 1,900.00 2,100.00\n\n+Operations Subtotal 18,500.00 18,450.00 19,800.00\n\n MARKETING\n\n-Adver Ɵsing 5,000.00 4,800.00 6,000.00\n\n-Digital Marke Ɵng 3,000.00 3,200.00 3,500.00\n\n+Advertising 5,000.00 4,800.00 6,000.00\n\n+Digital Marketing 3,000.00 3,200.00 3,500.00\n\n Events & Sponsorships 2,000.00 1,800.00 2,500.00\n\n-Prin Ɵng & Design 1,000.00 950.00 1,200.00\n\n-Marke Ɵng Subtotal 11,000.00 10,750.00 13,200.00\n\n+Printing & Design 1,000.00 950.00 1,200.00\n\n+Marketing Subtotal 11,000.00 10,750.00 13,200.00\n\n TRAVEL & ENTERTAINMENT\n\n-Domes Ɵc Travel 3,000.00 2,500.00 3,500.00\n\n-Interna Ɵonal Travel 5,000.00 4,000.00 6,000.00\n\n+Domestic Travel 3,000.00 2,500.00 3,500.00\n\n+International Travel 5,000.00 4,000.00 6,000.00\n\n Meals & Entertainment 2,000.00 1,800.00 2,200.00\n\n Vehicle Expenses 1,500.00 1,400.00 1,500.00\n\n Travel & Entertainment Subtotal 11,500.00 9,700.00 13,200.00\n\n PROFESSIONAL SERVICES\n\n Legal Fees 3,000.00 2,800.00 3,500.00\n\n-Accoun Ɵng & Audit 2,500.00 2,500.00 2,500.00\n\n-Consul Ɵng 4,000.00 3,500.00 5,000.00\n\n+Accounting & Audit 2,500.00 2,500.00 2,500.00\n\n+Consulting 4,000.00 3,500.00 5,000.00\n\n Insurance 2,000.00 2,000.00 2,100.00\n\n Professional Services Subtotal 11,500.00 10,800.00 13,100.00\n\n ---PAGE---\n\n GRAND TOTAL 114,500.00 110,050.00 123,500.00\n\n Category Total Budget Total Actual\n\n Personnel 126200 124250\n\n-Opera Ɵons 38300 38150\n\n-Marke Ɵng 24200 23750\n\n+Operations 38300 38150\n\n+Marketing 24200 23750\n\n Travel & Entertainment 24700 22100\n\n Professional Services 24600 23400\n\n+Budget vs Actual by Category\n\n+Amount (\\$)\n\n+Category\n\n ---PAGE---\n\n Q2 ACTUAL VARIANCE\n\n 45,800.00 1,000.00\n",
+ "visual_scores": [
+ 0.8568,
+ 0.7381,
+ 0.9001
+ ],
+ "visual_avg": 0.8317,
+ "diff_images": [
+ {
+ "page": 1,
+ "minipdf_img": "Business expense budget1_p1_minipdf.png",
+ "reference_img": "Business expense budget1_p1_reference.png",
+ "auxiliary_img": "Business expense budget1_p1_libreoffice.png",
+ "heatmap_img": "Business expense budget1_p1_heatmap.png",
"heatmap_metrics": {
"size_px": [
1241,
1754
],
"difference_bbox_px": [
- 35,
- 119,
- 1163,
- 1541
+ 147,
+ 176,
+ 1016,
+ 1596
],
- "changed_pixels": 474317,
- "changed_fraction": 0.217905,
- "mean_abs_rgb": 33.3008,
- "rmse_rgb": 82.9184,
+ "changed_pixels": 439037,
+ "changed_fraction": 0.201697,
+ "mean_abs_rgb": 25.4757,
+ "rmse_rgb": 68.6251,
"threshold": 12,
"gain": 5.0
},
- "composite_img": "XlsxIssue77_MergedCellAlignment_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ "composite_img": "Business expense budget1_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
},
{
"page": 2,
- "minipdf_img": "XlsxIssue77_MergedCellAlignment_p2_minipdf.png",
- "reference_img": "XlsxIssue77_MergedCellAlignment_p2_reference.png",
- "auxiliary_img": "XlsxIssue77_MergedCellAlignment_p2_libreoffice.png",
- "heatmap_img": "XlsxIssue77_MergedCellAlignment_p2_heatmap.png",
+ "minipdf_img": "Business expense budget1_p2_minipdf.png",
+ "reference_img": "Business expense budget1_p2_reference.png",
+ "auxiliary_img": "Business expense budget1_p2_libreoffice.png",
+ "heatmap_img": "Business expense budget1_p2_heatmap.png",
"heatmap_metrics": {
"size_px": [
1241,
1754
],
"difference_bbox_px": [
- 35,
- 156,
- 1163,
- 1612
+ 112,
+ 178,
+ 1016,
+ 1225
],
- "changed_pixels": 443109,
- "changed_fraction": 0.203568,
- "mean_abs_rgb": 30.2766,
- "rmse_rgb": 78.5097,
+ "changed_pixels": 178210,
+ "changed_fraction": 0.081871,
+ "mean_abs_rgb": 10.7438,
+ "rmse_rgb": 41.8304,
"threshold": 12,
"gain": 5.0
},
- "composite_img": "XlsxIssue77_MergedCellAlignment_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ "composite_img": "Business expense budget1_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ },
+ {
+ "page": 3,
+ "minipdf_img": "Business expense budget1_p3_minipdf.png",
+ "reference_img": "Business expense budget1_p3_reference.png",
+ "auxiliary_img": "Business expense budget1_p3_libreoffice.png",
+ "heatmap_img": "Business expense budget1_p3_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1241,
+ 1754
+ ],
+ "difference_bbox_px": [
+ 112,
+ 297,
+ 450,
+ 1596
+ ],
+ "changed_pixels": 217907,
+ "changed_fraction": 0.100108,
+ "mean_abs_rgb": 12.8481,
+ "rmse_rgb": 48.2032,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "Business expense budget1_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
}
],
- "overall_score": 0.9564
+ "overall_score": 0.9212
+ },
+ {
+ "name": "Business expenses budget2",
+ "minipdf_exists": true,
+ "reference_exists": true,
+ "report_scope": "java-issue-xlsx",
+ "case_id": "Business expenses budget2",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/Business expenses budget2.xlsx",
+ "suite": "issue",
+ "minipdf_size": 232162,
+ "reference_size": 376973,
+ "pdf_valid": true,
+ "minipdf_pages": 4,
+ "reference_pages": 4,
+ "compared_pages": 3,
+ "text_similarity": 0.8422,
+ "flat_text_similarity": 0.4473,
+ "word_text_similarity": 0.8422,
+ "text_diff": "--- minipdf/Business expenses budget2.pdf\n+++ reference/Business expenses budget2.pdf\n@@ -1,81 +1,81 @@\n Market Financial Consulting\n\n PLANNED EXPENSES\n\n January February March April May June July August September October November December Total\n\n-EMPLOYEE COSTS $ 107,950.00 $ 107,950.00 $ 107,950.00 $ 111,125.00 $ 111,125.00 $ 111,125.00 $ 111,125.00 $ 117,348.00 $ 117,348.00 $ 117,348.00 $ 117,348.00 $ 117,348.00 $ 1,355,090.00\n\n-Wages $ 85,000.00 $ 85,000.00 $ 85,000.00 $ 87,500.00 $ 87,500.00 $ 87,500.00 $ 87,500.00 $ 92,400.00 $ 92,400.00 $ 92,400.00 $ 92,400.00 $ 92,400.00 $ 1,067,000.00\n\n-Benefits $ 22,950.00 $ 22,950.00 $ 22,950.00 $ 23,625.00 $ 23,625.00 $ 23,625.00 $ 23,625.00 $ 24,948.00 $ 24,948.00 $ 24,948.00 $ 24,948.00 $ 24,948.00 $ 288,090.00\n\n-OFFICE COSTS $ 11,370.00 $ 11,770.00 $ 11,770.00 $ 11,470.00 $ 11,470.00 $ 11,470.00 $ 11,470.00 $ 11,470.00 $ 11,470.00 $ 11,470.00 $ 11,770.00 $ 11,770.00 $ 138,740.00\n\n-Office lease $ 9,800.00 $ 9,800.00 $ 9,800.00 $ 9,800.00 $ 9,800.00 $ 9,800.00 $ 9,800.00 $ 9,800.00 $ 9,800.00 $ 9,800.00 $ 9,800.00 $ 9,800.00 $ 117,600.00\n\n-Gas $ - 0 $ 400.00 $ 400.00 $ 100.00 $ 100.00 $ 100.00 $ 100.00 $ 100.00 $ 100.00 $ 100.00 $ 400.00 $ 400.00 $ 2,300.00\n\n-Electric $ 300.00 $ 300.00 $ 300.00 $ 300.00 $ 300.00 $ 300.00 $ 300.00 $ 300.00 $ 300.00 $ 300.00 $ 300.00 $ 300.00 $ 3,600.00\n\n-Water $ 40.00 $ 40.00 $ 40.00 $ 40.00 $ 40.00 $ 40.00 $ 40.00 $ 40.00 $ 40.00 $ 40.00 $ 40.00 $ 40.00 $ 480.00\n\n-Telephone $ 250.00 $ 250.00 $ 250.00 $ 250.00 $ 250.00 $ 250.00 $ 250.00 $ 250.00 $ 250.00 $ 250.00 $ 250.00 $ 250.00 $ 3,000.00\n\n-Internet access $ 180.00 $ 180.00 $ 180.00 $ 180.00 $ 180.00 $ 180.00 $ 180.00 $ 180.00 $ 180.00 $ 180.00 $ 180.00 $ 180.00 $ 2,160.00\n\n-Office supplies $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 2,400.00\n\n-Security $ 600.00 $ 600.00 $ 600.00 $ 600.00 $ 600.00 $ 600.00 $ 600.00 $ 600.00 $ 600.00 $ 600.00 $ 600.00 $ 600.00 $ 7,200.00\n\n-MARKETING COSTS $ 8,100.00 $ 3,100.00 $ 3,100.00 $ 11,100.00 $ 3,100.00 $ 3,900.00 $ 8,100.00 $ 6,100.00 $ 3,100.00 $ 8,100.00 $ 3,100.00 $ 6,900.00 $ 67,800.00\n\n-Web site hosting $ 500.00 $ 500.00 $ 500.00 $ 500.00 $ 500.00 $ 500.00 $ 500.00 $ 500.00 $ 500.00 $ 500.00 $ 500.00 $ 500.00 $ 6,000.00\n\n-Web site updates $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 1,000.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 1,000.00 $ 4,000.00\n\n-Collateral preparation $ 5,000.00 $ - 0 $ - 0 $ 5,000.00 $ - 0 $ - 0 $ 5,000.00 $ - 0 $ - 0 $ 5,000.00 $ - 0 $ - 0 $ 20,000.00\n\n-Collateral printing $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 2,400.00\n\n-Marketing events $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 5,000.00 $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 5,000.00 $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 5,000.00 $ 33,000.00\n\n-Miscellaneous expenses $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 2,400.00\n\n-TRAINING / TRAVEL $ 4,000.00 $ 4,000.00 $ 4,000.00 $ 4,000.00 $ 4,000.00 $ 4,000.00 $ 4,000.00 $ 4,000.00 $ 4,000.00 $ 4,000.00 $ 4,000.00 $ 4,000.00 $ 48,000.00\n\n-Training classes $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 24,000.00\n\n-Travel costs $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 24,000.00\n\n-MONTHLY TOTAL $ 131,420.00 $ 126,820.00 $ 126,820.00 $ 137,695.00 $ 129,695.00 $ 130,495.00 $ 134,695.00 $ 138,918.00 $ 135,918.00 $ 140,918.00 $ 136,218.00 $ 140,018.00 $ 1,609,630.00\n\n+EMPLOYEE COSTS $ 107,950.00 $ 107,950.00 $ 107,950.00 $ 111,125.00 $ 111,125.00 $ 111,125.00 $ 111,125.00 $ 117,348.00 $ 117,348.00 $ 117,348.00 $ 117,348.00 $ 117,348.00 $ 1,355,090.00\n\n+Wages $ 85,000.00 $ 85,000.00 $ 85,000.00 $ 87,500.00 $ 87,500.00 $ 87,500.00 $ 87,500.00 $ 92,400.00 $ 92,400.00 $ 92,400.00 $ 92,400.00 $ 92,400.00 $ 1,067,000.00\n\n+Benefits $ 22,950.00 $ 22,950.00 $ 22,950.00 $ 23,625.00 $ 23,625.00 $ 23,625.00 $ 23,625.00 $ 24,948.00 $ 24,948.00 $ 24,948.00 $ 24,948.00 $ 24,948.00 $ 288,090.00\n\n+OFFICE COSTS $ 11,370.00 $ 11,770.00 $ 11,770.00 $ 11,470.00 $ 11,470.00 $ 11,470.00 $ 11,470.00 $ 11,470.00 $ 11,470.00 $ 11,470.00 $ 11,770.00 $ 11,770.00 $ 138,740.00\n\n+Office lease $ 9,800.00 $ 9,800.00 $ 9,800.00 $ 9,800.00 $ 9,800.00 $ 9,800.00 $ 9,800.00 $ 9,800.00 $ 9,800.00 $ 9,800.00 $ 9,800.00 $ 9,800.00 $ 117,600.00\n\n+Gas $ - $ 400.00 $ 400.00 $ 100.00 $ 100.00 $ 100.00 $ 100.00 $ 100.00 $ 100.00 $ 100.00 $ 400.00 $ 400.00 $ 2,300.00\n\n+Electric $ 300.00 $ 300.00 $ 300.00 $ 300.00 $ 300.00 $ 300.00 $ 300.00 $ 300.00 $ 300.00 $ 300.00 $ 300.00 $ 300.00 $ 3,600.00\n\n+Water $ 40.00 $ 40.00 $ 40.00 $ 40.00 $ 40.00 $ 40.00 $ 40.00 $ 40.00 $ 40.00 $ 40.00 $ 40.00 $ 40.00 $ 480.00\n\n+Telephone $ 250.00 $ 250.00 $ 250.00 $ 250.00 $ 250.00 $ 250.00 $ 250.00 $ 250.00 $ 250.00 $ 250.00 $ 250.00 $ 250.00 $ 3,000.00\n\n+Internet access $ 180.00 $ 180.00 $ 180.00 $ 180.00 $ 180.00 $ 180.00 $ 180.00 $ 180.00 $ 180.00 $ 180.00 $ 180.00 $ 180.00 $ 2,160.00\n\n+Office supplies $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 2,400.00\n\n+Security $ 600.00 $ 600.00 $ 600.00 $ 600.00 $ 600.00 $ 600.00 $ 600.00 $ 600.00 $ 600.00 $ 600.00 $ 600.00 $ 600.00 $ 7,200.00\n\n+MARKETING COSTS $ 8,100.00 $ 3,100.00 $ 3,100.00 $ 11,100.00 $ 3,100.00 $ 3,900.00 $ 8,100.00 $ 6,100.00 $ 3,100.00 $ 8,100.00 $ 3,100.00 $ 6,900.00 $ 67,800.00\n\n+Web site hosting $ 500.00 $ 500.00 $ 500.00 $ 500.00 $ 500.00 $ 500.00 $ 500.00 $ 500.00 $ 500.00 $ 500.00 $ 500.00 $ 500.00 $ 6,000.00\n\n+Web site updates $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 1,000.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 1,000.00 $ 4,000.00\n\n+Collateral preparation $ 5,000.00 $ - $ - $ 5,000.00 $ - $ - $ 5,000.00 $ - $ - $ 5,000.00 $ - $ - $ 20,000.00\n\n+Collateral printing $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 2,400.00\n\n+Marketing events $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 5,000.00 $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 5,000.00 $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 5,000.00 $ 33,000.00\n\n+Miscellaneous expenses $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 2,400.00\n\n+TRAINING / TRAVEL $ 4,000.00 $ 4,000.00 $ 4,000.00 $ 4,000.00 $ 4,000.00 $ 4,000.00 $ 4,000.00 $ 4,000.00 $ 4,000.00 $ 4,000.00 $ 4,000.00 $ 4,000.00 $ 48,000.00\n\n+Training classes $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 24,000.00\n\n+Travel costs $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 2,000.00 $ 24,000.00\n\n+MONTHLY TOTAL $ 131,420.00 $ 126,820.00 $ 126,820.00 $ 137,695.00 $ 129,695.00 $ 130,495.00 $ 134,695.00 $ 138,918.00 $ 135,918.00 $ 140,918.00 $ 136,218.00 $ 140,018.00 $ 1,609,630.00\n\n ---PAGE---\n\n Market Financial Consulting\n\n ACTUAL EXPENSES\n\n January February March April May June July August September October November December Total\n\n-EMPLOYEE COSTS $ 107,950.00 $ 107,950.00 $ 107,950.00 $ 111,760.00 $ 111,760.00 $ 111,760.00 $ - 0 $ - 0 $ - 0 $ - 0 $ - 0 $ - 0 $ 659,130.00\n\n-Wages $ 85,000.00 $ 85,000.00 $ 85,000.00 $ 88,000.00 $ 88,000.00 $ 88,000.00 $ 519,000.00\n\n-Benefits $ 22,950.00 $ 22,950.00 $ 22,950.00 $ 23,760.00 $ 23,760.00 $ 23,760.00 $ 140,130.00\n\n-OFFICE COSTS $ 11,387.00 $ 11,698.00 $ 11,692.00 $ 11,611.00 $ 11,508.00 $ 11,454.00 $ - 0 $ - 0 $ - 0 $ - 0 $ - 0 $ - 0 $ 69,350.00\n\n-Office lease $ 9,800.00 $ 9,800.00 $ 9,800.00 $ 9,800.00 $ 9,800.00 $ 9,800.00 $ 58,800.00\n\n-Gas $ 4.00 $ 430.00 $ 385.00 $ 230.00 $ 87.00 $ 88.00 $ 1,224.00\n\n-Electric $ 288.00 $ 278.00 $ 268.00 $ 299.00 $ 306.00 $ 290.00 $ 1,729.00\n\n-Water $ 35.00 $ 33.00 $ 34.00 $ 36.00 $ 34.00 $ 36.00 $ 208.00\n\n-Telephone $ 224.00 $ 235.00 $ 265.00 $ 245.00 $ 245.00 $ 220.00 $ 1,434.00\n\n-Internet access $ 180.00 $ 180.00 $ 180.00 $ 180.00 $ 180.00 $ 180.00 $ 1,080.00\n\n-Office supplies $ 256.00 $ 142.00 $ 160.00 $ 221.00 $ 256.00 $ 240.00 $ 1,275.00\n\n-Security $ 600.00 $ 600.00 $ 600.00 $ 600.00 $ 600.00 $ 600.00 $ 3,600.00\n\n-MARKETING COSTS $ 7,545.00 $ 3,556.00 $ 3,123.00 $ 11,223.00 $ 2,987.00 $ 4,725.00 $ - 0 $ - 0 $ - 0 $ - 0 $ - 0 $ - 0 $ 33,159.00\n\n-Web site hosting $ 500.00 $ 500.00 $ 500.00 $ 500.00 $ 500.00 $ 500.00 $ 3,000.00\n\n-Web site updates $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 1,500.00 $ 2,500.00\n\n-Collateral preparation $ 4,800.00 $ - 0 $ - 0 $ 5,500.00 $ - 0 $ - 0 $ 10,300.00\n\n-Collateral printing $ 100.00 $ 500.00 $ 100.00 $ 100.00 $ 600.00 $ 180.00 $ 1,580.00\n\n-Marketing events $ 1,800.00 $ 2,200.00 $ 2,200.00 $ 4,700.00 $ 1,500.00 $ 2,300.00 $ 14,700.00\n\n-Miscellaneous expenses $ 145.00 $ 156.00 $ 123.00 $ 223.00 $ 187.00 $ 245.00 $ 1,079.00\n\n-TRAINING / TRAVEL $ 2,800.00 $ 4,600.00 $ 2,800.00 $ 2,800.00 $ 2,000.00 $ 6,300.00 $ - 0 $ - 0 $ - 0 $ - 0 $ - 0 $ - 0 $ 21,300.00\n\n-Training classes $ 1,600.00 $ 2,400.00 $ 1,400.00 $ 1,600.00 $ 1,200.00 $ 2,800.00 $ 11,000.00\n\n-Travel costs $ 1,200.00 $ 2,200.00 $ 1,400.00 $ 1,200.00 $ 800.00 $ 3,500.00 $ 10,300.00\n\n-MONTHLY TOTAL $ 129,682.00 $ 127,804.00 $ 125,565.00 $ 137,394.00 $ 128,255.00 $ 134,239.00 $ - 0 $ - 0 $ - 0 $ - 0 $ - 0 $ - 0 $ 782,939.00\n\n+EMPLOYEE COSTS $ 107,950.00 $ 107,950.00 $ 107,950.00 $ 111,760.00 $ 111,760.00 $ 111,760.00 $ - $ - $ - $ - $ - $ - $ 659,130.00\n\n+Wages $ 85,000.00 $ 85,000.00 $ 85,000.00 $ 88,000.00 $ 88,000.00 $ 88,000.00 $ 519,000.00\n\n+Benefits $ 22,950.00 $ 22,950.00 $ 22,950.00 $ 23,760.00 $ 23,760.00 $ 23,760.00 $ 140,130.00\n\n+OFFICE COSTS $ 11,387.00 $ 11,698.00 $ 11,692.00 $ 11,611.00 $ 11,508.00 $ 11,454.00 $ - $ - $ - $ - $ - $ - $ 69,350.00\n\n+Office lease $ 9,800.00 $ 9,800.00 $ 9,800.00 $ 9,800.00 $ 9,800.00 $ 9,800.00 $ 58,800.00\n\n+Gas $ 4.00 $ 430.00 $ 385.00 $ 230.00 $ 87.00 $ 88.00 $ 1,224.00\n\n+Electric $ 288.00 $ 278.00 $ 268.00 $ 299.00 $ 306.00 $ 290.00 $ 1,729.00\n\n+Water $ 35.00 $ 33.00 $ 34.00 $ 36.00 $ 34.00 $ 36.00 $ 208.00\n\n+Telephone $ 224.00 $ 235.00 $ 265.00 $ 245.00 $ 245.00 $ 220.00 $ 1,434.00\n\n+Internet access $ 180.00 $ 180.00 $ 180.00 $ 180.00 $ 180.00 $ 180.00 $ 1,080.00\n\n+Office supplies $ 256.00 $ 142.00 $ 160.00 $ 221.00 $ 256.00 $ 240.00 $ 1,275.00\n\n+Security $ 600.00 $ 600.00 $ 600.00 $ 600.00 $ 600.00 $ 600.00 $ 3,600.00\n\n+MARKETING COSTS $ 7,545.00 $ 3,556.00 $ 3,123.00 $ 11,223.00 $ 2,987.00 $ 4,725.00 $ - $ - $ - $ - $ - $ - $ 33,159.00\n\n+Web site hosting $ 500.00 $ 500.00 $ 500.00 $ 500.00 $ 500.00 $ 500.00 $ 3,000.00\n\n+Web site updates $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 1,500.00 $ 2,500.00\n\n+Collateral preparation $ 4,800.00 $ - $ - $ 5,500.00 $ - $ - $ 10,300.00\n\n+Collateral printing $ 100.00 $ 500.00 $ 100.00 $ 100.00 $ 600.00 $ 180.00 $ 1,580.00\n\n+Marketing events $ 1,800.00 $ 2,200.00 $ 2,200.00 $ 4,700.00 $ 1,500.00 $ 2,300.00 $ 14,700.00\n\n+Miscellaneous expenses $ 145.00 $ 156.00 $ 123.00 $ 223.00 $ 187.00 $ 245.00 $ 1,079.00\n\n+TRAINING / TRAVEL $ 2,800.00 $ 4,600.00 $ 2,800.00 $ 2,800.00 $ 2,000.00 $ 6,300.00 $ - $ - $ - $ - $ - $ - $ 21,300.00\n\n+Training classes $ 1,600.00 $ 2,400.00 $ 1,400.00 $ 1,600.00 $ 1,200.00 $ 2,800.00 $ 11,000.00\n\n+Travel costs $ 1,200.00 $ 2,200.00 $ 1,400.00 $ 1,200.00 $ 800.00 $ 3,500.00 $ 10,300.00\n\n+MONTHLY TOTAL $ 129,682.00 $ 127,804.00 $ 125,565.00 $ 137,394.00 $ 128,255.00 $ 134,239.00 $ - $ - $ - $ - $ - $ - $ 782,939.00\n\n ---PAGE---\n\n Market Financial Consulting\n\n EXPENSE VARIANCES\n\n Note: negative values mean actual expense is higher than planned expense\n\n January February March April May June July August September October November December Total\n\n-EMPLOYEE COSTS $ - 0 $ - 0 $ - 0 $ (635.00) $ (635.00) $ (635.00) $ - 0 $ - 0 $ - 0 $ - 0 $ - 0 $ - 0 $ (1,905.00)\n\n-Wages $ - 0 $ - 0 $ - 0 $ (500.00) $ (500.00) $ (500.00) $ (1,500.00)\n\n-Benefits $ - 0 $ - 0 $ - 0 $ (135.00) $ (135.00) $ (135.00) $ (405.00)\n\n-OFFICE COSTS $ (17.00) $ 72.00 $ 78.00 $ (141.00) $ (38.00) $ 16.00 $ - 0 $ - 0 $ - 0 $ - 0 $ - 0 $ - 0 $ (30.00)\n\n-Office lease $ - 0 $ - 0 $ - 0 $ - 0 $ - 0 $ - 0 $ - 0\n\n-Gas $ (4.00) $ (30.00) $ 15.00 $ (130.00) $ 13.00 $ 12.00 $ (124.00)\n\n-Electric $ 12.00 $ 22.00 $ 32.00 $ 1.00 $ (6.00) $ 10.00 $ 71.00\n\n-Water $ 5.00 $ 7.00 $ 6.00 $ 4.00 $ 6.00 $ 4.00 $ 32.00\n\n-Telephone $ 26.00 $ 15.00 $ (15.00) $ 5.00 $ 5.00 $ 30.00 $ 66.00\n\n-Internet access $ - 0 $ - 0 $ - 0 $ - 0 $ - 0 $ - 0 $ - 0\n\n-Office supplies $ (56.00) $ 58.00 $ 40.00 $ (21.00) $ (56.00) $ (40.00) $ (75.00)\n\n-Security $ - 0 $ - 0 $ - 0 $ - 0 $ - 0 $ - 0 $ - 0\n\n-MARKETING COSTS $ 555.00 $ (456.00) $ (23.00) $ (123.00) $ 113.00 $ (825.00) $ - 0 $ - 0 $ - 0 $ - 0 $ - 0 $ - 0 $ (759.00)\n\n-Web site hosting $ - 0 $ - 0 $ - 0 $ - 0 $ - 0 $ - 0 $ - 0\n\n-Web site updates $ - 0 $ - 0 $ - 0 $ - 0 $ - 0 $ (500.00) $ (500.00)\n\n-Collateral preparation $ 200.00 $ - 0 $ - 0 $ (500.00) $ - 0 $ - 0 $ (300.00)\n\n-Collateral printing $ 100.00 $ (300.00) $ 100.00 $ 100.00 $ (400.00) $ 20.00 $ (380.00)\n\n-Marketing events $ 200.00 $ (200.00) $ (200.00) $ 300.00 $ 500.00 $ (300.00) $ 300.00\n\n-Miscellaneous expenses $ 55.00 $ 44.00 $ 77.00 $ (23.00) $ 13.00 $ (45.00) $ 121.00\n\n-TRAINING / TRAVEL $ 1,200.00 $ (600.00) $ 1,200.00 $ 1,200.00 $ 2,000.00 $ (2,300.00) $ - 0 $ - 0 $ - 0 $ - 0 $ - 0 $ - 0 $ 2,700.00\n\n-Training classes $ 400.00 $ (400.00) $ 600.00 $ 400.00 $ 800.00 $ (800.00) $ 1,000.00\n\n-Travel costs $ 800.00 $ (200.00) $ 600.00 $ 800.00 $ 1,200.00 $ (1,500.00) $ 1,700.00\n\n-MONTHLY VARIANCE $ 1,738.00 $ (984.00) $ 1,255.00 $ 301.00 $ 1,440.00 $ (3,744.00) $ - 0 $ - 0 $ - 0 $ - 0 $ - 0 $ - 0 $ 6.00\n+EMPLOYEE COSTS $ - $ - $ - $ (635.00) $ (635.00) $ (635.00) $ - $ - $ - $ - $ - $ - $ (1,905.00)\n\n+Wages $ - $ - $ - $ (500.00) $ (500.00) $ (500.00) $ (1,500.00)\n\n+Benefits $ - $ - $ - $ (135.00) $ (135.00) $ (135.00) $ (405.00)\n\n+OFFICE COSTS $ (17.00) $ 72.00 $ 78.00 $ (141.00) $ (38.00) $ 16.00 $ - $ - $ - $ - $ - $ - $ (30.00)\n\n+Office lease $ - $ - $ - $ - $ - $ - $ -\n\n+Gas $ (4.00) $ (30.00) $ 15.00 $ (130.00) $ 13.00 $ 12.00 $ (124.00)\n\n+Electric $ 12.00 $ 22.00 $ 32.00 $ 1.00 $ (6.00) $ 10.00 $ 71.00\n\n+Water $ 5.00 $ 7.00 $ 6.00 $ 4.00 $ 6.00 $ 4.00 $ 32.00\n\n+Telephone $ 26.00 $ 15.00 $ (15.00) $ 5.00 $ 5.00 $ 30.00 $ 66.00\n\n+Internet access $ - $ - $ - $ - $ - $ - $ -\n\n+Office supplies $ (56.00) $ 58.00 $ 40.00 $ (21.00) $ (56.00) $ (40.00) $ (75.00)\n\n+Security $ - $ - $ - $ - $ - $ - $ -\n\n+MARKETING COSTS $ 555.00 $ (456.00) $ (23.00) $ (123.00) $ 113.00 $ (825.00) $ - $ - $ - $ - $ - $ - $ (759.00)\n\n+Web site hosting $ - $ - $ - $ - $ - $ - $ -\n\n+Web site updates $ - $ - $ - $ - $ - $ (500.00) $ (500.00)\n\n+Collateral preparation $ 200.00 $ - $ - $ (500.00) $ - $ - $ (300.00)\n\n+Collateral printing $ 100.00 $ (300.00) $ 100.00 $ 100.00 $ (400.00) $ 20.00 $ (380.00)\n\n+Marketing events $ 200.00 $ (200.00) $ (200.00) $ 300.00 $ 500.00 $ (300.00) $ 300.00\n\n+Miscellaneous expenses $ 55.00 $ 44.00 $ 77.00 $ (23.00) $ 13.00 $ (45.00) $ 121.00\n\n+TRAINING / TRAVEL $ 1,200.00 $ (600.00) $ 1,200.00 $ 1,200.00 $ 2,000.00 $ (2,300.00) $ - $ - $ - $ - $ - $ - $ 2,700.00\n\n+Training classes $ 400.00 $ (400.00) $ 600.00 $ 400.00 $ 800.00 $ (800.00) $ 1,000.00\n\n+Travel costs $ 800.00 $ (200.00) $ 600.00 $ 800.00 $ 1,200.00 $ (1,500.00) $ 1,700.00\n\n+MONTHLY VARIANCE $ 1,738.00 $ (984.00) $ 1,255.00 $ 301.00 $ 1,440.00 $ (3,744.00) $ - $ - $ - $ - $ - $ - $ 6.00",
+ "visual_scores": [
+ 0.816,
+ 0.7999,
+ 0.8033
+ ],
+ "visual_avg": 0.8064,
+ "diff_images": [
+ {
+ "page": 1,
+ "minipdf_img": "Business expenses budget2_p1_minipdf.png",
+ "reference_img": "Business expenses budget2_p1_reference.png",
+ "auxiliary_img": "Business expenses budget2_p1_libreoffice.png",
+ "heatmap_img": "Business expenses budget2_p1_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1754,
+ 1241
+ ],
+ "difference_bbox_px": [
+ 229,
+ 75,
+ 1522,
+ 1124
+ ],
+ "changed_pixels": 470506,
+ "changed_fraction": 0.216154,
+ "mean_abs_rgb": 11.7846,
+ "rmse_rgb": 35.2513,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "Business expenses budget2_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ },
+ {
+ "page": 2,
+ "minipdf_img": "Business expenses budget2_p2_minipdf.png",
+ "reference_img": "Business expenses budget2_p2_reference.png",
+ "auxiliary_img": "Business expenses budget2_p2_libreoffice.png",
+ "heatmap_img": "Business expenses budget2_p2_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1754,
+ 1241
+ ],
+ "difference_bbox_px": [
+ 204,
+ 75,
+ 1548,
+ 1163
+ ],
+ "changed_pixels": 471683,
+ "changed_fraction": 0.216695,
+ "mean_abs_rgb": 11.0576,
+ "rmse_rgb": 32.6913,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "Business expenses budget2_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ },
+ {
+ "page": 3,
+ "minipdf_img": "Business expenses budget2_p3_minipdf.png",
+ "reference_img": "Business expenses budget2_p3_reference.png",
+ "auxiliary_img": "Business expenses budget2_p3_libreoffice.png",
+ "heatmap_img": "Business expenses budget2_p3_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1754,
+ 1241
+ ],
+ "difference_bbox_px": [
+ 153,
+ 75,
+ 1598,
+ 1163
+ ],
+ "changed_pixels": 435364,
+ "changed_fraction": 0.20001,
+ "mean_abs_rgb": 10.0189,
+ "rmse_rgb": 29.5823,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "Business expenses budget2_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ }
+ ],
+ "overall_score": 0.8594
+ },
+ {
+ "name": "Business plan checklist with SWOT analysis1",
+ "minipdf_exists": true,
+ "reference_exists": true,
+ "report_scope": "java-issue-xlsx",
+ "case_id": "Business plan checklist with SWOT analysis1",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/Business plan checklist with SWOT analysis1.xlsx",
+ "suite": "issue",
+ "minipdf_size": 40955,
+ "reference_size": 64252,
+ "pdf_valid": true,
+ "minipdf_pages": 1,
+ "reference_pages": 1,
+ "compared_pages": 3,
+ "text_similarity": 0.8583,
+ "flat_text_similarity": 0.6478,
+ "word_text_similarity": 0.8583,
+ "text_diff": "--- minipdf/Business plan checklist with SWOT analysis1.pdf\n+++ reference/Business plan checklist with SWOT analysis1.pdf\n@@ -1,35 +1,37 @@\n Northwind Traders\n\n Business planning checklist\n\n-Using the strength, weakness, opportunity, and threat (SWOT) analysis framework, develop a checklist of the key activi\n\n-ties that need to be performed when preparing a formal business plan in the table, below.\n\n+Using the strength, weakness, opportunity, and threat (SWOT) analysis framework, develop a checklist of the key activities\n\n+that need to be performed when preparing a formal business plan in the table, below.\n\n Activity Owner Completion date\n\n-Strengths: Define the company's current mission statemen\n\n-Luca Richter 1/9/23\n\n-t.\n\n-Strengths: Identify market segments in which the compan\n\n-y will participate by conducting primary and secondary ma Dylan Williams 1/9/23\n\n-rket research.\n\n-Strengths: Identify the company's value proposition and h\n\n-Kristin Orav 1/16/23\n\n-ow it will differentiate itself within the marketplace.\n\n-Weaknesses: Identify any barriers to market entry (for exa\n\n-mple, capital requirements, technical barriers, patents, an Flora Berggren 1/6/23\n\n-d process barriers) that the company needs to overcome.\n\n-Weaknesses: Identify any risks inherent to the organizatio\n\n-n that need to be mitigated so that the company can realiz Flora Berggren 1/6/23\n\n-e the business plan.\n\n+Strengths: Define the company's current mission\n\n+Luca Richter 1/9/2023\n\n+statement.\n\n+Strengths: Identify market segments in which the\n\n+company will participate by conducting primary and Dylan Williams 1/9/2023\n\n+secondary market research.\n\n+Strengths: Identify the company's value proposition and\n\n+Kristin Orav 1/16/2023\n\n+how it will differentiate itself within the marketplace.\n\n+Weaknesses: Identify any barriers to market entry (for\n\n+example, capital requirements, technical barriers, patents,\n\n+Flora Berggren 1/6/2023\n\n+and process barriers) that the company needs to\n\n+overcome.\n\n+Weaknesses: Identify any risks inherent to the\n\n+organization that need to be mitigated so that the company Flora Berggren 1/6/2023\n\n+can realize the business plan.\n\n Opportunities: Identify areas where the current market is\n\n-Kristin Orav 1/6/23\n\n+Kristin Orav 1/6/2023\n\n underserved that provide an opportunity for the company.\n\n-Opportunities: Identify any key processes, intellectual capi\n\n-tal, or other resources that the company can use to its adv Ian Hansson 1/9/23\n\n-antage in the marketplace.\n\n-Threats: Identify primary competitors, and then analyze co\n\n-mpetitor performance by using all available data and additi Gaurav Cheema 1/9/23\n\n-onal data that can be verified.\n\n-Threats: Identify secondary and potential future competito\n\n-Chela Arapelli 1/16/23\n\n-rs that might affect the business plan.\n\n-Threats: Develop strategies for mitigating primary and sec\n\n-Gaurav Cheema 1/16/23\n\n-ondary competitive threats.\n+Opportunities: Identify any key processes, intellectual\n\n+capital, or other resources that the company can use to its Ian Hansson 1/9/2023\n\n+advantage in the marketplace.\n\n+Threats: Identify primary competitors, and then analyze\n\n+competitor performance by using all available data and Gaurav Cheema 1/9/2023\n\n+additional data that can be verified.\n\n+Threats: Identify secondary and potential future\n\n+Chela Arapelli 1/16/2023\n\n+competitors that might affect the business plan.\n\n+Threats: Develop strategies for mitigating primary and\n\n+Gaurav Cheema 1/16/2023\n\n+secondary competitive threats.",
+ "visual_scores": [
+ 0.582
+ ],
+ "visual_avg": 0.582,
+ "diff_images": [
+ {
+ "page": 1,
+ "minipdf_img": "Business plan checklist with SWOT analysis1_p1_minipdf.png",
+ "reference_img": "Business plan checklist with SWOT analysis1_p1_reference.png",
+ "auxiliary_img": "Business plan checklist with SWOT analysis1_p1_libreoffice.png",
+ "heatmap_img": "Business plan checklist with SWOT analysis1_p1_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1241,
+ 1754
+ ],
+ "difference_bbox_px": [
+ 88,
+ 62,
+ 1214,
+ 1448
+ ],
+ "changed_pixels": 955797,
+ "changed_fraction": 0.439101,
+ "mean_abs_rgb": 33.8616,
+ "rmse_rgb": 70.0944,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "Business plan checklist with SWOT analysis1_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ }
+ ],
+ "overall_score": 0.7761
+ },
+ {
+ "name": "Event budget1",
+ "minipdf_exists": true,
+ "reference_exists": true,
+ "report_scope": "java-issue-xlsx",
+ "case_id": "Event budget1",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/Event budget1.xlsx",
+ "suite": "issue",
+ "minipdf_size": 61943,
+ "reference_size": 121223,
+ "pdf_valid": true,
+ "minipdf_pages": 7,
+ "reference_pages": 5,
+ "compared_pages": 3,
+ "text_similarity": 0.9859,
+ "flat_text_similarity": 0.9859,
+ "word_text_similarity": 0.9773,
+ "text_diff": "--- minipdf/Event budget1.pdf\n+++ reference/Event budget1.pdf\n@@ -1,15 +1,16 @@\n ABOUT THIS TEMPLATE\n\n-Use this event budget workbook to track expenses incurred on and income earned from an event.\n\n+Use this event budget workbook to track expenses incurred on and income earned from an\n\n+event.\n\n Enter details in tables in expenses worksheet and income worksheet.\n\n Total expenses and total income are auto-calculated.\n\n Profit & loss summary and chart are auto-updated in profit-loss summary worksheet.\n\n Note:\n\n-Additional instructions have been provided in column A in each worksheet. This text has been intentio\n\n-nally hidden. To remove text, select column A, then select DELETE.\n\n-To learn more about tables, press SHIFT and then F10 within a table, select the TABLE option, and th\n\n-en select ALTERNATIVE TEXT\n\n+Additional instructions have been provided in column A in each worksheet. This text has been\n\n+intentionally hidden. To remove text, select column A, then select DELETE.\n\n+To learn more about tables, press SHIFT and then F10 within a table, select the TABLE option, and\n\n+then select ALTERNATIVE TEXT\n\n ---PAGE---\n\n-Event budget EXPENSE\n\n+Event budget EXPENSES\n\n Estimated Actual\n\n TOTAL EXPENSES\n\n $882.00 $333.00\n\n@@ -31,10 +32,10 @@\n Photocopying/Printing $20.00 Gifts $100.00\n\n Postage Total $100.00 $0.00\n\n Total $20.00 $0.00\n\n----PAGE---\n\n Miscellaneous Estimated Actual\n\n Telephone $13.00\n\n Transportation $12.00\n\n Stationery supplies\n\n Fax services\n\n-Total $12.00 $13.00\n+Total $12.00 $13.00\n\n+---PAGE---",
+ "visual_scores": [
+ 0.961,
+ 0.5324,
+ 0.7295
+ ],
+ "visual_avg": 0.741,
+ "diff_images": [
+ {
+ "page": 1,
+ "minipdf_img": "Event budget1_p1_minipdf.png",
+ "reference_img": "Event budget1_p1_reference.png",
+ "auxiliary_img": "Event budget1_p1_libreoffice.png",
+ "heatmap_img": "Event budget1_p1_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1241,
+ 1754
+ ],
+ "difference_bbox_px": [
+ 73,
+ 153,
+ 1165,
+ 770
+ ],
+ "changed_pixels": 93832,
+ "changed_fraction": 0.043107,
+ "mean_abs_rgb": 6.6463,
+ "rmse_rgb": 36.9543,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "Event budget1_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ },
+ {
+ "page": 2,
+ "minipdf_img": "Event budget1_p2_minipdf.png",
+ "reference_img": "Event budget1_p2_reference.png",
+ "auxiliary_img": "Event budget1_p2_libreoffice.png",
+ "heatmap_img": "Event budget1_p2_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1241,
+ 1754
+ ],
+ "difference_bbox_px": [
+ 61,
+ 143,
+ 1211,
+ 1625
+ ],
+ "changed_pixels": 1056182,
+ "changed_fraction": 0.485219,
+ "mean_abs_rgb": 22.4906,
+ "rmse_rgb": 46.7637,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "Event budget1_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ },
+ {
+ "page": 3,
+ "minipdf_img": "Event budget1_p3_minipdf.png",
+ "reference_img": "Event budget1_p3_reference.png",
+ "auxiliary_img": "Event budget1_p3_libreoffice.png",
+ "heatmap_img": "Event budget1_p3_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1241,
+ 1754
+ ],
+ "difference_bbox_px": [
+ 62,
+ 114,
+ 1211,
+ 568
+ ],
+ "changed_pixels": 481866,
+ "changed_fraction": 0.221373,
+ "mean_abs_rgb": 4.318,
+ "rmse_rgb": 14.6122,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "Event budget1_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ }
+ ],
+ "overall_score": 0.7908
+ },
+ {
+ "name": "Expense report basic1",
+ "minipdf_exists": true,
+ "reference_exists": true,
+ "report_scope": "java-issue-xlsx",
+ "case_id": "Expense report basic1",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/Expense report basic1.xlsx",
+ "suite": "issue",
+ "minipdf_size": 48922,
+ "reference_size": 47896,
+ "pdf_valid": true,
+ "minipdf_pages": 1,
+ "reference_pages": 1,
+ "compared_pages": 3,
+ "text_similarity": 0.9556,
+ "flat_text_similarity": 0.942,
+ "word_text_similarity": 0.9556,
+ "text_diff": "--- minipdf/Expense report basic1.pdf\n+++ reference/Expense report basic1.pdf\n@@ -6,7 +6,7 @@\n Name Cora Thomas Position Sales rep SSN 123-45-****\n\n Department Marketing & sales Manager Liane Cormier Employee ID 8675309\n\n Date Account Description Hotel Transport Fuel Meals Phone Entertainment Misc. Total\n\n-10/5/23 Wide World Importers Networking $111.00 $250.00 $60.00 $50.00 $0.00 $300.00 $25.00 $796.00\n\n+10/5/2023 Wide World Importers Networking $111.00 $250.00 $60.00 $50.00 $0.00 $300.00 $25.00 $796.00\n\n $0.00\n\n $0.00\n\n $0.00\n\n@@ -16,10 +16,8 @@\n $0.00\n\n $0.00\n\n Total $111.00 $250.00 $60.00 $50.00 $0.00 $300.00 $25.00 $796.00\n\n-$796.00\n\n-Subtotal\n\n-$0.00\n\n+Subtotal $796.00\n\n+Advances $0.00\n\n APPROVED\n\n-NOTES Advances\n\n-$796.00\n\n-Total\n+NOTES\n\n+Total $796.00",
+ "visual_scores": [
+ 0.5218
+ ],
+ "visual_avg": 0.5218,
+ "diff_images": [
+ {
+ "page": 1,
+ "minipdf_img": "Expense report basic1_p1_minipdf.png",
+ "reference_img": "Expense report basic1_p1_reference.png",
+ "auxiliary_img": "Expense report basic1_p1_libreoffice.png",
+ "heatmap_img": "Expense report basic1_p1_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1754,
+ 1241
+ ],
+ "difference_bbox_px": [
+ 63,
+ 59,
+ 1690,
+ 856
+ ],
+ "changed_pixels": 458410,
+ "changed_fraction": 0.210597,
+ "mean_abs_rgb": 6.7153,
+ "rmse_rgb": 23.9935,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "Expense report basic1_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ }
+ ],
+ "overall_score": 0.791
+ },
+ {
+ "name": "Grocery list1",
+ "minipdf_exists": true,
+ "reference_exists": true,
+ "report_scope": "java-issue-xlsx",
+ "case_id": "Grocery list1",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/Grocery list1.xlsx",
+ "suite": "issue",
+ "minipdf_size": 34874,
+ "reference_size": 71396,
+ "pdf_valid": true,
+ "minipdf_pages": 1,
+ "reference_pages": 1,
+ "compared_pages": 3,
+ "text_similarity": 0.8403,
+ "flat_text_similarity": 0.6784,
+ "word_text_similarity": 0.8403,
+ "text_diff": "--- minipdf/Grocery list1.pdf\n+++ reference/Grocery list1.pdf\n@@ -1,48 +1,28 @@\n ORCHARD GROCERY HOME DELIVERY LOCAL MARKET OTHER GRAND TOTAL\n\n GROCERY LIST\n\n-Customize this list. Replace the entries above with your own to track your most frequentl\n\n-y used categories.\n\n+Customize this list. Replace the entries above with your own to track your\n\n $11.95 $6.12 $31.85 $216.60 $3.99 $270.51\n\n+most frequently used categories.\n\n DONE? ITEM STORE CATEGORY QTY UNIT UNIT PRICE TOTAL NOTE\n\n-Yes Peaches Azure River Farm ORCHARD lbs $2.99 $5.98\n\n-2\n\n-Yes Apples Azure River Farm ORCHARD lbs $1.99 $5.97 Have coupon\n\n-3\n\n-Bananas Wide World Importers OTHER bunch $3.99 $3.99\n\n-1\n\n-Yes Lettuce Market LOCAL MARKET head $2.29 $4.58\n\n-2\n\n-Tomatoes Market LOCAL MARKET lbs $3.49 $13.96\n\n-4\n\n-Yes Squash Market LOCAL MARKET each $1.50 $3.00\n\n-2\n\n-Yes Celery Wide World Importers LOCAL MARKET bunch $1.99 $3.98\n\n-2\n\n-Cucumber Market LOCAL MARKET lbs $2.29 $2.29\n\n-1\n\n-Mushrooms Wide World Importers GROCERY lbs $2.25 $1.13\n\n-0.5\n\n-HOME DELIVER\n\n-Yes Milk Local Farmer gal $3.99 $7.98\n\n-Y 2\n\n-HOME DELIVER Variety of block c\n\n-Yes Cheese Local Farmer lbs $9.99 $9.99\n\n-Y 1 heeses\n\n-HOME DELIVER\n\n-Yes Eggs Local Farmer doz $3.50 $7.00\n\n-Y 2\n\n-HOME DELIVER\n\n-Yes Cottage cheese Local Farmer 16 oz $3.89 $3.89\n\n-Y 1\n\n-HOME DELIVER\n\n-Yes Sour cream Local Farmer 8 oz $2.99 $2.99\n\n-Y 1\n\n-Yogurt Wide World Importers GROCERY 16 oz $4.99 $4.99 Greek with honey\n\n-1\n\n-Bacon wrapped fil\n\n-Beef Farmer's Market LOCAL MARKET lbs $7.99 $79.90\n\n-10 ets\n\n-Wild Salmon Fish Market LOCAL MARKET lbs $8.99 $53.94\n\n-6\n\n-Alaskan King Crab Legs Fish Market LOCAL MARKET lbs $10.99 $54.95\n\n-5\n+Yes Peaches Azure River Farm ORCHARD 2 lbs $2.99 $5.98\n\n+Yes Apples Azure River Farm ORCHARD 3 lbs $1.99 $5.97 Have coupon\n\n+Bananas Wide World Importers OTHER 1 bunch $3.99 $3.99\n\n+Yes Lettuce Market LOCAL MARKET 2 head $2.29 $4.58\n\n+Tomatoes Market LOCAL MARKET 4 lbs $3.49 $13.96\n\n+Yes Squash Market LOCAL MARKET 2 each $1.50 $3.00\n\n+Yes Celery Wide World Importers LOCAL MARKET 2 bunch $1.99 $3.98\n\n+Cucumber Market LOCAL MARKET 1 lbs $2.29 $2.29\n\n+Mushrooms Wide World Importers GROCERY 0.5 lbs $2.25 $1.13\n\n+Yes Milk Local Farmer HOME DELIVERY 2 gal $3.99 $7.98\n\n+Variety of block\n\n+Yes Cheese Local Farmer HOME DELIVERY 1 lbs $9.99 $9.99\n\n+cheeses\n\n+Yes Eggs Local Farmer HOME DELIVERY 2 doz $3.50 $7.00\n\n+Yes Cottage cheese Local Farmer HOME DELIVERY 1 16 oz $3.89 $3.89\n\n+Yes Sour cream Local Farmer HOME DELIVERY 1 8 oz $2.99 $2.99\n\n+Yogurt Wide World Importers GROCERY 1 16 oz $4.99 $4.99 Greek with honey\n\n+Bacon wrapped\n\n+Beef Farmer's Market LOCAL MARKET 10 lbs $7.99 $79.90\n\n+filets\n\n+Wild Salmon Fish Market LOCAL MARKET 6 lbs $8.99 $53.94\n\n+Alaskan King Crab Legs Fish Market LOCAL MARKET 5 lbs $10.99 $54.95",
+ "visual_scores": [
+ 0.6961
+ ],
+ "visual_avg": 0.6961,
+ "diff_images": [
+ {
+ "page": 1,
+ "minipdf_img": "Grocery list1_p1_minipdf.png",
+ "reference_img": "Grocery list1_p1_reference.png",
+ "auxiliary_img": "Grocery list1_p1_libreoffice.png",
+ "heatmap_img": "Grocery list1_p1_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1241,
+ 1754
+ ],
+ "difference_bbox_px": [
+ 43,
+ 77,
+ 1229,
+ 960
+ ],
+ "changed_pixels": 495398,
+ "changed_fraction": 0.22759,
+ "mean_abs_rgb": 17.0865,
+ "rmse_rgb": 50.1037,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "Grocery list1_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ }
+ ],
+ "overall_score": 0.8146
+ },
+ {
+ "name": "Issue202609031340",
+ "minipdf_exists": true,
+ "reference_exists": true,
+ "report_scope": "java-issue-xlsx",
+ "case_id": "Issue202609031340",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/Issue202609031340.xlsx",
+ "suite": "issue",
+ "minipdf_size": 446118,
+ "reference_size": 346206,
+ "pdf_valid": true,
+ "minipdf_pages": 4,
+ "reference_pages": 4,
+ "compared_pages": 3,
+ "text_similarity": 0.9022,
+ "flat_text_similarity": 0.9011,
+ "word_text_similarity": 0.793,
+ "text_diff": "--- minipdf/Issue202609031340.pdf\n+++ reference/Issue202609031340.pdf\n@@ -1,30 +1,34 @@\n 表单编号 XXX-XXX-051-01\n\n-文件编号 QA-SIPI-XXXX-01-1-1\n\n-XXXXXX有限公司\n\n+XXXXXX有限公司 文件编号QA-SIPI-XXXX-01-1-1\n\n 发行日期 2025-04-11\n\n 文件版本 03 修订日期 2025-11-25\n\n 产品穴号 详见注意事项 产品单重 20.45±1.05 g\n\n-注塑制程检验标准书 ¢1.18*10MM(320度加强\n\n+注塑制程检验标准书\n\n+¢1.18*10MM(320度加强\n\n 附件编号 / 销钉规格\n\n 型)\n\n 产品型号 XXXX 部件名称 盖塑胶件 抽样计划 ANSI/ASQ Z1.4Ⅱ 巡检频率 2H/次\n\n-MO25XXXX0100/MO2\n\n+MO25XXXX0100/MO\n\n 模具编号 部件材质 PETG 允收水准 CR: 0 MA:1.0 MI: 2.0\n\n-5XXXX0110\n\n+25XXXX0110\n\n 检验条件 检验光源角度:45°-90°,检验距离30cm,光照900~1200lux\n\n 参考 图纸文件编号:XXXX系列 内部图纸 2025.4.10\n\n 项目 检验工具 巡检内容\n\n 图 部件图纸编号:HKXXXX-01-RB\n\n-结 目视、图纸 1、首件样品整模结构符合图纸设计、同PPS结构一致;\n\n-构 、PPS 2、制程巡检整模产品结构需同首件结构一致。\n\n-颜 目视、限度 1、首件样品颜色需无限接近限度样中的标准样;\n\n-色 样 2、制程巡检产品颜色需同首件颜色一致。\n\n-外 目视、限度 1、注塑成型外观缺陷大小不可超出限度样板;\n\n-观 样 2、其它外观缺陷无限度样的按常规通用标准判定。\n\n+结 目视、图 1、首件样品整模结构符合图纸设计、同PPS结构一致;\n\n+构 纸、PPS 2、制程巡检整模产品结构需同首件结构一致。\n\n+颜 目视、限 1、首件样品颜色需无限接近限度样中的标准样;\n\n+色 度样 2、制程巡检产品颜色需同首件颜色一致。\n\n+外 目视、限 1、注塑成型外观缺陷大小不可超出限度样板;\n\n+观 度样 2、其它外观缺陷无限度样的按常规通用标准判定。\n\n 包装 目视 参照注塑作业指导书(SOP)\n\n 仪器 项目 管控标准(mm) 测量位置 频率\n\n-卡尺 A 68.16 +0.05/-0.17 外形最长距离 1次/班\n\n-卡尺 B 62.03 +0.05/-0.20 外形最宽距离 1次/班\n\n+1次/\n\n+卡尺 A 68.16 +0.05/-0.17 外形最长距离\n\n+班\n\n+1次/\n\n+卡尺 B 62.03 +0.05/-0.20 外形最宽距离\n\n+班\n\n 卡尺 C 27.9 +0.03/-0.05 顶部装饰片槽长度 首件\n\n 卡尺 D 18.87 +0.00/-0.10 后钮侧面装饰片槽长度 首件\n\n 卡尺 E 6.70+0.00/-0.05 后钮侧面大卡槽宽度 首件\n\n@@ -36,44 +40,62 @@\n 后钮针孔中分线中心点至前扣弧\n\n 投影仪 J 53.93+0.04/-0.03 6H\n\n 线中心点距离\n\n-卡尺 K 18.61±0.05 后钮针孔左右间距 1次/班\n\n-高度规 L*2 4.65+0.00/-0.10 后钮针孔中心至口部平面间距 1次/班\n\n-参考资料/项目 代码 取样数量频率 代码 取样数量频率 注意事项及品质履历\n\n+1次/\n\n+卡尺 K 18.61±0.05 后钮针孔左右间距\n\n+班\n\n+1次/\n\n+高度规 L*2 4.65+0.00/-0.10 后钮针孔中心至口部平面间距\n\n+班\n\n+产品后钮装饰片槽缺\n\n+口竖边同卡尺贴紧\n\n+68.16 mm 62.03 mm\n\n+产品口部平面同\n\n+产品口部平面同\n\n+卡尺上平面平行\n\n+卡尺上平面平行\n\n+产品后钮装饰片槽缺\n\n+口竖边同卡尺贴紧\n\n+0.00 ~ 300mm卡尺\n\n+参考资料/项目 代码 取样数量 频率 代码 取样数量 频率 注意事项及品质履历\n\n 1.MO25XXXX0100:1#~4#/MO25XXXX0110:5#~12#\n\n 尺\n\n 寸\n\n 组\n\n 组装制程检验标\n\n-准书 1# 一模 1次/班 2# 一模 1次/班\n\n+1次/ 1次/\n\n+准书 1# 一模 2# 一模\n\n+班 班\n\n 合\n\n-XXXX-00组装成\n\n+XXXX-\n\n 功\n\n-3# 一模 1次/班 5# 一模 1次/班\n\n-品\n\n+1次/ 1次/\n\n+3# 一模 5# 一模\n\n+00组装成品 班 班\n\n 能\n\n-6# 一模 1次/班\n\n+1次/\n\n+6# 一模\n\n+班\n\n+日期 版本 工程担当 品质担当 修 订 内 容\n\n+2025/4/11 00 AAAA AAA 初版发行\n\n 修\n\n-日期 版本工程担当 品质担当 修 订 内 容\n\n+---PAGE---\n\n+修\n\n+A:68.16 +0.05/-0.13改为68.16 +0.05/-0.17;B:62.03 +0.05/-0.10改为62.03 +0.05/-0.20;D:18.87\n\n 订\n\n-2025/4/11 00 AAAA AAA 初版发行\n\n++0.00/-0.05改为18.87\n\n+2025/5/12 01 BBBB BBB\n\n 记\n\n----PAGE---\n\n-A:68.16 +0.05/-0.13改为68.16 +0.05/-0.17;B:62.03 +0.05/-0.10改为62.03 +0.05/-0.20;D:18.87 +0.\n\n-2025/5/12 01 BBBB BBB 00/-0.05改为18.87 +0.00/-0.10;I:8.35+0.00/-0.16改为8.35+0.10/-0.05;J:53.93+0.00/-0.10改为53.93\n\n-+0.05/-0.10;L*2:4.65±0.05改成4.65+0.00/-0.10;更新检验频率\n\n++0.00/-0.10;I:8.35+0.00/-0.16改为8.35+0.10/-0.05;J:53.93+0.00/-0.10改为53.93+0.05/-0.10;\n\n+录 L*2:4.65±0.05改成4.65+0.00/-0.10;更新检验频率\n\n 2025/8/6 02 CCCC CCCC 新增模具编号:MO25XXXX0110\n\n 2025/11/25 03 DDDD DDDD J:53.93+0.05/-0.10改为53.93+0.04/-0.03\n\n 研 制\n\n 制 品\n\n-发 造\n\n+审 发 审 造 审 审 制\n\n 造 保\n\n-工 工 制\n\n+核 工 核 工 核 核 作\n\n 部 部\n\n-程 程 作\n\n-审 审\n\n-审 审\n\n-核 核\n\n-核 核\n\n+程 程\n\n ---PAGE---\n\n 文件编号 QA-SIPI-XXXX-01-1-1 表单编号 QA-FM-051-01\n\n XXXXXX有限公司\n\n@@ -83,7 +105,5 @@\n 部件材质 / 附件编号 /\n\n 产品品质履历(SIP附件)\n\n 版本 日期 问题描述 图片\n\n-00 7/30/25 口部有麻点印NG,图1\n\n-审 制\n\n-刘伟鹏\n\n-核 作\n+00 7/30/2025 口部有麻点印NG,图1\n\n+图 1",
+ "visual_scores": [
+ 0.898,
+ 0.9859,
+ 0.8947
+ ],
+ "visual_avg": 0.9262,
+ "diff_images": [
+ {
+ "page": 1,
+ "minipdf_img": "Issue202609031340_p1_minipdf.png",
+ "reference_img": "Issue202609031340_p1_reference.png",
+ "auxiliary_img": "Issue202609031340_p1_libreoffice.png",
+ "heatmap_img": "Issue202609031340_p1_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1241,
+ 1754
+ ],
+ "difference_bbox_px": [
+ 28,
+ 55,
+ 1212,
+ 1697
+ ],
+ "changed_pixels": 443271,
+ "changed_fraction": 0.203642,
+ "mean_abs_rgb": 27.4178,
+ "rmse_rgb": 71.7062,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "Issue202609031340_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ },
+ {
+ "page": 2,
+ "minipdf_img": "Issue202609031340_p2_minipdf.png",
+ "reference_img": "Issue202609031340_p2_reference.png",
+ "auxiliary_img": "Issue202609031340_p2_libreoffice.png",
+ "heatmap_img": "Issue202609031340_p2_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1241,
+ 1754
+ ],
+ "difference_bbox_px": [
+ 28,
+ 738,
+ 1212,
+ 1014
+ ],
+ "changed_pixels": 59016,
+ "changed_fraction": 0.027112,
+ "mean_abs_rgb": 3.6137,
+ "rmse_rgb": 25.2653,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "Issue202609031340_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ },
+ {
+ "page": 3,
+ "minipdf_img": "Issue202609031340_p3_minipdf.png",
+ "reference_img": "Issue202609031340_p3_reference.png",
+ "auxiliary_img": "Issue202609031340_p3_libreoffice.png",
+ "heatmap_img": "Issue202609031340_p3_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1241,
+ 1754
+ ],
+ "difference_bbox_px": [
+ 34,
+ 29,
+ 1196,
+ 1725
+ ],
+ "changed_pixels": 258293,
+ "changed_fraction": 0.118662,
+ "mean_abs_rgb": 16.8844,
+ "rmse_rgb": 56.4854,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "Issue202609031340_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ }
+ ],
+ "overall_score": 0.9314
+ },
+ {
+ "name": "payroll-calculator_f",
+ "minipdf_exists": true,
+ "reference_exists": true,
+ "report_scope": "java-issue-xlsx",
+ "case_id": "payroll-calculator_f",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/payroll-calculator_f.xlsx",
+ "suite": "issue",
+ "minipdf_size": 1021293,
+ "reference_size": 606513,
+ "pdf_valid": true,
+ "minipdf_pages": 36,
+ "reference_pages": 29,
+ "compared_pages": 3,
+ "text_similarity": 0.8386,
+ "flat_text_similarity": 0.6057,
+ "word_text_similarity": 0.8386,
+ "text_diff": "--- minipdf/payroll-calculator_f.pdf\n+++ reference/payroll-calculator_f.pdf\n@@ -1,43 +1,49 @@\n Employee Register\n\n-Information contained in this employee register is highly confidential Filing Status (W-4 before 2020) Filing Status (W-4 from 2020 or later)\n\n-Step 2 Step 3\n\n-Additional Amount to Wit\n\n+Information contained in this employee register is highly confidential Filing Status (W-4 before 2020) Filing St\n\n+Step 2\n\n+Additional Amount to\n\n Annual Regular Overtime Exempt\n\n-Pay Federal hhold\n\n+Pay Federal Withhold\n\n ID Employee's Name M/F Hire Date Occupation Salary Hourly Hourly from W-4 Form Filing Status Filing Status\n\n-Frequency Allowance (With every paycheck) Dependents Other\n\n+Frequency Allowance (With every paycheck)\n\n ($) Rate ($) Rate ($) Overtime Box in (c)\n\n-($) Under Age 17 Dependents\n\n+($)\n\n 1 Adam Jones M 15-Feb-13 Senior Accountant 42,000.00 20.19 30.29 Yes Monthly W-4 (2020 or later) Exempt 2 50 Single Not Checked\n\n 2 Nichola Brown F 28-Sep-11 CR Manager 54,481.00 26.19 39.29 Yes Monthly W-4 (2020 or later) Married 4 Single Not Checked\n\n 3 Benny Erwin M 11-May-11 Applications PM 48,785.00 23.45 35.18 No Monthly W-4 (before 2020) Married 4\n\n+When adding more rows, insert new rows above this one\n\n+Page 1 of 29\n\n ---PAGE---\n\n-When adding more rows, insert new rows above this one\n\n+tatus (W-4 from 2020 or later) Pre-Tax Adjustments Post-Tax Adjustments Post-Tax Deductions\n\n+Step 3 Step 4\n\n+Tax Deferral Plan Health Insurance Other State Local Other Social\n\n+(b) (c) Exempt from Insurance\n\n+(401k) Premiums Withholdings Tax Tax Deductions Address Security\n\n+Dependents Other Deductions Extra FICA ($)\n\n+(%) ($) ($) (%) (%) ($) #\n\n+Under Age 17 Dependents ($) withholding\n\n+($)\n\n+100 50 4.00% - - Not Exempt 4.63% 0.00% 45.00 - 111 Street, Town/City, ST, 00000 ***-**-6789\n\n+3.00% - - Not Exempt 4.63% 0.00% 42.00 - 111 Street, Town/City, ST, 00000 ***-**-4321\n\n+4.50% - - Not Exempt 4.63% 0.00% 14.00 30.00 111 Street, Town/City, ST, 00000 ***-**-0000\n\n+Page 2 of 29\n\n ---PAGE---\n\n © 2013 - 2026 Spreadsheet123 LTD\n\n-Pre-Tax Adjustments Post-Tax Adjustments Post-Tax Deductions Payroll Calculator\n\n-Step 4\n\n-Tax Deferral Pl Health Insuranc Other Withholdi Exempt from State Local Other Deduct Social\n\n-(b) (c) Insurance\n\n-an (401k) e Premiums ngs Tax Tax ions Address Security\n\n-Deductions Extra ($)\n\n-(%) ($) ($) FICA (%) (%) ($) #\n\n-($) withholding\n\n-($)\n\n-100 50 4.00% - 0 - 0 Not Exempt 4.63% 0.00% 45.00 - 0 111 Street, Town/City, ST, 00000 ***-**-6789\n\n-3.00% - 0 - 0 Not Exempt 4.63% 0.00% 42.00 - 0 111 Street, Town/City, ST, 00000 ***-**-4321\n\n-4.50% - 0 - 0 Not Exempt 4.63% 0.00% 14.00 30.00 111 Street, Town/City, ST, 00000 ***-**-0000\n\n+Payroll Calculator\n\n Disclaimer:\n\n-This template is provided as-is for informatio\n\n-nal, illustrative, or/and educational purposes\n\n-only and under no circumstances should be\n\n-construed as financial, legal, or tax advice.\n\n-The results provided by this calculator are o\n\n-nly estimates and may not apply to your spe\n\n-cific situation.\n\n-Spreadsheet123 LTD strongly recommends\n\n-seeking the advice of qualified professionals\n\n-regarding financial or legal decisions.\n\n-Spreadsheet123 LTD reserves the right to m\n\n-ake changes to this software without notifica\n\n-tion.\n+This template is provided as-is for\n\n+informational, illustrative, or/and\n\n+educational purposes only and under no\n\n+circumstances should be construed as\n\n+financial, legal, or tax advice.\n\n+The results provided by this calculator are\n\n+only estimates and may not apply to your\n\n+specific situation.\n\n+Spreadsheet123 LTD strongly\n\n+recommends seeking the advice of\n\n+qualified professionals regarding financial\n\n+or legal decisions.\n\n+Spreadsheet123 LTD reserves the right to\n\n+make changes to this software without\n\n+notification.\n\n+Page 3 of 29",
+ "visual_scores": [
+ 0.6064,
+ 0.2485,
+ 0.5957
+ ],
+ "visual_avg": 0.4835,
+ "diff_images": [
+ {
+ "page": 1,
+ "minipdf_img": "payroll-calculator_f_p1_minipdf.png",
+ "reference_img": "payroll-calculator_f_p1_reference.png",
+ "auxiliary_img": "payroll-calculator_f_p1_libreoffice.png",
+ "heatmap_img": "payroll-calculator_f_p1_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1754,
+ 1241
+ ],
+ "difference_bbox_px": [
+ 23,
+ 29,
+ 1754,
+ 1160
+ ],
+ "changed_pixels": 532215,
+ "changed_fraction": 0.244504,
+ "mean_abs_rgb": 17.5896,
+ "rmse_rgb": 42.8265,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "payroll-calculator_f_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ },
+ {
+ "page": 2,
+ "minipdf_img": "payroll-calculator_f_p2_minipdf.png",
+ "reference_img": "payroll-calculator_f_p2_reference.png",
+ "auxiliary_img": "payroll-calculator_f_p2_libreoffice.png",
+ "heatmap_img": "payroll-calculator_f_p2_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1754,
+ 1241
+ ],
+ "difference_bbox_px": [
+ 23,
+ 29,
+ 1682,
+ 1160
+ ],
+ "changed_pixels": 394684,
+ "changed_fraction": 0.181321,
+ "mean_abs_rgb": 19.5001,
+ "rmse_rgb": 53.1636,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "payroll-calculator_f_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ },
+ {
+ "page": 3,
+ "minipdf_img": "payroll-calculator_f_p3_minipdf.png",
+ "reference_img": "payroll-calculator_f_p3_reference.png",
+ "auxiliary_img": "payroll-calculator_f_p3_libreoffice.png",
+ "heatmap_img": "payroll-calculator_f_p3_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1754,
+ 1241
+ ],
+ "difference_bbox_px": [
+ 23,
+ 29,
+ 1504,
+ 1160
+ ],
+ "changed_pixels": 488426,
+ "changed_fraction": 0.224387,
+ "mean_abs_rgb": 21.1973,
+ "rmse_rgb": 55.8296,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "payroll-calculator_f_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ }
+ ],
+ "overall_score": 0.6288
+ },
+ {
+ "name": "PO_anonymized",
+ "minipdf_exists": true,
+ "reference_exists": true,
+ "report_scope": "java-issue-xlsx",
+ "case_id": "PO_anonymized",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/PO_anonymized.xlsx",
+ "suite": "issue",
+ "minipdf_size": 165573,
+ "reference_size": 409049,
+ "pdf_valid": true,
+ "minipdf_pages": 69,
+ "reference_pages": 9,
+ "compared_pages": 3,
+ "text_similarity": 0.9385,
+ "flat_text_similarity": 0.9341,
+ "word_text_similarity": 0.8963,
+ "text_diff": "--- minipdf/PO_anonymized.pdf\n+++ reference/PO_anonymized.pdf\n@@ -1,36 +1,35 @@\n-Final Inspec Ɵon Report\n\n+Final Inspection Report\n\n Client: Global Tech Supplier: Alpha Labs Client PO#: PO-XX328\n\n-XXX office: TX Inspector: Sam Davis XXX PO#: 21668732\n\n-PM: Avery Wilson Inspec Ɵon Site: Greenfield county, Metro city PO Quan Ɵty: N/A\n\n-Project#: XXBFNO6 Inspec Ɵon date: 24-Jan-2026 Batch Quan Ɵty: 88907PCS\n\n-Date of Manufacture: 1/18/2026~1/21/2026 Lot ID: 9928-539898(1st lot)\n\n+XXX office: TX Inspector: Sam Davis XXX PO#: 21668732\n\n+PM: Avery Wilson Inspection Site: Greenfield county, Metro city PO Quantity: N/A\n\n+Project#: XXBFNO6 Inspection date: 24-Jan-2026 Batch Quantity: 88907PCS\n\n+Date of Manufacture: 1/18/2026~1/21/2026 Lot ID: 9928-539898(1st lot)\n\n Item#: XX-ABC-68878-C\n\n-Descrip Ɵon: Standard Component Assembly with Seal Insert\n\n-Sign-off sample: Yes Approved drawings Yes (Drawing#: K1VRJNVG REV: C )\n\n+Description: Standard Component Assembly with Seal Insert\n\n+Sign-off sample: Yes Approved drawings Yes (Drawing#: K1VRJNVG REV: C )\n\n Ship mark Yes Approved ranges Yes Ship to TBA\n\n-Inspec Ɵon Result: Accept\n\n-Re-in No\n\n-( Comm )\n\n-Inspec Ɵon Result Summary\n\n-Sample size Comment Remark\n\n-Check points\n\n+Inspection Result: Accept\n\n+Re-inspection: No\n\n+( Comment: )\n\n+Inspection Result Summary\n\n+Check points Sample size Comment Remark\n\n Dimension 20 Conformed\n\n-Aesthe Ɵcs 500 Conformed\n\n+Aesthetics 500 Conformed\n\n Color 500 Conformed\n\n Material N/A\n\n-Decora Ɵon 500 Conformed\n\n+Decoration 500 Conformed\n\n Packaging N/A\n\n Labeling N/A\n\n Assortment N/A\n\n Ship mark 1 Conformed\n\n Workmanship 500 Conformed\n\n-Func Ɵon 20 Conformed\n\n-Aesthe Ɵc InspecƟon\n\n-Inspec Ɵon method: ANSI/ASQ Z1.4 Sampling plan: Single sampling normal inspec Ɵon Sampling level: Level 2\n\n-Acceptable Quality Level (AQL): Cri Ɵcal A: 0 Cri Ɵcal B: 0.65 Major: 1.5 Minor: 4.0\n\n+Function 20 Conformed\n\n+Aesthetic Inspection\n\n+Inspection method: ANSI/ASQ Z1.4 Sampling plan: Single sampling normal inspection Sampling level: Level 2\n\n+Acceptable Quality Level (AQL): Critical A: 0 Critical B: 0.65 Major: 1.5 Minor: 4.0\n\n Sample size: 500 No. of carton drawn: 10\n\n Opened carton No.: No carton#\n\n-No. Defects descrip Ɵon Cri. A Cri. B Major Minor\n\n+No. Defects description Cri. A Cri. B Major Minor\n\n 1 K. Seal gap 1 1\n\n 2 J. Thread irregularity 3\n\n 3\n\n@@ -38,30 +37,32 @@\n 5\n\n 6\n\n 7\n\n-Total Defec Ɵves 1 4\n\n-Maximum Defec Ɵves 0 7 14 21\n\n-Inspec Ɵon qty: >80%\n\n-Inspec Ɵon quanƟty No. of carton\n\n+Total Defectives 1 4\n\n+Maximum Defectives 0 7 14 21\n\n+Inspection qty: >80%\n\n+Inspection quantity No. of carton\n\n Item# XXX PO No. Batch qty.\n\n Packed Unpacked Packed Unpacked\n\n XX-ABC-57052-C 71662963 61,859 41,466 8,462 61 16\n\n Total: 41,466 8,462 61 16\n\n+Doc#: FIR-003.5\n\n+Effective: 20171109 Page 1 of 9\n\n ---PAGE---\n\n-Final Inspec Ɵon Report\n\n+Final Inspection Report\n\n Client: Global Tech Supplier: Alpha Labs Client PO#: PO-XX328\n\n-XXX office: TX Inspector: Sam Davis XXX PO#: 21668732\n\n-PM: Avery Wilson Inspec Ɵon Site: Greenfield county, Metro city PO Quan Ɵty: N/A\n\n-Project#: XXBFNO6 Inspec Ɵon date: 24-Jan-2026 Batch Quan Ɵty: 88907PCS\n\n-Date of Manufacture: 1/18/2026~1/21/2026 Lot ID: 9928-539898(1st lot)\n\n+XXX office: TX Inspector: Sam Davis XXX PO#: 21668732\n\n+PM: Avery Wilson Inspection Site: Greenfield county, Metro city PO Quantity: N/A\n\n+Project#: XXBFNO6 Inspection date: 24-Jan-2026 Batch Quantity: 88907PCS\n\n+Date of Manufacture: 1/18/2026~1/21/2026 Lot ID: 9928-539898(1st lot)\n\n Item#: XX-ABC-68878-C\n\n-Descrip Ɵon: Standard Component Assembly with Seal Insert\n\n+Description: Standard Component Assembly with Seal Insert\n\n Carton Check\n\n Check point Inner carton Outer carton\n\n-Quan Ɵty per carton: Part C & Insert 619\n\n+Quantity per carton: Part C & Insert 619\n\n Dimension of carton (cm): L x W X H x x 47 x 32 x 43\n\n Weight of carton (Kg): Gross/Net / 15.3 / 14\n\n-Scan the barcode number: (Resul N/A )\n\n-Dimension and Func Ɵon check - Sampling level: S-2\n\n+Scan the barcode number: (Result: N/A )\n\n+Dimension and Function check - Sampling level: S-2\n\n Sample size: 13+7\n\n Dimension chart\n\n Measure\n\n@@ -83,10 +84,10 @@\n 21.49 21.04 20.84 20.86 20 21.08 21.4 21.08 20.41 20.89 20.43 21.64 21.52 21.44 20.8 20.45 21.49 21.62 20.53 21.01\n\n 47.06±0.14(in)\n\n Part C ID\n\n-126.15 131.51131.49126.58129.29129.91 127.64132.23128.91127.19 129.78131.35127.22128.01133.22130.59129.02129.68126.57127.38\n\n+126.15 131.51 131.49 126.58 129.29 129.91 127.64 132.23 128.91 127.19 129.78 131.35 127.22 128.01 133.22 130.59 129.02 129.68 126.57 127.38\n\n 19.14±0.17(mm)\n\n Part D Height\n\n-checked by ø4.56 and ø4.64 pin gauge , all within spec.\n\n+checked by ø4.56 and ø4.64 pin gauges , all within spec.\n\n 35.23±0.18(cm)\n\n Part D Width\n\n 46.81±0.47(mm)\n\n@@ -122,14 +123,18 @@\n OFC\n\n 13.64 14.08 14.11 13.75 13.88 13.32 13.63 14.19 13.87 13.73 13.9 13.43 13.77 13.7 13.99 13.32 14.08 13.35 13.44 13.78\n\n 29.9±0.17(in)\n\n-Date: 3/6/26\n\n+Date: 3/6/2026\n\n+Doc#: FIR-003.5\n\n+Effective: 20171109 Page 2 of 9\n\n ---PAGE---\n\n-Final Inspec Ɵon Report\n\n+Final Inspection Report\n\n Client: Global Tech Supplier: Alpha Labs Client PO#: PO-XX328\n\n-XXX office: TX Inspector: Sam Davis XXX PO#: 21668732\n\n-PM: Avery Wilson Inspec Ɵon Site: Greenfield county, Metro city PO Quan Ɵty: N/A\n\n-Project#: XXBFNO6 Inspec Ɵon date: 24-Jan-2026 Batch Quan Ɵty: 88907PCS\n\n-Date of Manufacture: 1/18/2026~1/21/2026 Lot ID: 9928-539898(1st lot)\n\n+XXX office: TX Inspector: Sam Davis XXX PO#: 21668732\n\n+PM: Avery Wilson Inspection Site: Greenfield county, Metro city PO Quantity: N/A\n\n+Project#: XXBFNO6 Inspection date: 24-Jan-2026 Batch Quantity: 88907PCS\n\n+Date of Manufacture: 1/18/2026~1/21/2026 Lot ID: 9928-539898(1st lot)\n\n Item#: XX-ABC-68878-C\n\n-Descrip Ɵon: Standard Component Assembly with Seal Insert\n\n-Authorized QC Inspector of XXX\n+Description: Standard Component Assembly with Seal Insert\n\n+Authorized QC Inspector of XXX\n\n+Doc#: FIR-003.5\n\n+Effective: 20171109 Page 3 of 9",
+ "visual_scores": [
+ 0.7103,
+ 0.6755,
+ 0.8432
+ ],
+ "visual_avg": 0.743,
+ "diff_images": [
+ {
+ "page": 1,
+ "minipdf_img": "PO_anonymized_p1_minipdf.png",
+ "reference_img": "PO_anonymized_p1_reference.png",
+ "auxiliary_img": "PO_anonymized_p1_libreoffice.png",
+ "heatmap_img": "PO_anonymized_p1_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1241,
+ 1754
+ ],
+ "difference_bbox_px": [
+ 58,
+ 45,
+ 1182,
+ 1713
+ ],
+ "changed_pixels": 514717,
+ "changed_fraction": 0.236465,
+ "mean_abs_rgb": 29.8818,
+ "rmse_rgb": 76.4864,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "PO_anonymized_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ },
+ {
+ "page": 2,
+ "minipdf_img": "PO_anonymized_p2_minipdf.png",
+ "reference_img": "PO_anonymized_p2_reference.png",
+ "auxiliary_img": "PO_anonymized_p2_libreoffice.png",
+ "heatmap_img": "PO_anonymized_p2_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1241,
+ 1754
+ ],
+ "difference_bbox_px": [
+ 59,
+ 45,
+ 1181,
+ 1713
+ ],
+ "changed_pixels": 651275,
+ "changed_fraction": 0.299201,
+ "mean_abs_rgb": 34.8838,
+ "rmse_rgb": 80.9979,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "PO_anonymized_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ },
+ {
+ "page": 3,
+ "minipdf_img": "PO_anonymized_p3_minipdf.png",
+ "reference_img": "PO_anonymized_p3_reference.png",
+ "auxiliary_img": "PO_anonymized_p3_libreoffice.png",
+ "heatmap_img": "PO_anonymized_p3_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1241,
+ 1754
+ ],
+ "difference_bbox_px": [
+ 61,
+ 45,
+ 1181,
+ 1713
+ ],
+ "changed_pixels": 122180,
+ "changed_fraction": 0.05613,
+ "mean_abs_rgb": 7.7594,
+ "rmse_rgb": 40.8676,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "PO_anonymized_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ }
+ ],
+ "overall_score": 0.7726
+ },
+ {
+ "name": "Simple invoice1",
+ "minipdf_exists": true,
+ "reference_exists": true,
+ "report_scope": "java-issue-xlsx",
+ "case_id": "Simple invoice1",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/Simple invoice1.xlsx",
+ "suite": "issue",
+ "minipdf_size": 52865,
+ "reference_size": 94130,
+ "pdf_valid": true,
+ "minipdf_pages": 1,
+ "reference_pages": 1,
+ "compared_pages": 3,
+ "text_similarity": 0.7573,
+ "flat_text_similarity": 0.6438,
+ "word_text_similarity": 0.7573,
+ "text_diff": "--- minipdf/Simple invoice1.pdf\n+++ reference/Simple invoice1.pdf\n@@ -1,32 +1,20 @@\n-Elegant INVO\n\n+Elegant INVOICE\n\n Invoice #: 10654\n\n-Invoice date: 9/7/26\n\n-Embrace\n\n+Embrace Invoice date: 8/29/2026\n\n Job: Wedding florals\n\n-Bill to: Hailey Clark\n\n-345 W Main\n\n-Address: 123 Avenue A,\n\n-Los Angeles, CA 14151\n\n+345 W Main Bill to: Hailey Clark\n\n+Los Angeles, CA 14151 Address: 123 Avenue A,\n\n P: 915-555-0195 Burbank, CA 56789\n\n-Phone: 805-555-0185\n\n-F: 915-555-0105\n\n+F: 915-555-0105 Phone: 805-555-0185\n\n elegantembrace@example.com Fax: NA\n\n-Qty Unit price Discount Price\n\n-Item # Description\n\n-35 $1.05 $36.75\n\n-A875 Peonies\n\n-25 $2.00 $50.00\n\n-K245 Tulips\n\n-30 $1.35 $40.50\n\n-U123 Buttercup\n\n-$127.25\n\n-Invoice Subtotal\n\n-6.00%\n\n-Tax Rate\n\n-$7.64\n\n-Sales Tax\n\n-$50.00\n\n-Deposit Received\n\n+Item # Description Qty Unit price Discount Price\n\n+A875 Peonies 35 $1.05 $36.75\n\n+K245 Tulips 25 $2.00 $50.00\n\n+U123 Buttercup 30 $1.35 $40.50\n\n+Invoice Subtotal $127.25\n\n+Tax Rate 6.00%\n\n+Sales Tax $7.64\n\n+Deposit Received $50.00\n\n TOTAL $77.25\n\n Please make all checks payable to Elegant Embrace.\n\n Total due in 90 days. Overdue accounts subject to a service charge of 1.5% per month.\n",
+ "visual_scores": [
+ 0.6953
+ ],
+ "visual_avg": 0.6953,
+ "diff_images": [
+ {
+ "page": 1,
+ "minipdf_img": "Simple invoice1_p1_minipdf.png",
+ "reference_img": "Simple invoice1_p1_reference.png",
+ "auxiliary_img": "Simple invoice1_p1_libreoffice.png",
+ "heatmap_img": "Simple invoice1_p1_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1241,
+ 1754
+ ],
+ "difference_bbox_px": [
+ 36,
+ 114,
+ 1237,
+ 1451
+ ],
+ "changed_pixels": 344628,
+ "changed_fraction": 0.158325,
+ "mean_abs_rgb": 18.2359,
+ "rmse_rgb": 60.1872,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "Simple invoice1_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ }
+ ],
+ "overall_score": 0.781
+ },
+ {
+ "name": "Small business cash flow forecast1",
+ "minipdf_exists": true,
+ "reference_exists": true,
+ "report_scope": "java-issue-xlsx",
+ "case_id": "Small business cash flow forecast1",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/Small business cash flow forecast1.xlsx",
+ "suite": "issue",
+ "minipdf_size": 48698,
+ "reference_size": 93247,
+ "pdf_valid": true,
+ "minipdf_pages": 3,
+ "reference_pages": 5,
+ "compared_pages": 3,
+ "text_similarity": 0.9004,
+ "flat_text_similarity": 0.6103,
+ "word_text_similarity": 0.9004,
+ "text_diff": "--- minipdf/Small business cash flow forecast1.pdf\n+++ reference/Small business cash flow forecast1.pdf\n@@ -1,59 +1,82 @@\n ELBIDE REALTY\n\n Cash flow forecast\n\n-Starting cash on hand $ 10,000.00 Starting date Oct 2026 Cash minimum balance alert $ 2,000.00\n\n-Oct 2026 Nov 2026 Dec 2026 Jan 2027 Feb 2027 Mar 2027 Apr 2027 May 2027 Jun 2027 Jul 2027 Aug 2027 Sep 2027\n\n+Starting cash on hand $ 10,000.00 Starting date Sep 2026 Cash minimum balance alert $ 2,000.00\n\n+Sep 2026 Oct 2026 Nov 2026 Dec 2026 Jan 2027 Feb 2027 Mar 2027 Apr 2027 May 2027 Jun 2027 Jul 2027 Aug 2027\n\n Total\n\n-Cash on hand (beginning of month) $ 10,000.00 $ 8,050.00 $ 9,350.00 $ 890.00 $ 2,190.00 $ 13,590.00 $ 13,790.00 $ 15,290.00 $ 16,410.00 $ 14,360.00 $ 16,560.00 $ 18,780.00\n\n+Cash on hand (beginning of month) $ 10,000.00 $ 8,050.00 $ 9,350.00 $ 890.00 $ 2,190.00 $ 13,590.00 $ 13,790.00 $ 15,290.00 $ 16,410.00 $ 14,360.00 $ 16,560.00 $ 18,780.00\n\n Cash receipts\n\n-Cash sales $ 2,500.00 $ 3,000.00 $ 3,600.00 $ 3,000.00 $ 14,000.00 $ 6,000.00 $ 3,000.00 $ 2,800.00 $ 3,500.00 $ 4,000.00 $ 3,800.00 $ 4,200.00 $ 53,400.00\n\n-Returns and allowances $ 200.00 $ 200.00\n\n-Collections on accounts receivable $ - 0\n\n-Interest, other income $ - 0\n\n-Loan proceeds $ - 0\n\n-Owner contributions $ - 0\n\n-Other receipts $ - 0\n\n-Total cash receipts $ 2,500.00 $ 3,000.00 $ 3,400.00 $ 3,000.00 $ 14,000.00 $ 6,000.00 $ 3,000.00 $ 2,800.00 $ 3,500.00 $ 4,000.00 $ 3,800.00 $ 4,200.00 $ 53,600.00\n\n-Total cash available $ 12,500.00 $ 11,050.00 $ 12,750.00 $ 3,890.00 $ 16,190.00 $ 19,590.00 $ 16,790.00 $ 18,090.00 $ 19,910.00 $ 18,360.00 $ 20,360.00 $ 22,980.00\n\n+Cash sales $ 2,500.00 $ 3,000.00 $ 3,600.00 $ 3,000.00 $ 14,000.00 $ 6,000.00 $ 3,000.00 $ 2,800.00 $ 3,500.00 $ 4,000.00 $ 3,800.00 $ 4,200.00 $ 53,400.00\n\n+Returns and allowances $ 200.00 $ 200.00\n\n+Collections on accounts receivable $ -\n\n+Interest, other income $ -\n\n+Loan proceeds $ -\n\n+Owner contributions $ -\n\n+Other receipts $ -\n\n+Total cash receipts $ 2,500.00 $ 3,000.00 $ 3,400.00 $ 3,000.00 $ 14,000.00 $ 6,000.00 $ 3,000.00 $ 2,800.00 $ 3,500.00 $ 4,000.00 $ 3,800.00 $ 4,200.00 $ 53,600.00\n\n+Total cash available $ 12,500.00 $ 11,050.00 $ 12,750.00 $ 3,890.00 $ 16,190.00 $ 19,590.00 $ 16,790.00 $ 18,090.00 $ 19,910.00 $ 18,360.00 $ 20,360.00 $ 22,980.00\n\n Cash paid out\n\n-Advertising $ 3,000.00 $ 3,000.00\n\n-Commissions and fees $ 250.00 $ 300.00 $ 360.00 $ 300.00 $ 1,400.00 $ 400.00 $ 300.00 $ 280.00 $ 350.00 $ 400.00 $ 380.00 $ 420.00 $ 5,140.00\n\n-Contract labor $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 1,200.00\n\n-Employee benefit programs $ - 0\n\n-Insurance (other than health) $ 4,000.00 $ 4,000.00 $ 4,000.00 $ 4,000.00 $ 16,000.00\n\n-Interest expense $ - 0\n\n-Materials and supplies (in COGS) $ 1,200.00 $ 1,200.00 $ 7,500.00 $ 1,200.00 $ 1,200.00 $ 1,200.00 $ 1,200.00 $ 1,200.00 $ 1,200.00 $ 1,200.00 $ 1,200.00 $ 1,200.00 $ 20,700.00\n\n-Meals and entertainment $ - 0\n\n-Mortgage interest $ - 0\n\n-Office expense $ - 0\n\n-Other interest expense $ - 0\n\n-Pension and profit-sharing plan $ - 0\n\n-Purchases for resale $ - 0\n\n-Rent or lease $ - 0\n\n-Rent or lease: vehicles, equipment $ - 0\n\n-Repairs and maintenance $ - 0\n\n-Supplies (not in COGS) $ - 0\n\n-Taxes and licenses $ - 0\n\n-Travel $ - 0\n\n-Utilities $ - 0\n\n-Wages (less emp. credits) $ - 0\n\n-Other expenses $ - 0\n\n-Other expenses $ - 0\n\n-Other expenses $ - 0\n\n-Miscellaneous $ - 0\n\n-Subtotal $ 4,450.00 $ 1,700.00 $ 11,860.00 $ 1,700.00 $ 2,600.00 $ 5,800.00 $ 1,500.00 $ 1,680.00 $ 5,550.00 $ 1,800.00 $ 1,580.00 $ 5,820.00 $ 46,040.00\n\n-Loan principal payment $ - 0\n\n-Capital purchases $ - 0\n\n-Other startup costs $ - 0\n\n-To reserve and/or escrow $ - 0\n\n-Owners' withdrawal $ - 0\n\n-Total cash paid out $ 4,450.00 $ 1,700.00 $ 11,860.00 $ 1,700.00 $ 2,600.00 $ 5,800.00 $ 1,500.00 $ 1,680.00 $ 5,550.00 $ 1,800.00 $ 1,580.00 $ 5,820.00 $ 46,040.00\n\n-Cash on hand (end of month) $ 8,050.00 $ 9,350.00 $ 890.00 $ 2,190.00 $ 13,590.00 $ 13,790.00 $ 15,290.00 $ 16,410.00 $ 14,360.00 $ 16,560.00 $ 18,780.00 $ 17,160.00\n\n+Advertising $ 3,000.00 $ 3,000.00\n\n+Commissions and fees $ 250.00 $ 300.00 $ 360.00 $ 300.00 $ 1,400.00 $ 400.00 $ 300.00 $ 280.00 $ 350.00 $ 400.00 $ 380.00 $ 420.00 $ 5,140.00\n\n+Contract labor $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 1,200.00\n\n+Employee benefit programs $ -\n\n+Insurance (other than health) $ 4,000.00 $ 4,000.00 $ 4,000.00 $ 4,000.00 $ 16,000.00\n\n+Interest expense $ -\n\n+Materials and supplies (in COGS) $ 1,200.00 $ 1,200.00 $ 7,500.00 $ 1,200.00 $ 1,200.00 $ 1,200.00 $ 1,200.00 $ 1,200.00 $ 1,200.00 $ 1,200.00 $ 1,200.00 $ 1,200.00 $ 20,700.00\n\n+Meals and entertainment $ -\n\n+Mortgage interest $ -\n\n+Office expense $ -\n\n+Other interest expense $ -\n\n+Pension and profit-sharing plan $ -\n\n+Purchases for resale $ -\n\n+Rent or lease $ -\n\n+Rent or lease: vehicles, equipment $ -\n\n+Repairs and maintenance $ -\n\n+Supplies (not in COGS) $ -\n\n+Taxes and licenses $ -\n\n+Travel $ -\n\n+Utilities $ -\n\n+Wages (less emp. credits) $ -\n\n+Other expenses $ -\n\n+Other expenses $ -\n\n+Other expenses $ -\n\n+Miscellaneous $ -\n\n+Subtotal $ 4,450.00 $ 1,700.00 $ 11,860.00 $ 1,700.00 $ 2,600.00 $ 5,800.00 $ 1,500.00 $ 1,680.00 $ 5,550.00 $ 1,800.00 $ 1,580.00 $ 5,820.00 $ 46,040.00\n\n+Loan principal payment $ -\n\n+Capital purchases $ -\n\n+Other startup costs $ -\n\n+To reserve and/or escrow $ -\n\n+Owners' withdrawal $ -\n\n+Total cash paid out $ 4,450.00 $ 1,700.00 $ 11,860.00 $ 1,700.00 $ 2,600.00 $ 5,800.00 $ 1,500.00 $ 1,680.00 $ 5,550.00 $ 1,800.00 $ 1,580.00 $ 5,820.00 $ 46,040.00\n\n+Cash on hand (end of month) $ 8,050.00 $ 9,350.00 $ 890.00 $ 2,190.00 $ 13,590.00 $ 13,790.00 $ 15,290.00 $ 16,410.00 $ 14,360.00 $ 16,560.00 $ 18,780.00 $ 17,160.00\n\n Other operating data\n\n Sales volume (dollars)\n\n Accounts receivable balance\n\n Bad debt balance\n\n----PAGE---\n\n Inventory on hand\n\n Accounts payable balance\n\n Depreciation\n\n+---PAGE---\n\n+ELBIDE REALTY\n\n+Cash flow forecast\n\n+Month Cash on hand $20,000\n\n+September 2026 $ 10,000.00 $18,000\n\n+October 2026 $ 8,050.00\n\n+$16,000\n\n+November 2026 $ 9,350.00\n\n+$14,000\n\n+December 2026 $ 890.00\n\n+$12,000\n\n+January 2027 $ 2,190.00\n\n+$10,000\n\n+February 2027 $ 13,590.00\n\n+$8,000\n\n+March 2027 $ 13,790.00\n\n+April 2027 $ 15,290.00 $6,000\n\n+May 2027 $ 16,410.00\n\n+$4,000\n\n+June 2027 $ 14,360.00\n\n+$2,000\n\n+July 2027 $ 16,560.00\n\n+$-\n\n+August 2027 $ 18,780.00 Sep Oct Nov Dec Jan Feb Mar Apr May\n\n ---PAGE---",
+ "visual_scores": [
+ 0.7356,
+ 0.3372,
+ 0.9953
+ ],
+ "visual_avg": 0.6894,
+ "diff_images": [
+ {
+ "page": 1,
+ "minipdf_img": "Small business cash flow forecast1_p1_minipdf.png",
+ "reference_img": "Small business cash flow forecast1_p1_reference.png",
+ "auxiliary_img": "Small business cash flow forecast1_p1_libreoffice.png",
+ "heatmap_img": "Small business cash flow forecast1_p1_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1241,
+ 1754
+ ],
+ "difference_bbox_px": [
+ 66,
+ 75,
+ 1173,
+ 1680
+ ],
+ "changed_pixels": 815067,
+ "changed_fraction": 0.374448,
+ "mean_abs_rgb": 17.9447,
+ "rmse_rgb": 44.8225,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "Small business cash flow forecast1_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ },
+ {
+ "page": 2,
+ "minipdf_img": "Small business cash flow forecast1_p2_minipdf.png",
+ "reference_img": "Small business cash flow forecast1_p2_reference.png",
+ "auxiliary_img": "Small business cash flow forecast1_p2_libreoffice.png",
+ "heatmap_img": "Small business cash flow forecast1_p2_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1241,
+ 1241
+ ],
+ "difference_bbox_px": [
+ 87,
+ 53,
+ 1157,
+ 1071
+ ],
+ "changed_pixels": 496069,
+ "changed_fraction": 0.322106,
+ "mean_abs_rgb": 42.0195,
+ "rmse_rgb": 87.6112,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "Small business cash flow forecast1_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ },
+ {
+ "page": 3,
+ "minipdf_img": "Small business cash flow forecast1_p3_minipdf.png",
+ "reference_img": "Small business cash flow forecast1_p3_reference.png",
+ "auxiliary_img": "Small business cash flow forecast1_p3_libreoffice.png",
+ "heatmap_img": "Small business cash flow forecast1_p3_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1754,
+ 1241
+ ],
+ "difference_bbox_px": [
+ 835,
+ 112,
+ 1532,
+ 116
+ ],
+ "changed_pixels": 2092,
+ "changed_fraction": 0.000961,
+ "mean_abs_rgb": 0.0692,
+ "rmse_rgb": 2.9896,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "Small business cash flow forecast1_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ }
+ ],
+ "overall_score": 0.7359
+ },
+ {
+ "name": "Wedding_timeline_planner1_copy",
+ "minipdf_exists": true,
+ "reference_exists": true,
+ "report_scope": "java-issue-xlsx",
+ "case_id": "Wedding_timeline_planner1_copy",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/Wedding_timeline_planner1_copy.xlsx",
+ "suite": "issue",
+ "minipdf_size": 408701,
+ "reference_size": 180076,
+ "pdf_valid": true,
+ "minipdf_pages": 8,
+ "reference_pages": 8,
+ "compared_pages": 3,
+ "text_similarity": 0.9295,
+ "flat_text_similarity": 0.9291,
+ "word_text_similarity": 0.8404,
+ "text_diff": "--- minipdf/Wedding_timeline_planner1_copy.pdf\n+++ reference/Wedding_timeline_planner1_copy.pdf\n@@ -1,114 +1,121 @@\n Wedding timeline planner\n\n DONE?\n\n-? Arrange a gathering for you and your parents.\n\n-? Determine budget and how expenses will be shared.\n\n+☐ Arrange a gathering for you and your parents.\n\n 9 - 12\n\n+☐ Determine budget and how expenses will be shared.\n\n MONTHS TO GO\n\n-? Discuss the size, style, location, and scope of the wedding you want.\n\n-Choose a target wedding date and time. (The actual date will depend on v\n\n-?\n\n-enue availability.)\n\n-Create a binder to store and organize ideas, worksheets, receipts, brochur\n\n-?\n\n-es, etc.\n\n-? Visit and reserve wedding and reception sites.\n\n-? Meet with your officiant.\n\n-Start compiling your guest list to estimate head count. Consider budg\n\n-?\n\n-et when thinking about “must-invites” versus “nice-to-invites.”\n\n-? Begin shopping for the wedding gown.\n\n-? Choose the members of your wedding party.\n\n-? Enroll in wedding/shower gift registries.\n\n+☐ Discuss the size, style, location, and scope of the wedding you want.\n\n+Choose a target wedding date and time. (The actual date will depend\n\n+☐\n\n+on venue availability.)\n\n+Create a binder to store and organize ideas, worksheets, receipts,\n\n+☐\n\n+brochures, etc.\n\n+☐ Visit and reserve wedding and reception sites.\n\n+☐ Meet with your officiant.\n\n+Start compiling your guest list to estimate head count. Consider\n\n+☐\n\n+budget when thinking about “must-invites” versus “nice-to-invites.”\n\n+☐ Begin shopping for the wedding gown.\n\n+☐ Choose the members of your wedding party.\n\n 6 - 9\n\n+☐ Enroll in wedding/shower gift registries.\n\n MONTHS TO GO\n\n-? Hire a photographer and a videographer.\n\n-Book an engagement photo session, especially if you plan to include a prof\n\n-?\n\n-essional engagement picture with Save-the-Date cards.\n\n-? Hire a caterer.\n\n-? Hire a florist.\n\n-Make arrangements for music to be played at the ceremony and reception\n\n-? . (Tasks might include booking a band or solo musician, hiring a DJ, choosi\n\n-ng significant musical selections, and so on.).\n\n-Reserve a block of hotel rooms for out-of-town guests. (Ask about group r\n\n-?\n\n-ates.)\n\n-Send out Save-the-Date cards. (Include lodging info and maps, as possible\n\n-?\n\n-.)\n\n-? Shop for wedding rings.\n\n-Select and order wedding gown, leaving ample time for delivery and altera\n\n-?\n\n-tions.\n\n+☐ Hire a photographer and a videographer.\n\n+Book an engagement photo session, especially if you plan to include a\n\n+☐\n\n+professional engagement picture with Save-the-Date cards.\n\n+☐ Hire a caterer.\n\n+☐ Hire a florist.\n\n+Make arrangements for music to be played at the ceremony and\n\n+☐ reception. (Tasks might include booking a band or solo musician,\n\n+hiring a DJ, choosing significant musical selections, and so on.).\n\n+Reserve a block of hotel rooms for out-of-town guests. (Ask about\n\n+☐\n\n+group rates.)\n\n+Send out Save-the-Date cards. (Include lodging info and maps, as\n\n+☐\n\n+possible.)\n\n+☐ Shop for wedding rings.\n\n+Select and order wedding gown, leaving ample time for delivery and\n\n+☐\n\n+alterations.\n\n ---PAGE---\n\n Wedding timeline planner\n\n-? Shop for bridesmaids dresses.\n\n-? Schedule wedding cake design appointments and tastings.\n\n-? Start planning your honeymoon.\n\n-? Finalize the guest list.\n\n-? Order invitations and other wedding stationery.\n\n+☐ Shop for bridesmaids dresses.\n\n+☐ Schedule wedding cake design appointments and tastings.\n\n+☐ Start planning your honeymoon.\n\n+☐ Finalize the guest list.\n\n 4 - 6\n\n+☐ Order invitations and other wedding stationery.\n\n MONTHS TO GO\n\n-Plan wedding-day beauty preparations; ask your stylist how far in advance\n\n-? they book wedding parties, and whether they are willing to work on the w\n\n-edding site.\n\n-Finalize all honeymoon plans. If traveling outside the country, arrange for\n\n-?\n\n-visas, passports and inoculations.\n\n-? Hire your wedding day transportation (carriage, limousine service, etc.).\n\n-? Plan the rehearsal dinner.\n\n-? Obtain a marriage license. Bring all necessary documents.\n\n-? Order tuxedoes for the groom and groomsmen.\n\n+Plan wedding-day beauty preparations; ask your stylist how far in\n\n+☐ advance they book wedding parties, and whether they are willing to\n\n+work on the wedding site.\n\n+Finalize all honeymoon plans. If traveling outside the country, arrange\n\n+☐\n\n+for visas, passports and inoculations.\n\n+Hire your wedding day transportation (carriage, limousine service,\n\n+☐\n\n+etc.).\n\n+☐ Plan the rehearsal dinner.\n\n+☐ Obtain a marriage license. Bring all necessary documents.\n\n 2 - 4\n\n+☐ Order tuxedoes for the groom and groomsmen.\n\n MONTHS TO GO\n\n-? Meet with the caterer to go over menus, wine selections, etc.\n\n-? Order the wedding cake.\n\n-? Order your wedding rings.\n\n-? Confirm wedding ceremony and reception music.\n\n-? Book a hotel room for the wedding night.\n\n-? If you plan on writing your own vows, start writing them now.\n\n-? Mail the wedding invitations 8 weeks before your wedding date.\n\n-? Do a hair and makeup run-through (including wedding veil, if applicable).\n\n+☐ Meet with the caterer to go over menus, wine selections, etc.\n\n+☐ Order the wedding cake.\n\n+☐ Order your wedding rings.\n\n+☐ Confirm wedding ceremony and reception music.\n\n+☐ Book a hotel room for the wedding night.\n\n+☐ If you plan on writing your own vows, start writing them now.\n\n+☐ Mail the wedding invitations 8 weeks before your wedding date.\n\n+Do a hair and makeup run-through (including wedding veil, if\n\n+☐\n\n 4 - 8\n\n+applicable).\n\n WEEKS TO GO\n\n-? Confirm all transportation plans.\n\n-? Work on seating arrangements for the reception.\n\n-? Finalize arrangements for out of town attendants and guests.\n\n+☐ Confirm all transportation plans.\n\n+☐ Work on seating arrangements for the reception.\n\n 2 - 4\n\n+☐ Finalize arrangements for out of town attendants and guests.\n\n WEEKS TO GO\n\n-? Confirm details with the photographer, florist, and other vendors.\n\n+☐ Confirm details with the photographer, florist, and other vendors.\n\n ---PAGE---\n\n Wedding timeline planner\n\n-? Have final fitting for bridal gown and bridesmaids’ dresses.\n\n-? Write your rehearsal dinner toast.\n\n-? Purchase gifts for the wedding attendants.\n\n-Compile a list of all of the wedding vendors and wedding party, with conta\n\n-?\n\n-ct information. Carry this list with you everywhere you go (just in case).\n\n-Communicate rehearsal dinner details to those who will attend the rehear\n\n-?\n\n-sal and rehearsal dinner.\n\n-? Look into where bride, groom and attendants will dress for the ceremony.\n\n-? Enclose in envelopes any fees due for easy distribution.\n\n-? Give the caterer a final head count.\n\n+☐ Have final fitting for bridal gown and bridesmaids’ dresses.\n\n+☐ Write your rehearsal dinner toast.\n\n+☐ Purchase gifts for the wedding attendants.\n\n+Compile a list of all of the wedding vendors and wedding party, with\n\n+☐ contact information. Carry this list with you everywhere you go (just in\n\n+case).\n\n+Communicate rehearsal dinner details to those who will attend the\n\n+☐\n\n+rehearsal and rehearsal dinner.\n\n+Look into where bride, groom and attendants will dress for the\n\n+☐\n\n+ceremony.\n\n+☐ Enclose in envelopes any fees due for easy distribution.\n\n 1\n\n+☐ Give the caterer a final head count.\n\n WEEK TO GO\n\n-Appoint a trustworthy person to bring important items (cake knife, toastin\n\n-?\n\n-g glasses, etc.) to the reception.\n\n-Appoint someone to act as an “organizer” to handle any last-minut\n\n-?\n\n-e problems.\n\n-? Review final details for those in the wedding party.\n\n-Get final beauty treatments (manicure, facial, massage, waxing, brow sha\n\n-?\n\n-ping, etc.)\n\n-DAY BEFORE ? Gather together the following:\n\n+Appoint a trustworthy person to bring important items (cake knife,\n\n+☐\n\n+toasting glasses, etc.) to the reception.\n\n+Appoint someone to act as an “organizer” to handle any last-minute\n\n+☐\n\n+problems.\n\n+☐ Review final details for those in the wedding party.\n\n+Get final beauty treatments (manicure, facial, massage, waxing, brow\n\n+☐\n\n+shaping, etc.)\n\n+DAY BEFORE ☐ Gather together the following:\n\n THE WEDDING Something old : symbolizing continuity with family and heritage\n\n-Something new : symbolizing optimism and hope for the new life ahead\n\n-Something borrowed : an item from a happily married friend or family me\n\n-mber\n\n+Something new : symbolizing optimism and hope for the new life\n\n+ahead\n\n+Something borrowed : an item from a happily married friend or\n\n+family member\n\n Something blue : symbolizing love and fidelity\n\n-? Confirm honeymoon arrangements.\n\n-? Pack for the honeymoon.\n\n-? Enjoy a relaxing day with family and friends.\n+☐ Confirm honeymoon arrangements.\n\n+☐ Pack for the honeymoon.\n\n+☐ Enjoy a relaxing day with family and friends.",
+ "visual_scores": [
+ 0.8982,
+ 0.8931,
+ 0.8978
+ ],
+ "visual_avg": 0.8964,
+ "diff_images": [
+ {
+ "page": 1,
+ "minipdf_img": "Wedding_timeline_planner1_copy_p1_minipdf.png",
+ "reference_img": "Wedding_timeline_planner1_copy_p1_reference.png",
+ "auxiliary_img": "Wedding_timeline_planner1_copy_p1_libreoffice.png",
+ "heatmap_img": "Wedding_timeline_planner1_copy_p1_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1241,
+ 1754
+ ],
+ "difference_bbox_px": [
+ 102,
+ 183,
+ 1158,
+ 1550
+ ],
+ "changed_pixels": 298306,
+ "changed_fraction": 0.137044,
+ "mean_abs_rgb": 14.256,
+ "rmse_rgb": 46.0558,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "Wedding_timeline_planner1_copy_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ },
+ {
+ "page": 2,
+ "minipdf_img": "Wedding_timeline_planner1_copy_p2_minipdf.png",
+ "reference_img": "Wedding_timeline_planner1_copy_p2_reference.png",
+ "auxiliary_img": "Wedding_timeline_planner1_copy_p2_libreoffice.png",
+ "heatmap_img": "Wedding_timeline_planner1_copy_p2_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1241,
+ 1754
+ ],
+ "difference_bbox_px": [
+ 102,
+ 183,
+ 1158,
+ 1542
+ ],
+ "changed_pixels": 318572,
+ "changed_fraction": 0.146355,
+ "mean_abs_rgb": 14.539,
+ "rmse_rgb": 46.27,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "Wedding_timeline_planner1_copy_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ },
+ {
+ "page": 3,
+ "minipdf_img": "Wedding_timeline_planner1_copy_p3_minipdf.png",
+ "reference_img": "Wedding_timeline_planner1_copy_p3_reference.png",
+ "auxiliary_img": "Wedding_timeline_planner1_copy_p3_libreoffice.png",
+ "heatmap_img": "Wedding_timeline_planner1_copy_p3_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1241,
+ 1754
+ ],
+ "difference_bbox_px": [
+ 102,
+ 183,
+ 1158,
+ 1516
+ ],
+ "changed_pixels": 291508,
+ "changed_fraction": 0.133921,
+ "mean_abs_rgb": 13.5658,
+ "rmse_rgb": 44.6731,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "Wedding_timeline_planner1_copy_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ }
+ ],
+ "overall_score": 0.9304
+ },
+ {
+ "name": "Weekly schedule planner1",
+ "minipdf_exists": true,
+ "reference_exists": true,
+ "report_scope": "java-issue-xlsx",
+ "case_id": "Weekly schedule planner1",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/Weekly schedule planner1.xlsx",
+ "suite": "issue",
+ "minipdf_size": 72332,
+ "reference_size": 148591,
+ "pdf_valid": true,
+ "minipdf_pages": 2,
+ "reference_pages": 1,
+ "compared_pages": 3,
+ "text_similarity": 0.6289,
+ "flat_text_similarity": 0.473,
+ "word_text_similarity": 0.6289,
+ "text_diff": "--- minipdf/Weekly schedule planner1.pdf\n+++ reference/Weekly schedule planner1.pdf\n@@ -1,16 +1,15 @@\n Weekly schedule planner\n\n-Week of: 9/7/26\n\n+Week of: 8/24/2026\n\n Weekly objectives To do items Deadlines this week\n\n-Run 3 miles Take FiFi to vet Presenta Ɵon on Thursday\n\n+Run 3 miles Take FiFi to vet Presentation on Thursday\n\n Read 30 min/day Go grocery shopping\n\n Stretch Pick up dry cleaning\n\n-46272.0 46273.0 46274.0 46275.0 46276.0 46277.0 46278.0\n\n-07\n\n-September 08 September 09 September 10 September 11 September 12 September 13 September\n\n-? Run ? Run ? Run Run Run Run Run\n\n-? Read ? Read ? Read Read Read Read Read\n\n-? Stretch ? Stretch ? Stretch Stretch Stretch Stretch Stretch\n\n-? Go to vet ? Shopping Present\n\n-? Rehearse\n\n-Notes\n\n----PAGE---\n+Monday Tuesday Wednesday Thursday Friday Saturday Sunday\n\n+24 25 26 27 28 29 30\n\n+August August August August August August August\n\n+✔ Run ✔ Run ✖ Run Run Run Run Run\n\n+✖ Read ✔ Read ✔ Read Read Read Read Read\n\n+✔ Stretch ✔ Stretch ✖ Stretch Stretch Stretch Stretch Stretch\n\n+✔ Go to vet ✔ Shopping Present\n\n+✔ Rehearse\n\n+Notes",
+ "visual_scores": [
+ 0.7458,
+ 0.0
+ ],
+ "visual_avg": 0.3729,
+ "diff_images": [
+ {
+ "page": 1,
+ "minipdf_img": "Weekly schedule planner1_p1_minipdf.png",
+ "reference_img": "Weekly schedule planner1_p1_reference.png",
+ "auxiliary_img": "Weekly schedule planner1_p1_libreoffice.png",
+ "heatmap_img": "Weekly schedule planner1_p1_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1754,
+ 1241
+ ],
+ "difference_bbox_px": [
+ 121,
+ 96,
+ 1571,
+ 1144
+ ],
+ "changed_pixels": 686598,
+ "changed_fraction": 0.315429,
+ "mean_abs_rgb": 25.2436,
+ "rmse_rgb": 60.9064,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "Weekly schedule planner1_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ },
+ {
+ "page": 2,
+ "minipdf_img": "Weekly schedule planner1_p2_minipdf.png",
+ "reference_img": null,
+ "auxiliary_img": null
+ }
+ ],
+ "overall_score": 0.5007
+ },
+ {
+ "name": "XlsxIssue75",
+ "minipdf_exists": true,
+ "reference_exists": true,
+ "report_scope": "java-issue-xlsx",
+ "case_id": "XlsxIssue75",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/XlsxIssue75.xlsx",
+ "suite": "issue",
+ "minipdf_size": 393485,
+ "reference_size": 5896201,
+ "pdf_valid": true,
+ "minipdf_pages": 152,
+ "reference_pages": 144,
+ "compared_pages": 3,
+ "text_similarity": 0.9694,
+ "flat_text_similarity": 0.9694,
+ "word_text_similarity": 0.9672,
+ "text_diff": "--- minipdf/XlsxIssue75.pdf\n+++ reference/XlsxIssue75.pdf\n@@ -46,10 +46,10 @@\n 3991293 Fred Invoice\n\n 30184 Fred Invoice\n\n 30184 Fred Invoice\n\n----PAGE---\n\n 30184 Fred Invoice\n\n 30184 Fred Invoice\n\n 30184 Fred Invoice\n\n+---PAGE---\n\n 30184 Fred Invoice\n\n 30184 Fred Invoice\n\n 30184 Fred Invoice\n\n@@ -95,13 +95,13 @@\n BLAC002 Fred Invoice\n\n BLAC002 Fred Invoice\n\n BLAC002 Fred Invoice\n\n----PAGE---\n\n BLAC002 Fred Invoice\n\n BLAC002 Fred Credit Memo\n\n BLAC002 Fred Credit Memo\n\n BLAC002 Fred Invoice\n\n BLAC002 Fred Invoice\n\n BLAC002 Fred Invoice\n\n+---PAGE---\n\n BLAC002 Fred Credit Memo\n\n BLAC002 Fred Invoice\n\n BLAC002 Fred Invoice\n\n@@ -143,4 +143,13 @@\n 26202 Fred Invoice\n\n 26202 Fred Invoice\n\n 26202 Fred Invoice\n\n-26202 Fred Invoice\n+26202 Fred Invoice\n\n+26202 Fred Invoice\n\n+26202 Fred Invoice\n\n+26202 Fred Invoice\n\n+12011 Fred Invoice\n\n+011299 Fred Credit Memo\n\n+48105 Fred Credit Memo\n\n+48105 Fred Credit Memo\n\n+12112 Fred Invoice\n\n+14449 Fred Invoice",
+ "visual_scores": [
+ 0.9437,
+ 0.9666,
+ 0.9674
+ ],
+ "visual_avg": 0.9592,
+ "diff_images": [
+ {
+ "page": 1,
+ "minipdf_img": "XlsxIssue75_p1_minipdf.png",
+ "reference_img": "XlsxIssue75_p1_reference.png",
+ "auxiliary_img": "XlsxIssue75_p1_libreoffice.png",
+ "heatmap_img": "XlsxIssue75_p1_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1241,
+ 1754
+ ],
+ "difference_bbox_px": [
+ 109,
+ 114,
+ 1111,
+ 1649
+ ],
+ "changed_pixels": 157587,
+ "changed_fraction": 0.072397,
+ "mean_abs_rgb": 8.9397,
+ "rmse_rgb": 40.5315,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "XlsxIssue75_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ },
+ {
+ "page": 2,
+ "minipdf_img": "XlsxIssue75_p2_minipdf.png",
+ "reference_img": "XlsxIssue75_p2_reference.png",
+ "auxiliary_img": "XlsxIssue75_p2_libreoffice.png",
+ "heatmap_img": "XlsxIssue75_p2_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1241,
+ 1754
+ ],
+ "difference_bbox_px": [
+ 114,
+ 120,
+ 1076,
+ 1649
+ ],
+ "changed_pixels": 107345,
+ "changed_fraction": 0.049315,
+ "mean_abs_rgb": 8.0094,
+ "rmse_rgb": 40.3943,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "XlsxIssue75_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ },
+ {
+ "page": 3,
+ "minipdf_img": "XlsxIssue75_p3_minipdf.png",
+ "reference_img": "XlsxIssue75_p3_reference.png",
+ "auxiliary_img": "XlsxIssue75_p3_libreoffice.png",
+ "heatmap_img": "XlsxIssue75_p3_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1241,
+ 1754
+ ],
+ "difference_bbox_px": [
+ 114,
+ 120,
+ 1076,
+ 1649
+ ],
+ "changed_pixels": 102955,
+ "changed_fraction": 0.047298,
+ "mean_abs_rgb": 7.6331,
+ "rmse_rgb": 39.3545,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "XlsxIssue75_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ }
+ ],
+ "overall_score": 0.8714
+ },
+ {
+ "name": "XlsxIssue77_MergedCellAlignment",
+ "minipdf_exists": true,
+ "reference_exists": true,
+ "report_scope": "java-issue-xlsx",
+ "case_id": "XlsxIssue77_MergedCellAlignment",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/XlsxIssue77_MergedCellAlignment.xlsx",
+ "suite": "issue",
+ "minipdf_size": 71248,
+ "reference_size": 172385,
+ "pdf_valid": true,
+ "minipdf_pages": 2,
+ "reference_pages": 2,
+ "compared_pages": 3,
+ "text_similarity": 1.0,
+ "flat_text_similarity": 1.0,
+ "word_text_similarity": 1.0,
+ "text_diff": "(identical)",
+ "visual_scores": [
+ 0.886,
+ 0.896
+ ],
+ "visual_avg": 0.891,
+ "diff_images": [
+ {
+ "page": 1,
+ "minipdf_img": "XlsxIssue77_MergedCellAlignment_p1_minipdf.png",
+ "reference_img": "XlsxIssue77_MergedCellAlignment_p1_reference.png",
+ "auxiliary_img": "XlsxIssue77_MergedCellAlignment_p1_libreoffice.png",
+ "heatmap_img": "XlsxIssue77_MergedCellAlignment_p1_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1241,
+ 1754
+ ],
+ "difference_bbox_px": [
+ 35,
+ 119,
+ 1163,
+ 1541
+ ],
+ "changed_pixels": 474317,
+ "changed_fraction": 0.217905,
+ "mean_abs_rgb": 33.3008,
+ "rmse_rgb": 82.9184,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "XlsxIssue77_MergedCellAlignment_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ },
+ {
+ "page": 2,
+ "minipdf_img": "XlsxIssue77_MergedCellAlignment_p2_minipdf.png",
+ "reference_img": "XlsxIssue77_MergedCellAlignment_p2_reference.png",
+ "auxiliary_img": "XlsxIssue77_MergedCellAlignment_p2_libreoffice.png",
+ "heatmap_img": "XlsxIssue77_MergedCellAlignment_p2_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1241,
+ 1754
+ ],
+ "difference_bbox_px": [
+ 35,
+ 156,
+ 1163,
+ 1612
+ ],
+ "changed_pixels": 443109,
+ "changed_fraction": 0.203568,
+ "mean_abs_rgb": 30.2766,
+ "rmse_rgb": 78.5097,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "XlsxIssue77_MergedCellAlignment_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ }
+ ],
+ "overall_score": 0.9564
+ },
+ {
+ "name": "XlsxIssue77_Template1",
+ "minipdf_exists": true,
+ "reference_exists": true,
+ "report_scope": "java-issue-xlsx",
+ "case_id": "XlsxIssue77_Template1",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/XlsxIssue77_Template1.xlsx",
+ "suite": "issue",
+ "minipdf_size": 60540,
+ "reference_size": 64464,
+ "pdf_valid": true,
+ "minipdf_pages": 6,
+ "reference_pages": 6,
+ "compared_pages": 3,
+ "text_similarity": 0.9905,
+ "flat_text_similarity": 0.9904,
+ "word_text_similarity": 0.9804,
+ "text_diff": "--- minipdf/XlsxIssue77_Template1.pdf\n+++ reference/XlsxIssue77_Template1.pdf\n@@ -6,8 +6,8 @@\n Attn Customer: Please return parts to the return address below.\n\n Customer Name Sales Person Requestor\n\n Return Address: Reason for Return:\n\n-NOTE - All parts returned for credit must be in original factory condition, with clean factory label and scannable QR cod\n\n-e, original factory packaging, with no extra labels or markings on the product.\n\n+NOTE - All parts returned for credit must be in original factory condition, with clean factory label and scannable QR\n\n+code, original factory packaging, with no extra labels or markings on the product.\n\n Original Qty\n\n Part No. Per Unit\n\n Invoice # Authorized\n\n@@ -20,8 +20,8 @@\n Attn Customer: Please return parts to the return address below.\n\n Customer Name Sales Person Requestor\n\n Return Address: Reason for Return:\n\n-NOTE - All parts returned for credit must be in original factory condition, with clean factory label and scannable QR cod\n\n-e, original factory packaging, with no extra labels or markings on the product.\n\n+NOTE - All parts returned for credit must be in original factory condition, with clean factory label and scannable QR\n\n+code, original factory packaging, with no extra labels or markings on the product.\n\n Original Qty\n\n Part No. Per Unit\n\n Invoice # Authorized\n\n@@ -34,8 +34,8 @@\n Attn Customer: Please return parts to the return address below.\n\n Customer Name Sales Person Requestor\n\n Return Address: Reason for Return:\n\n-NOTE - All parts returned for credit must be in original factory condition, with clean factory label and scannable QR cod\n\n-e, original factory packaging, with no extra labels or markings on the product.\n\n+NOTE - All parts returned for credit must be in original factory condition, with clean factory label and scannable QR\n\n+code, original factory packaging, with no extra labels or markings on the product.\n\n Original Qty\n\n Part No. Per Unit\n\n Invoice # Authorized",
+ "visual_scores": [
+ 0.9007,
+ 0.9007,
+ 0.9007
+ ],
+ "visual_avg": 0.9007,
+ "diff_images": [
+ {
+ "page": 1,
+ "minipdf_img": "XlsxIssue77_Template1_p1_minipdf.png",
+ "reference_img": "XlsxIssue77_Template1_p1_reference.png",
+ "auxiliary_img": "XlsxIssue77_Template1_p1_libreoffice.png",
+ "heatmap_img": "XlsxIssue77_Template1_p1_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1241,
+ 1754
+ ],
+ "difference_bbox_px": [
+ 82,
+ 166,
+ 1157,
+ 1565
+ ],
+ "changed_pixels": 379981,
+ "changed_fraction": 0.174566,
+ "mean_abs_rgb": 20.849,
+ "rmse_rgb": 62.5945,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "XlsxIssue77_Template1_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ },
+ {
+ "page": 2,
+ "minipdf_img": "XlsxIssue77_Template1_p2_minipdf.png",
+ "reference_img": "XlsxIssue77_Template1_p2_reference.png",
+ "auxiliary_img": "XlsxIssue77_Template1_p2_libreoffice.png",
+ "heatmap_img": "XlsxIssue77_Template1_p2_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1241,
+ 1754
+ ],
+ "difference_bbox_px": [
+ 82,
+ 166,
+ 1157,
+ 1565
+ ],
+ "changed_pixels": 380038,
+ "changed_fraction": 0.174593,
+ "mean_abs_rgb": 20.7739,
+ "rmse_rgb": 62.443,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "XlsxIssue77_Template1_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ },
+ {
+ "page": 3,
+ "minipdf_img": "XlsxIssue77_Template1_p3_minipdf.png",
+ "reference_img": "XlsxIssue77_Template1_p3_reference.png",
+ "auxiliary_img": "XlsxIssue77_Template1_p3_libreoffice.png",
+ "heatmap_img": "XlsxIssue77_Template1_p3_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1241,
+ 1754
+ ],
+ "difference_bbox_px": [
+ 82,
+ 166,
+ 1157,
+ 1565
+ ],
+ "changed_pixels": 380167,
+ "changed_fraction": 0.174652,
+ "mean_abs_rgb": 20.7364,
+ "rmse_rgb": 62.3609,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "XlsxIssue77_Template1_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ }
+ ],
+ "overall_score": 0.9565
+ },
+ {
+ "name": "XlsxIssue77_Template2_Workaround",
+ "minipdf_exists": true,
+ "reference_exists": true,
+ "report_scope": "java-issue-xlsx",
+ "case_id": "XlsxIssue77_Template2_Workaround",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/XlsxIssue77_Template2_Workaround.xlsx",
+ "suite": "issue",
+ "minipdf_size": 60494,
+ "reference_size": 64466,
+ "pdf_valid": true,
+ "minipdf_pages": 6,
+ "reference_pages": 6,
+ "compared_pages": 3,
+ "text_similarity": 0.9905,
+ "flat_text_similarity": 0.9904,
+ "word_text_similarity": 0.9804,
+ "text_diff": "--- minipdf/XlsxIssue77_Template2_Workaround.pdf\n+++ reference/XlsxIssue77_Template2_Workaround.pdf\n@@ -6,8 +6,8 @@\n Attn Customer: Please return parts to the return address below.\n\n Customer Name Sales Person Requestor\n\n Return Address: Reason for Return:\n\n-NOTE - All parts returned for credit must be in original factory condition, with clean factory label and scannable QR cod\n\n-e, original factory packaging, with no extra labels or markings on the product.\n\n+NOTE - All parts returned for credit must be in original factory condition, with clean factory label and scannable QR\n\n+code, original factory packaging, with no extra labels or markings on the product.\n\n Original Qty\n\n Part No. Per Unit\n\n Invoice # Authorized\n\n@@ -20,8 +20,8 @@\n Attn Customer: Please return parts to the return address below.\n\n Customer Name Sales Person Requestor\n\n Return Address: Reason for Return:\n\n-NOTE - All parts returned for credit must be in original factory condition, with clean factory label and scannable QR cod\n\n-e, original factory packaging, with no extra labels or markings on the product.\n\n+NOTE - All parts returned for credit must be in original factory condition, with clean factory label and scannable QR\n\n+code, original factory packaging, with no extra labels or markings on the product.\n\n Original Qty\n\n Part No. Per Unit\n\n Invoice # Authorized\n\n@@ -34,8 +34,8 @@\n Attn Customer: Please return parts to the return address below.\n\n Customer Name Sales Person Requestor\n\n Return Address: Reason for Return:\n\n-NOTE - All parts returned for credit must be in original factory condition, with clean factory label and scannable QR cod\n\n-e, original factory packaging, with no extra labels or markings on the product.\n\n+NOTE - All parts returned for credit must be in original factory condition, with clean factory label and scannable QR\n\n+code, original factory packaging, with no extra labels or markings on the product.\n\n Original Qty\n\n Part No. Per Unit\n\n Invoice # Authorized",
+ "visual_scores": [
+ 0.9048,
+ 0.9048,
+ 0.9048
+ ],
+ "visual_avg": 0.9048,
+ "diff_images": [
+ {
+ "page": 1,
+ "minipdf_img": "XlsxIssue77_Template2_Workaround_p1_minipdf.png",
+ "reference_img": "XlsxIssue77_Template2_Workaround_p1_reference.png",
+ "auxiliary_img": "XlsxIssue77_Template2_Workaround_p1_libreoffice.png",
+ "heatmap_img": "XlsxIssue77_Template2_Workaround_p1_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1241,
+ 1754
+ ],
+ "difference_bbox_px": [
+ 78,
+ 166,
+ 1153,
+ 1569
+ ],
+ "changed_pixels": 375573,
+ "changed_fraction": 0.172541,
+ "mean_abs_rgb": 20.7999,
+ "rmse_rgb": 62.6342,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "XlsxIssue77_Template2_Workaround_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ },
+ {
+ "page": 2,
+ "minipdf_img": "XlsxIssue77_Template2_Workaround_p2_minipdf.png",
+ "reference_img": "XlsxIssue77_Template2_Workaround_p2_reference.png",
+ "auxiliary_img": "XlsxIssue77_Template2_Workaround_p2_libreoffice.png",
+ "heatmap_img": "XlsxIssue77_Template2_Workaround_p2_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1241,
+ 1754
+ ],
+ "difference_bbox_px": [
+ 78,
+ 166,
+ 1153,
+ 1569
+ ],
+ "changed_pixels": 374803,
+ "changed_fraction": 0.172188,
+ "mean_abs_rgb": 20.6963,
+ "rmse_rgb": 62.4252,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "XlsxIssue77_Template2_Workaround_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ },
+ {
+ "page": 3,
+ "minipdf_img": "XlsxIssue77_Template2_Workaround_p3_minipdf.png",
+ "reference_img": "XlsxIssue77_Template2_Workaround_p3_reference.png",
+ "auxiliary_img": "XlsxIssue77_Template2_Workaround_p3_libreoffice.png",
+ "heatmap_img": "XlsxIssue77_Template2_Workaround_p3_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1241,
+ 1754
+ ],
+ "difference_bbox_px": [
+ 78,
+ 166,
+ 1153,
+ 1569
+ ],
+ "changed_pixels": 374804,
+ "changed_fraction": 0.172188,
+ "mean_abs_rgb": 20.6898,
+ "rmse_rgb": 62.408,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "XlsxIssue77_Template2_Workaround_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ }
+ ],
+ "overall_score": 0.9581
+ },
+ {
+ "name": "XlsxIssue81_LayoutOptions",
+ "minipdf_exists": true,
+ "reference_exists": true,
+ "report_scope": "java-issue-xlsx",
+ "case_id": "XlsxIssue81_LayoutOptions",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/XlsxIssue81_LayoutOptions.xlsx",
+ "suite": "issue",
+ "minipdf_size": 61053,
+ "reference_size": 242251,
+ "pdf_valid": true,
+ "minipdf_pages": 16,
+ "reference_pages": 16,
+ "compared_pages": 3,
+ "text_similarity": 0.9188,
+ "flat_text_similarity": 0.9188,
+ "word_text_similarity": 0.6587,
+ "text_diff": "--- minipdf/XlsxIssue81_LayoutOptions.pdf\n+++ reference/XlsxIssue81_LayoutOptions.pdf\n@@ -1,122 +1,119 @@\n Invoice Customer Region Owner\n\n-INV-00001 Customer account with extended legal nam Europe Opera Ɵons owner 2\n\n-INV-00002 Customer account with extended legal nam Asia Pacific Opera Ɵons owner 3\n\n-INV-00003 Customer account with extended legal nam La Ɵn America Opera Ɵons owner 4\n\n-INV-00004 Customer account with extended legal nam North America Opera Ɵons owner 5\n\n-INV-00005 Customer account with extended legal nam Europe Opera Ɵons owner 6\n\n-INV-00006 Customer account with extended legal nam Asia Pacific Opera Ɵons owner 7\n\n-INV-00007 Customer account with extended legal nam La Ɵn America Opera Ɵons owner 8\n\n-INV-00008 Customer account with extended legal nam North America Opera Ɵons owner 9\n\n-INV-00009 Customer account with extended legal nam Europe Opera Ɵons owner 1\n\n-INV-00010 Customer account with extended legal nam Asia Pacific Opera Ɵons owner 2\n\n-INV-00011 Customer account with extended legal nam La Ɵn America Opera Ɵons owner 3\n\n-INV-00012 Customer account with extended legal nam North America Opera Ɵons owner 4\n\n-INV-00013 Customer account with extended legal nam Europe Opera Ɵons owner 5\n\n-INV-00014 Customer account with extended legal nam Asia Pacific Opera Ɵons owner 6\n\n-INV-00015 Customer account with extended legal nam La Ɵn America Opera Ɵons owner 7\n\n-INV-00016 Customer account with extended legal nam North America Opera Ɵons owner 8\n\n-INV-00017 Customer account with extended legal nam Europe Opera Ɵons owner 9\n\n-INV-00018 Customer account with extended legal nam Asia Pacific Opera Ɵons owner 1\n\n-INV-00019 Customer account with extended legal nam La Ɵn America Opera Ɵons owner 2\n\n-INV-00020 Customer account with extended legal nam North America Opera Ɵons owner 3\n\n-INV-00021 Customer account with extended legal nam Europe Opera Ɵons owner 4\n\n-INV-00022 Customer account with extended legal nam Asia Pacific Opera Ɵons owner 5\n\n-INV-00023 Customer account with extended legal nam La Ɵn America Opera Ɵons owner 6\n\n-INV-00024 Customer account with extended legal nam North America Opera Ɵons owner 7\n\n-INV-00025 Customer account with extended legal nam Europe Opera Ɵons owner 8\n\n-INV-00026 Customer account with extended legal nam Asia Pacific Opera Ɵons owner 9\n\n-INV-00027 Customer account with extended legal nam La Ɵn America Opera Ɵons owner 1\n\n-INV-00028 Customer account with extended legal nam North America Opera Ɵons owner 2\n\n-INV-00029 Customer account with extended legal nam Europe Opera Ɵons owner 3\n\n-INV-00030 Customer account with extended legal nam Asia Pacific Opera Ɵons owner 4\n\n-INV-00031 Customer account with extended legal nam La Ɵn America Opera Ɵons owner 5\n\n-INV-00032 Customer account with extended legal nam North America Opera Ɵons owner 6\n\n-INV-00033 Customer account with extended legal nam Europe Opera Ɵons owner 7\n\n-INV-00034 Customer account with extended legal nam Asia Pacific Opera Ɵons owner 8\n\n-INV-00035 Customer account with extended legal nam La Ɵn America Opera Ɵons owner 9\n\n-INV-00036 Customer account with extended legal nam North America Opera Ɵons owner 1\n\n-INV-00037 Customer account with extended legal nam Europe Opera Ɵons owner 2\n\n-INV-00038 Customer account with extended legal nam Asia Pacific Opera Ɵons owner 3\n\n-INV-00039 Customer account with extended legal nam La Ɵn America Opera Ɵons owner 4\n\n+INV-00001 Customer account with extended legal namEurope Operations owner 2\n\n+INV-00002 Customer account with extended legal namAsia Pacific Operations owner 3\n\n+INV-00003 Customer account with extended legal namLatin America Operations owner 4\n\n+INV-00004 Customer account with extended legal namNorth America Operations owner 5\n\n+INV-00005 Customer account with extended legal namEurope Operations owner 6\n\n+INV-00006 Customer account with extended legal namAsia Pacific Operations owner 7\n\n+INV-00007 Customer account with extended legal namLatin America Operations owner 8\n\n+INV-00008 Customer account with extended legal namNorth America Operations owner 9\n\n+INV-00009 Customer account with extended legal namEurope Operations owner 1\n\n+INV-00010 Customer account with extended legal namAsia Pacific Operations owner 2\n\n+INV-00011 Customer account with extended legal namLatin America Operations owner 3\n\n+INV-00012 Customer account with extended legal namNorth America Operations owner 4\n\n+INV-00013 Customer account with extended legal namEurope Operations owner 5\n\n+INV-00014 Customer account with extended legal namAsia Pacific Operations owner 6\n\n+INV-00015 Customer account with extended legal namLatin America Operations owner 7\n\n+INV-00016 Customer account with extended legal namNorth America Operations owner 8\n\n+INV-00017 Customer account with extended legal namEurope Operations owner 9\n\n+INV-00018 Customer account with extended legal namAsia Pacific Operations owner 1\n\n+INV-00019 Customer account with extended legal namLatin America Operations owner 2\n\n+INV-00020 Customer account with extended legal namNorth America Operations owner 3\n\n+INV-00021 Customer account with extended legal namEurope Operations owner 4\n\n+INV-00022 Customer account with extended legal namAsia Pacific Operations owner 5\n\n+INV-00023 Customer account with extended legal namLatin America Operations owner 6\n\n+INV-00024 Customer account with extended legal namNorth America Operations owner 7\n\n+INV-00025 Customer account with extended legal namEurope Operations owner 8\n\n+INV-00026 Customer account with extended legal namAsia Pacific Operations owner 9\n\n+INV-00027 Customer account with extended legal namLatin America Operations owner 1\n\n+INV-00028 Customer account with extended legal namNorth America Operations owner 2\n\n+INV-00029 Customer account with extended legal namEurope Operations owner 3\n\n+INV-00030 Customer account with extended legal namAsia Pacific Operations owner 4\n\n+INV-00031 Customer account with extended legal namLatin America Operations owner 5\n\n+INV-00032 Customer account with extended legal namNorth America Operations owner 6\n\n+INV-00033 Customer account with extended legal namEurope Operations owner 7\n\n+INV-00034 Customer account with extended legal namAsia Pacific Operations owner 8\n\n+INV-00035 Customer account with extended legal namLatin America Operations owner 9\n\n+INV-00036 Customer account with extended legal namNorth America Operations owner 1\n\n+INV-00037 Customer account with extended legal namEurope Operations owner 2\n\n+INV-00038 Customer account with extended legal namAsia Pacific Operations owner 3\n\n ---PAGE---\n\n Invoice Customer Region Owner\n\n-INV-00040 Customer account with extended legal nam North America Opera Ɵons owner 5\n\n-INV-00041 Customer account with extended legal nam Europe Opera Ɵons owner 6\n\n-INV-00042 Customer account with extended legal nam Asia Pacific Opera Ɵons owner 7\n\n-INV-00043 Customer account with extended legal nam La Ɵn America Opera Ɵons owner 8\n\n-INV-00044 Customer account with extended legal nam North America Opera Ɵons owner 9\n\n-INV-00045 Customer account with extended legal nam Europe Opera Ɵons owner 1\n\n-INV-00046 Customer account with extended legal nam Asia Pacific Opera Ɵons owner 2\n\n-INV-00047 Customer account with extended legal nam La Ɵn America Opera Ɵons owner 3\n\n-INV-00048 Customer account with extended legal nam North America Opera Ɵons owner 4\n\n-INV-00049 Customer account with extended legal nam Europe Opera Ɵons owner 5\n\n-INV-00050 Customer account with extended legal nam Asia Pacific Opera Ɵons owner 6\n\n-INV-00051 Customer account with extended legal nam La Ɵn America Opera Ɵons owner 7\n\n-INV-00052 Customer account with extended legal nam North America Opera Ɵons owner 8\n\n-INV-00053 Customer account with extended legal nam Europe Opera Ɵons owner 9\n\n-INV-00054 Customer account with extended legal nam Asia Pacific Opera Ɵons owner 1\n\n-INV-00055 Customer account with extended legal nam La Ɵn America Opera Ɵons owner 2\n\n-INV-00056 Customer account with extended legal nam North America Opera Ɵons owner 3\n\n-INV-00057 Customer account with extended legal nam Europe Opera Ɵons owner 4\n\n-INV-00058 Customer account with extended legal nam Asia Pacific Opera Ɵons owner 5\n\n-INV-00059 Customer account with extended legal nam La Ɵn America Opera Ɵons owner 6\n\n-INV-00060 Customer account with extended legal nam North America Opera Ɵons owner 7\n\n-INV-00061 Customer account with extended legal nam Europe Opera Ɵons owner 8\n\n-INV-00062 Customer account with extended legal nam Asia Pacific Opera Ɵons owner 9\n\n-INV-00063 Customer account with extended legal nam La Ɵn America Opera Ɵons owner 1\n\n-INV-00064 Customer account with extended legal nam North America Opera Ɵons owner 2\n\n-INV-00065 Customer account with extended legal nam Europe Opera Ɵons owner 3\n\n-INV-00066 Customer account with extended legal nam Asia Pacific Opera Ɵons owner 4\n\n-INV-00067 Customer account with extended legal nam La Ɵn America Opera Ɵons owner 5\n\n-INV-00068 Customer account with extended legal nam North America Opera Ɵons owner 6\n\n-INV-00069 Customer account with extended legal nam Europe Opera Ɵons owner 7\n\n-INV-00070 Customer account with extended legal nam Asia Pacific Opera Ɵons owner 8\n\n-INV-00071 Customer account with extended legal nam La Ɵn America Opera Ɵons owner 9\n\n-INV-00072 Customer account with extended legal nam North America Opera Ɵons owner 1\n\n-INV-00073 Customer account with extended legal nam Europe Opera Ɵons owner 2\n\n-INV-00074 Customer account with extended legal nam Asia Pacific Opera Ɵons owner 3\n\n-INV-00075 Customer account with extended legal nam La Ɵn America Opera Ɵons owner 4\n\n-INV-00076 Customer account with extended legal nam North America Opera Ɵons owner 5\n\n-INV-00077 Customer account with extended legal nam Europe Opera Ɵons owner 6\n\n-INV-00078 Customer account with extended legal nam Asia Pacific Opera Ɵons owner 7\n\n+INV-00039 Customer account with extended legal namLatin America Operations owner 4\n\n+INV-00040 Customer account with extended legal namNorth America Operations owner 5\n\n+INV-00041 Customer account with extended legal namEurope Operations owner 6\n\n+INV-00042 Customer account with extended legal namAsia Pacific Operations owner 7\n\n+INV-00043 Customer account with extended legal namLatin America Operations owner 8\n\n+INV-00044 Customer account with extended legal namNorth America Operations owner 9\n\n+INV-00045 Customer account with extended legal namEurope Operations owner 1\n\n+INV-00046 Customer account with extended legal namAsia Pacific Operations owner 2\n\n+INV-00047 Customer account with extended legal namLatin America Operations owner 3\n\n+INV-00048 Customer account with extended legal namNorth America Operations owner 4\n\n+INV-00049 Customer account with extended legal namEurope Operations owner 5\n\n+INV-00050 Customer account with extended legal namAsia Pacific Operations owner 6\n\n+INV-00051 Customer account with extended legal namLatin America Operations owner 7\n\n+INV-00052 Customer account with extended legal namNorth America Operations owner 8\n\n+INV-00053 Customer account with extended legal namEurope Operations owner 9\n\n+INV-00054 Customer account with extended legal namAsia Pacific Operations owner 1\n\n+INV-00055 Customer account with extended legal namLatin America Operations owner 2\n\n+INV-00056 Customer account with extended legal namNorth America Operations owner 3\n\n+INV-00057 Customer account with extended legal namEurope Operations owner 4\n\n+INV-00058 Customer account with extended legal namAsia Pacific Operations owner 5\n\n+INV-00059 Customer account with extended legal namLatin America Operations owner 6\n\n+INV-00060 Customer account with extended legal namNorth America Operations owner 7\n\n+INV-00061 Customer account with extended legal namEurope Operations owner 8\n\n+INV-00062 Customer account with extended legal namAsia Pacific Operations owner 9\n\n+INV-00063 Customer account with extended legal namLatin America Operations owner 1\n\n+INV-00064 Customer account with extended legal namNorth America Operations owner 2\n\n+INV-00065 Customer account with extended legal namEurope Operations owner 3\n\n+INV-00066 Customer account with extended legal namAsia Pacific Operations owner 4\n\n+INV-00067 Customer account with extended legal namLatin America Operations owner 5\n\n+INV-00068 Customer account with extended legal namNorth America Operations owner 6\n\n+INV-00069 Customer account with extended legal namEurope Operations owner 7\n\n+INV-00070 Customer account with extended legal namAsia Pacific Operations owner 8\n\n+INV-00071 Customer account with extended legal namLatin America Operations owner 9\n\n+INV-00072 Customer account with extended legal namNorth America Operations owner 1\n\n+INV-00073 Customer account with extended legal namEurope Operations owner 2\n\n+INV-00074 Customer account with extended legal namAsia Pacific Operations owner 3\n\n+INV-00075 Customer account with extended legal namLatin America Operations owner 4\n\n+INV-00076 Customer account with extended legal namNorth America Operations owner 5\n\n ---PAGE---\n\n Invoice Customer Region Owner\n\n-INV-00079 Customer account with extended legal nam La Ɵn America Opera Ɵons owner 8\n\n-INV-00080 Customer account with extended legal nam North America Opera Ɵons owner 9\n\n-INV-00081 Customer account with extended legal nam Europe Opera Ɵons owner 1\n\n-INV-00082 Customer account with extended legal nam Asia Pacific Opera Ɵons owner 2\n\n-INV-00083 Customer account with extended legal nam La Ɵn America Opera Ɵons owner 3\n\n-INV-00084 Customer account with extended legal nam North America Opera Ɵons owner 4\n\n-INV-00085 Customer account with extended legal nam Europe Opera Ɵons owner 5\n\n-INV-00086 Customer account with extended legal nam Asia Pacific Opera Ɵons owner 6\n\n-INV-00087 Customer account with extended legal nam La Ɵn America Opera Ɵons owner 7\n\n-INV-00088 Customer account with extended legal nam North America Opera Ɵons owner 8\n\n-INV-00089 Customer account with extended legal nam Europe Opera Ɵons owner 9\n\n-INV-00090 Customer account with extended legal nam Asia Pacific Opera Ɵons owner 1\n\n-INV-00091 Customer account with extended legal nam La Ɵn America Opera Ɵons owner 2\n\n-INV-00092 Customer account with extended legal nam North America Opera Ɵons owner 3\n\n-INV-00093 Customer account with extended legal nam Europe Opera Ɵons owner 4\n\n-INV-00094 Customer account with extended legal nam Asia Pacific Opera Ɵons owner 5\n\n-INV-00095 Customer account with extended legal nam La Ɵn America Opera Ɵons owner 6\n\n-INV-00096 Customer account with extended legal nam North America Opera Ɵons owner 7\n\n-INV-00097 Customer account with extended legal nam Europe Opera Ɵons owner 8\n\n-INV-00098 Customer account with extended legal nam Asia Pacific Opera Ɵons owner 9\n\n-INV-00099 Customer account with extended legal nam La Ɵn America Opera Ɵons owner 1\n\n-INV-00100 Customer account with extended legal nam North America Opera Ɵons owner 2\n\n-INV-00101 Customer account with extended legal nam Europe Opera Ɵons owner 3\n\n-INV-00102 Customer account with extended legal nam Asia Pacific Opera Ɵons owner 4\n\n-INV-00103 Customer account with extended legal nam La Ɵn America Opera Ɵons owner 5\n\n-INV-00104 Customer account with extended legal nam North America Opera Ɵons owner 6\n\n-INV-00105 Customer account with extended legal nam Europe Opera Ɵons owner 7\n\n-INV-00106 Customer account with extended legal nam Asia Pacific Opera Ɵons owner 8\n\n-INV-00107 Customer account with extended legal nam La Ɵn America Opera Ɵons owner 9\n\n-INV-00108 Customer account with extended legal nam North America Opera Ɵons owner 1\n\n-INV-00109 Customer account with extended legal nam Europe Opera Ɵons owner 2\n\n-INV-00110 Customer account with extended legal nam Asia Pacific Opera Ɵons owner 3\n\n-INV-00111 Customer account with extended legal nam La Ɵn America Opera Ɵons owner 4\n\n-INV-00112 Customer account with extended legal nam North America Opera Ɵons owner 5\n\n-INV-00113 Customer account with extended legal nam Europe Opera Ɵons owner 6\n\n-INV-00114 Customer account with extended legal nam Asia Pacific Opera Ɵons owner 7\n\n-INV-00115 Customer account with extended legal nam La Ɵn America Opera Ɵons owner 8\n\n-INV-00116 Customer account with extended legal nam North America Opera Ɵons owner 9\n\n-INV-00117 Customer account with extended legal nam Europe Opera Ɵons owner 1\n+INV-00077 Customer account with extended legal namEurope Operations owner 6\n\n+INV-00078 Customer account with extended legal namAsia Pacific Operations owner 7\n\n+INV-00079 Customer account with extended legal namLatin America Operations owner 8\n\n+INV-00080 Customer account with extended legal namNorth America Operations owner 9\n\n+INV-00081 Customer account with extended legal namEurope Operations owner 1\n\n+INV-00082 Customer account with extended legal namAsia Pacific Operations owner 2\n\n+INV-00083 Customer account with extended legal namLatin America Operations owner 3\n\n+INV-00084 Customer account with extended legal namNorth America Operations owner 4\n\n+INV-00085 Customer account with extended legal namEurope Operations owner 5\n\n+INV-00086 Customer account with extended legal namAsia Pacific Operations owner 6\n\n+INV-00087 Customer account with extended legal namLatin America Operations owner 7\n\n+INV-00088 Customer account with extended legal namNorth America Operations owner 8\n\n+INV-00089 Customer account with extended legal namEurope Operations owner 9\n\n+INV-00090 Customer account with extended legal namAsia Pacific Operations owner 1\n\n+INV-00091 Customer account with extended legal namLatin America Operations owner 2\n\n+INV-00092 Customer account with extended legal namNorth America Operations owner 3\n\n+INV-00093 Customer account with extended legal namEurope Operations owner 4\n\n+INV-00094 Customer account with extended legal namAsia Pacific Operations owner 5\n\n+INV-00095 Customer account with extended legal namLatin America Operations owner 6\n\n+INV-00096 Customer account with extended legal namNorth America Operations owner 7\n\n+INV-00097 Customer account with extended legal namEurope Operations owner 8\n\n+INV-00098 Customer account with extended legal namAsia Pacific Operations owner 9\n\n+INV-00099 Customer account with extended legal namLatin America Operations owner 1\n\n+INV-00100 Customer account with extended legal namNorth America Operations owner 2\n\n+INV-00101 Customer account with extended legal namEurope Operations owner 3\n\n+INV-00102 Customer account with extended legal namAsia Pacific Operations owner 4\n\n+INV-00103 Customer account with extended legal namLatin America Operations owner 5\n\n+INV-00104 Customer account with extended legal namNorth America Operations owner 6\n\n+INV-00105 Customer account with extended legal namEurope Operations owner 7\n\n+INV-00106 Customer account with extended legal namAsia Pacific Operations owner 8\n\n+INV-00107 Customer account with extended legal namLatin America Operations owner 9\n\n+INV-00108 Customer account with extended legal namNorth America Operations owner 1\n\n+INV-00109 Customer account with extended legal namEurope Operations owner 2\n\n+INV-00110 Customer account with extended legal namAsia Pacific Operations owner 3\n\n+INV-00111 Customer account with extended legal namLatin America Operations owner 4\n\n+INV-00112 Customer account with extended legal namNorth America Operations owner 5\n\n+INV-00113 Customer account with extended legal namEurope Operations owner 6\n\n+INV-00114 Customer account with extended legal namAsia Pacific Operations owner 7",
+ "visual_scores": [
+ 0.807,
+ 0.8077,
+ 0.8063
+ ],
+ "visual_avg": 0.807,
+ "diff_images": [
+ {
+ "page": 1,
+ "minipdf_img": "XlsxIssue81_LayoutOptions_p1_minipdf.png",
+ "reference_img": "XlsxIssue81_LayoutOptions_p1_reference.png",
+ "auxiliary_img": "XlsxIssue81_LayoutOptions_p1_libreoffice.png",
+ "heatmap_img": "XlsxIssue81_LayoutOptions_p1_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1241,
+ 1650
+ ],
+ "difference_bbox_px": [
+ 36,
+ 74,
+ 1068,
+ 1570
+ ],
+ "changed_pixels": 511187,
+ "changed_fraction": 0.249646,
+ "mean_abs_rgb": 32.0216,
+ "rmse_rgb": 77.0589,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "XlsxIssue81_LayoutOptions_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ },
+ {
+ "page": 2,
+ "minipdf_img": "XlsxIssue81_LayoutOptions_p2_minipdf.png",
+ "reference_img": "XlsxIssue81_LayoutOptions_p2_reference.png",
+ "auxiliary_img": "XlsxIssue81_LayoutOptions_p2_libreoffice.png",
+ "heatmap_img": "XlsxIssue81_LayoutOptions_p2_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1241,
+ 1650
+ ],
+ "difference_bbox_px": [
+ 36,
+ 74,
+ 1068,
+ 1570
+ ],
+ "changed_pixels": 512225,
+ "changed_fraction": 0.250153,
+ "mean_abs_rgb": 32.1024,
+ "rmse_rgb": 77.1614,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "XlsxIssue81_LayoutOptions_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ },
+ {
+ "page": 3,
+ "minipdf_img": "XlsxIssue81_LayoutOptions_p3_minipdf.png",
+ "reference_img": "XlsxIssue81_LayoutOptions_p3_reference.png",
+ "auxiliary_img": "XlsxIssue81_LayoutOptions_p3_libreoffice.png",
+ "heatmap_img": "XlsxIssue81_LayoutOptions_p3_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1241,
+ 1650
+ ],
+ "difference_bbox_px": [
+ 36,
+ 74,
+ 1068,
+ 1570
+ ],
+ "changed_pixels": 511075,
+ "changed_fraction": 0.249591,
+ "mean_abs_rgb": 31.9801,
+ "rmse_rgb": 77.0071,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "XlsxIssue81_LayoutOptions_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ }
+ ],
+ "overall_score": 0.8903
+ },
+ {
+ "name": "XlsxIssue82_5mb",
+ "minipdf_exists": true,
+ "reference_exists": true,
+ "report_scope": "java-issue-xlsx",
+ "case_id": "XlsxIssue82_5mb",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/XlsxIssue82_5mb.xlsx",
+ "suite": "issue",
+ "minipdf_size": 9053125,
+ "reference_size": 21494385,
+ "pdf_valid": true,
+ "minipdf_pages": 383,
+ "reference_pages": 766,
+ "compared_pages": 3,
+ "text_similarity": 0.6052,
+ "flat_text_similarity": 0.529,
+ "word_text_similarity": 0.2639,
+ "text_diff": "--- minipdf/XlsxIssue82_5mb.pdf\n+++ reference/XlsxIssue82_5mb.pdf\n@@ -1,143 +1,143 @@\n-Name Email Phone Address Company Text Descrip Ɵo Job Title\n\n-Quen Ɵn H oschiller@573.920.9 22808 LueMraz and Labore et Non delenEmergenc\n\n-Lowell Olseve.lind@720.754.6 67029 DecRosenbau Soluta nih Aut iste quFast Food\n\n-Sydnee Cr gunnar.sch13128126 908 Ma Ʃe Strosin, Ki Voluptate Sed aliquidInterac Ɵon\n\n-Tomasa D gerlach.ar +1 (276) 9787 Rey HBalistreri-KProvident Et cupiditaMotorcycl\n\n-Payton Kuherman.ba1-201-33353401 HahWolff-ErdmVero iste l Culpa id a Janitorial S\n\n-Constan Ɵn crist.elme (551) 609-32868 Kul Runolfsso Officia vol Aut non d Pressing M\n\n-Tad Hartmkathryn041-928-43477833 Kle Kunze, FraIpsum pra Facilis undTherapist\n\n-Tris Ɵan Lin li Ʃle.bobb +1.870.92 83843 ReeMitchell-SDignissimoEum beataTechnical\n\n-Miss Tierr gpredovic@912-817-0310 Elliot Ward-WildAb at evenAut voluptCredit Che\n\n-Nicole Ʃe S domenic4 +1-352-6113158 StoKerluke GrCulpa ea aQuos earuPostsecon\n\n-Rosalind Fkimberly.p16786269 700 Hya Ʃ Bode-Swi Ō Est et qui Eveniet teLoan Coun\n\n-Hector Braelarkin@s 1-458-225987 Isom SStrosin-KuLabore ut Quidem p Cement M\n\n-Marjory K brandyn.e1-210-606671 Kaci VMann, McMoles Ɵas Fuga et veBrokerage\n\n-Forrest Tuwilmer93@216.242.5 214 BahrinBlick, O'CoEnim earuAut sequi Musician\n\n-Kennedy Wgutkowski+1.321.40 693 MossiAbshire, RDolor doloRerum aspIndustrial-\n\n-Lysanne Hgebert@y +1.272.47 4137 BergNitzsche LAsperioresAt doloresInterviewe\n\n-Randall Dagreenholt 17024567 90795 Bei Lue Ʃgen, Blandi Ɵis n Et natus q Mixing and\n\n-Chanelle Bsally46@g14438889 8856 AngeYundt-Kirl Voluptas l Dolores mCommunic\n\n-Mr. Gregoudietrich@1-469-314750 Ebert Goye Ʃe In Unde odit Qui aut doClinical La\n\n-Rosalia Vodonna.sim13853465 9022 CletaAbbo Ʃ, Ca Soluta id tAut sit et aMechanica\n\n-Sigmund Tteresa93@+1.937.53 2314 CristAufderharConsectet QuibusdamProducer\n\n-Prof. Janicahe ƫnger 312.745.3 50901 LudSawayn, WSint aut reAlias sed vLoading M\n\n-Mr. Brad Flhickle@ya856-513-791499 MoKeebler, L AssumendAsperioresAircra Ō M\n\n-Christop Gdstrosin@(563) 429-150 BertraKreiger LtdQuas occaCommodi Aircra Ō Bo\n\n-Dr. Toni Merling43@+1-765-386102 AssuJenkins IncLaborum aUt aut et uLog Grade\n\n-Reece Fadekirlin@lo463.613.7 9314 SibylFeeney GrVoluptate Quo exercRecordkee\n\n-Izaiah Skilehgoye Ʃe@ 240-241-28932 BartoDavis-WelQui fuga dEnim quia Biologist\n\n-Mathilde Sromaguer 1-218-29880599 ProCarter-PurAb voluptaSimilique sFence Erec\n\n-Mr. Jarreddimitri.hay279.899.6 6187 ConnKonopelskAutem sit Soluta dol Paralegal\n\n-Kameron Psimone.hy1-510-89134203 KatS Ɵedeman Ipsa ut amPerspicia Ɵ Directory A\n\n-Miss Libbyathena68@+1.937.89 1155 Max D'Amore-WEst dolor eEum volupGrinder O\n\n-Nayeli Bernadia28@1-781-79758562 BotLi Ʃle, Volk Harum sunExercita Ɵo Life Scienc\n\n-Chaz Bogadevan58@+1.870.44 657 Clo Ɵld Stracke In Est animi eIllum cum Health Tec\n\n-Frieda Moemuller@ 1-458-70091308 BarJerde PLC RecusandaEst eos et Rotary Dri\n\n-Jarod Grimqblanda@283-286-9315 O'HarUpton GroAperiam aQuasi repeCrane and\n\n-Mr. Mor Ɵ raleigh27@+1.989.30 67860 Lar Sa Ʃerfield ArchitectoCorporis ipDrilling an\n\n-Jamel Waeborer.bab (603) 715-9430 PrudDach-KovaAliquid quMoles Ɵae Environme\n\n-Reggie Simrosemary.+1.406.75 82982 HagSteuber-JeAt quia maEt voluptaProduc Ɵon\n\n-Jermey M shanahan.361.565.1 3769 NathKlocko, Ol Ut quae u Id qui qua Computer\n\n-Ms. Be ƫe lschiller@ 813.448.1 3590 KayliHerman-S Omnis sit Libero qui Telephone\n\n-Jairo Stroseunice85@+1 (540) 99011 Jaku Champlin,ReiciendisDoloremq Visual Des\n\n-Delbert Mdskiles@w410.520.5 8242 Trac Raynor PL Modi evenConsequatStaff Psych\n\n-Mr. Huntemarlon.wi(754) 982-556 IsabelStreich, TrIn esse no Aut quam Product Sp\n\n-Dr. Nedra porter.sch(281) 622-58710 RoxRosenbau Ea eaque tPorro et e Engineer\n\n-Katrine Sareyes95@951.258.8 86792 EffiLakin-HarrItaque vel Animi voluRecep Ɵon\n\n-Dr. Jarrod ignacio.fei+1-318-42150 ClemmBogisich-SHic at et s Facere ra Ɵ PR Manag\n\n+Name Email Phone Address Company Text DescriptionJob Title\n\n+Quentin Hyoschiller@ 573.920.9822808 LueiMraz and SLabore et mNon deleniEmergency Management Specialis\n\n+Lowell Olsoeve.lind@b720.754.6467029 Dec RosenbaumSoluta nihi Aut iste qu Fast Food Cook\n\n+Sydnee Crisgunnar.sch 1.31E+10 908 MatteoStrosin, Kil VoluptatemSed aliquidInteraction Designer\n\n+Tomasa Diegerlach.arn+1 (276) 97787 Rey HaBalistreri-KProvident hEt cupidita Motorcycle Mechanic\n\n+Payton Kutherman.ba1-201-333-53401 Hah Wolff-ErdmVero iste laCulpa id amJanitorial Supervisor\n\n+Constantin crist.elmer@(551) 609-532868 KulaRunolfssonOfficia voluAut non doPressing Machine Operator\n\n+Tad Hartm kathryn04@1-928-434-77833 KleinKunze, FramIpsum praeFacilis undeTherapist\n\n+Tristian Linlittle.bobbi+1.870.92383843 ReedMitchell-StDignissimoEum beata Technical Writer\n\n+Miss Tierragpredovic@912-817-07310 Elliot FWard-WildAb at even Aut voluptaCredit Checkers Clerk\n\n+Nicolette S domenic43+1-352-61413158 StoltKerluke GroCulpa ea amQuos earumPostsecondary Education Adminis\n\n+Rosalind Frkimberly.p 1.68E+10 700 Hyatt CBode-SwiftEst et qui qEveniet temLoan Counselor\n\n+Hector Bra elarkin@sc1-458-225-987 Isom S Strosin-KuhLabore ut cQuidem poCement Mason and Concrete Fini\n\n+Marjory Kebrandyn.er1-210-606-671 Kaci Vi Mann, McLMolestias aFuga et verBrokerage Clerk\n\n+Forrest Turwilmer93@216.242.51214 Bahrin Blick, O'Co Enim earumAut sequi qMusician\n\n+Kennedy Wgutkowski. +1.321.400693 MossieAbshire, Ri Dolor dolo Rerum asp Industrial-Organizational Psycholo\n\n+Lysanne Hugebert@ya+1.272.4734137 BergeNitzsche LLAsperiores At dolores Interviewer\n\n+Randall Da greenholt.s 1.7E+10 90795 BeieLuettgen, HBlanditiis nEt natus quMixing and Blending Machine Ope\n\n+Chanelle Basally46@gm1.44E+10 8856 Ange Yundt-KirlinVoluptas laDolores moCommunication Equipment Repai\n\n+Mr. Gregorudietrich@1-469-314-750 Ebert SGoyette IncUnde odit dQui aut do Clinical Laboratory Technician\n\n+Rosalia Vondonna.simo 1.39E+10 9022 Cleta Abbott, Ca Soluta id teAut sit et a Mechanical Engineer\n\n+Sigmund Thteresa93@+1.937.5302314 Crist Aufderhar, ConsectetuQuibusdamProducer\n\n+Prof. Janiceahettinger@312.745.3550901 LudwSawayn, WSint aut reiAlias sed voLoading Machine Operator\n\n+Mr. Brad Felhickle@ya856-513-7891499 MosKeebler, LuAssumendaAsperiores Aircraft Mechanics OR Aircraft Se\n\n+Christop Grdstrosin@c(563) 429-4150 BertranKreiger Ltd Quas occaeCommodi aAircraft Body Repairer\n\n+Dr. Toni Moerling43@w+1-765-3826102 AssunJenkins Inc Laborum a Ut aut et u Log Grader and Scaler\n\n+Reece Fadeekirlin@low463.613.729314 Sibyl Feeney GroVoluptate eQuo exerci Recordkeeping Clerk\n\n+Izaiah Skilehgoyette@240-241-268932 BartoDavis-WelcQui fuga doEnim quia aBiologist\n\n+Mathilde S romaguera1-218-298-80599 ProhCarter-PurdAb volupta Similique s Fence Erector\n\n+Mr. Jarred dimitri.hay279.899.676187 Conn KonopelskiAutem sit pSoluta doloParalegal\n\n+Kameron Psimone.hya1-510-891-34203 KathStiedeman Ipsa ut amePerspiciatisDirectory Assistance Operator\n\n+Miss Libby athena68@+1.937.8951155 MaximD'Amore-WEst dolor e Eum voluptGrinder OR Polisher\n\n+Nayeli Bergnadia28@y1-781-797-58562 BotsLittle, Volk Harum sunExercitatio Life Science Technician\n\n+Chaz Bogandevan58@ +1.870.440657 Clotild Stracke IncEst animi eIllum cum qHealth Technologist\n\n+Frieda Mosemuller@e1-458-700-91308 BarbJerde PLC Recusanda Est eos et eRotary Drill Operator\n\n+Jarod Grimqblanda@b283-286-97315 O'HaraUpton Gro Aperiam acQuasi repe Crane and Tower Operator\n\n+Mr. Mortimraleigh27@+1.989.30667860 Larr Satterfield Architecto Corporis ip Drilling and Boring Machine Tool S\n\n+Jamel Waeborer.baby(603) 715-99430 PrudeDach-Kova Aliquid quoMolestiae qEnvironmental Scientist\n\n+Reggie Simrosemary.k+1.406.75482982 Hag Steuber-Je At quia maEt voluptasProduction Inspector\n\n+Jermey Mushanahan.s361.565.143769 NathaKlocko, OlsUt quae ullId qui quasComputer Hardware Engineer\n\n+Ms. Bettie lschiller@h813.448.173590 Kayli Herman-ScOmnis sit cLibero qui Telephone Station Installer and Re\n\n+Jairo Strosieunice85@+1 (540) 939011 JakubChamplin, Reiciendis DoloremquVisual Designer\n\n+Delbert Mudskiles@w 410.520.528242 Trace Raynor PLCModi even Consequat Staff Psychologist\n\n+Mr. Huntermarlon.wit(754) 982-6556 Isabell Streich, TroIn esse nonAut quam qProduct Specialist\n\n+Dr. Nedra Uporter.scho(281) 622-958710 RoxaRosenbaumEa eaque tePorro et et Engineer\n\n+Katrine Satreyes95@h951.258.8086792 EffieLakin-HarriItaque vel lAnimi volu Receptionist and Information Cler\n\n+Dr. Jarrod Fignacio.feil +1-318-420150 ClemmBogisich-StHic at et sinFacere rati PR Manager\n\n ---PAGE---\n\n-Brenna Sc helen57@14587640 8311 BoscOberbrun Vel nemo Esse earumRental Cle\n\n-Candice Rockoelpin@223.596.0 41509 RohParisian anConsequatAutem omInterior De\n\n-Hertha Gaurippin@b984-914-7459 Schus Bea Ʃy-Joh Labore pa Error beatAircra Ō La\n\n-Beverly Hebogisich.te479-344-287134 ElisVonRuedeAspernatuIncidunt e Therapist\n\n-Enos Wild judy32@g+1-540-891233 JamaKessler-M Tempore qSed fuga inPatrol Offi\n\n-Hannah Mkari66@m703.247.3 254 KarianVeum Ltd Veniam quEst aut incParalegal\n\n-Magdalen jaeden20@+1-916-38510 HeaneNader, WoNisi tenetuVoluptate School Bus\n\n-Prof. Kale schowalte341.552.5 132 CecileKshlerin, HDolores fuVero haru Teacher\n\n-Constanceconnelly.h980.839.7 72179 EsteTerry PLC Laudan Ɵu Enim expliCafeteria C\n\n-Caesar Duvdooley@719-855-68487 Mos Botsford-MRepudiandModi ad mEngine Ass\n\n-Dr. Barbarjulia.olson+1 (620) 35720 TranTillman-Ki Est quidemAutem recElectrotyp\n\n-Jarred Kle hagenes.m315-845-017850 TanPaucek, FeDignissimoDeleni Ɵ sa Real Estat\n\n-Nyasia Brarashad68@(313) 726-416 Elise LZboncak-AEnim in reAliquid reiInterac Ɵon\n\n-Rowena K mariah29@13854988 510 KlockoHayes, He Aliquid et Minima omDirector O\n\n-Dr. Aric Roalycia09@559-279-62580 GradWeissnat- Rerum ad Dolore ne Precious S\n\n-Murl Bahraubree74@380-613-18410 GranFlatley LLCNisi laboreIure repellOpera Ɵon\n\n-Enid Leffleerica89@y352.489.2 367 AdamCarter GroEt voluptaEos verita Ɵ Social and\n\n-Marjorie Hbergnaum1-283-4788007 Cam Rempel, KFugit atquDoloremq Webmaste\n\n-Delbert Scjune.ullric (732) 879-51422 BevCummeratNon volupMagnam nAnnounce\n\n-Armani Kr isaiah95@980-658-1423 Ritchi Schaefer-FSunt id quQuas quo Farmwork\n\n-Emery D'Adevin73@(240) 487-6003 DelmToy-WalteAccusan Ɵu Alias sed qMedical A\n\n-Kirs Ɵn Hilp baumbach308.654.5 7362 IsabeSchmi Ʃ Gr ConsequatEt sint ut eAircra Ō Ri\n\n-Prof. Dam conn.anna(862) 562-89821 JohSchoen-HiTotam autVoluptas pLoan Inter\n\n-Gerald Pri jovani.bail435.856.7 4772 FriedHaag Inc Id hic laudUt accusanPhysical T\n\n-Mr. Gersobeier.trev 1-617-68436154 BoyKrajcik-JacId id eligenDelectus rPostsecon\n\n-Zaria Boregleason.ny586-452-7957 Davis ArmstrongTotam dolCumque eChiropract\n\n-Dr. Felicia hertha.jac1-323-7089794 Ripp McLaughliDolor auteMaxime toElectrical E\n\n-Conner Ri goldner.m+1-830-54484 HudsoAltenwert Eum corpoNulla quiaSubstance\n\n-Mr. Rigoberunolfsson689.992.9 6028 QuigO'Conner Inventore CupiditateAircra Ō La\n\n-Prof. Gabrchad44@y661.756.4 8028 O'KeWyman, CDoloremq Et verita Ɵs HVAC Mec\n\n-Americo Hjsawayn@984-313-49743 CharLemke, Cr Sed recusaSit et dele Professor\n\n-Winona Wlitzy74@y 260-906-11509 RebeFahey, WoQuia culpaEt sequi utMaintenan\n\n-Miss Wen tbeier@ho+1-941-63537 WandLangworthTempore nBlandi Ɵis f Medical Tr\n\n-Dr. Vince Fbe Ʃe01@ +1-920-7958974 AusNicolas, CaAspernatuVolupta Ɵb Pump Ope\n\n-Kara Mori bea Ʃy.rob +1-567-47356 GradyHahn, Wo Sunt corpoVoluptate Prepress T\n\n-Peter Croobins.regin 283.923.3 189 FlorenLeannon I In illum voVoluptas dShoe and\n\n-Prof. Valenywolff@gm+1.628.58 65234 Fre Bernhard Aperiam r Quia est dBusiness D\n\n-Jevon Kosskfeest@jo(657) 881-83762 AniRolfson GrQui quam Quia op Ɵo Registered\n\n-Laurel Bahaleen58@+1.270.73 2715 HowJakubowskCum qui nDicta volu Legal Secr\n\n-Lazaro Barmarvin.ko (757) 784-189 Balist Jaskolski, Id et liberoEst quod nStreetcar O\n\n-Idella Lockgeo.kessle201.266.4 25945 WeKassulke GReiciendisAliquam uCoremakin\n\n-Lola Sanfoetorp@ya 717.721.4 144 Nick PAbbo Ʃ, Sc Volupta Ɵb Magnam aRailroad In\n\n-Brionna Prrcorkery@+1-708-91250 Ernes Ɵ Walsh-WaAt animi iuVoluptate Tex Ɵle Dy\n\n-Aniya S Ɵe bell.schae +1-734-325596 O'HaJerde and Sint ea moNobis voluLibrary Te\n\n-Stephan L katrine68@(678) 874-7545 Jade Klocko, Sc Officiis seqAperiam aHistorian\n\n-Mrs. Linnecandido.ke678.578.3 97459 HaaReinger-D Deserunt sExercita Ɵo Vice Presid\n\n-Dr. Harmozhartmann+1-626-79766 ManteWindler, BVeniam exHarum un Typese Ʃe\n\n+Brenna Schhelen57@y 1.46E+10 8311 BoscoOberbrunnVel nemo oEsse earumRental Clerk\n\n+Candice Rockoelpin@ 223.596.0941509 Roh Parisian anConsequat Autem om Interior Designer\n\n+Hertha Gayurippin@b 984-914-76459 Schust Beatty-Joh Labore par Error beataAircraft Launch Specialist\n\n+Beverly He bogisich.te479-344-2187134 ElisaVonRuedenAspernaturIncidunt esTherapist\n\n+Enos Wildejudy32@gm+1-540-8951233 Jama Kessler-MaTempore qSed fuga inPatrol Officer\n\n+Hannah Makari66@ma703.247.34254 Karian Veum Ltd Veniam qu Est aut inciParalegal\n\n+Magdalenajaeden20@+1-916-380510 Heane Nader, Wo Nisi tenetuVoluptates School Bus Driver\n\n+Prof. Kale Jschowalter341.552.57132 Cecile Kshlerin, H Dolores fugVero harumTeacher\n\n+Constance connelly.he980.839.7772179 EsteTerry PLC LaudantiumEnim explicCafeteria Cook\n\n+Caesar Durvdooley@b719-855-608487 MoseBotsford-MRepudiand Modi ad m Engine Assembler\n\n+Dr. Barbarajulia.olson@+1 (620) 305720 Trant Tillman-KieEst quidemAutem recuElectrotyper\n\n+Jarred Kleinhagenes.m315-845-0317850 Tani Paucek, Fe DignissimoDeleniti saeReal Estate Sales Agent\n\n+Nyasia Bradrashad68@(313) 726-3416 Elise LaZboncak-A Enim in recAliquid reicInteraction Designer\n\n+Rowena Kinmariah29@ 1.39E+10 510 Klocko Hayes, Het Aliquid et vMinima omDirector Of Marketing\n\n+Dr. Aric Ro alycia09@h559-279-692580 GradyWeissnat-HRerum ad aDolore neqPrecious Stone Worker\n\n+Murl Bahri aubree74@380-613-118410 GrantFlatley LLC Nisi labore Iure repellaOperations Research Analyst\n\n+Enid Lefflererica89@y 352.489.25367 AdamsCarter GrouEt voluptasEos veritat Social and Human Service Assistan\n\n+Marjorie H bergnaum.1-283-478-8007 CamrRempel, Ki Fugit atqueDoloremquWebmaster\n\n+Delbert Schjune.ullrich(732) 879-751422 BeveCummerat Non voluptMagnam n Announcer\n\n+Armani Krisisaiah95@g980-658-11423 RitchieSchaefer-F Sunt id qui Quas quo qFarmworker\n\n+Emery D'Amdevin73@h(240) 487-76003 Delm Toy-WalterAccusantiuAlias sed q Medical Assistant\n\n+Kirstin Hilp baumbach 308.654.577362 Isabe Schmitt Gr Consequat Et sint ut e Aircraft Rigging Assembler\n\n+Prof. Damaconn.anna (862) 562-589821 JohnSchoen-HinTotam auteVoluptas p Loan Interviewer\n\n+Gerald Pricjovani.baile435.856.764772 Fried Haag Inc Id hic laudaUt accusanPhysical Therapist Aide\n\n+Mr. Gersonbeier.treve1-617-684-36154 Boy Krajcik-JacoId id eligenDelectus rePostsecondary Education Adminis\n\n+Zaria Borergleason.ny 586-452-77957 Davis LArmstrong,Totam doloCumque enChiropractor\n\n+Dr. Felicia Thertha.jaco1-323-708-9794 Rippi McLaughlinDolor aute Maxime to Electrical Engineer\n\n+Conner Ripgoldner.me+1-830-546484 Hudso AltenwerthEum corpo Nulla quia Substance Abuse Social Worker\n\n+Mr. Rigoberunolfsson 689.992.906028 Quigl O'Conner aInventore sCupiditate Aircraft Launch Specialist\n\n+Prof. Gabri chad44@y 661.756.428028 O'KeeWyman, ChDoloremquEt veritatis HVAC Mechanic\n\n+Americo Hyjsawayn@v984-313-479743 Charl Lemke, CroSed recusa Sit et delenProfessor\n\n+Winona W litzy74@ya260-906-151509 RebecFahey, Wo Quia culpa Et sequi ut Maintenance Supervisor\n\n+Miss Wendtbeier@ho +1-941-632537 WandaLangworth Tempore nBlanditiis fuMedical Transcriptionist\n\n+Dr. Vince F bette01@b+1-920-79158974 AustNicolas, CaAspernaturVoluptatib Pump Operators\n\n+Kara Moris beatty.rob +1-567-479356 Grady Hahn, WolfSunt corpoVoluptate dPrepress Technician\n\n+Peter Croo bins.regina283.923.32189 Floren Leannon InIn illum volVoluptas d Shoe and Leather Repairer\n\n+Prof. Valenywolff@gm+1.628.58465234 FreeBernhard aAperiam reQuia est doBusiness Development Manager\n\n+Jevon Koss kfeest@joh(657) 881-183762 AnitRolfson GroQui quam aQuia optio Registered Nurse\n\n+Laurel Bah aleen58@h+1.270.7322715 HoweJakubowsk Cum qui noDicta volupLegal Secretary\n\n+Lazaro Bartmarvin.koh(757) 784-4189 BalistreJaskolski, BId et liberoEst quod n Streetcar Operator\n\n+Idella Lock geo.kessler201.266.4525945 WebKassulke G Reiciendis Aliquam utCoremaking Machine Operator\n\n+Lola Sanforetorp@yah717.721.40144 Nick PoAbbott, SchVoluptatib Magnam a Railroad Inspector\n\n+Brionna Prorcorkery@y+1-708-918250 ErnestiWalsh-WatAt animi iu VoluptatemTextile Dyeing Machine Operator\n\n+Aniya Stiedbell.schaef +1-734-3205596 O'HarJerde and SSint ea mo Nobis volu Library Technician\n\n+Stephan Lekatrine68@(678) 874-47545 Jade Klocko, SchOfficiis seqAperiam arHistorian\n\n+Mrs. Linneacandido.ke678.578.3697459 Haa Reinger-DuDeserunt s Exercitatio Vice President Of Human Resourc\n\n+Dr. Harmonzhartmann+1-626-797766 ManteWindler, BeVeniam expHarum undTypesetter\n\n ---PAGE---\n\n-Nora Kub angie.berg18388205 648 HiltonLang and SRepudiandSaepe aut Extruding\n\n-Camylle G morn@sa 1-763-493639 Rex WBosco-Mc Dolor fugaExcepturi Glazier\n\n-Keara Croogertrude.r+1 (281) 66663 OletaHodkiewicTempore nUt vel et vElementar\n\n-Louisa Vanjordi77@g(919) 523-5284 Kars Klocko GroUt voluptaIllo eum p Service Sta\n\n-Dr. Floyd Bimelda.die+1-407-80386 BoscoDenesik-C Ut esse seEsse fugit Administra\n\n-Rachael Crgturner@g520.490.4 291 EstelleO'Conner,Est et doloEt minimaSheet Met\n\n-Johann M guy56@do1-347-934560 HayesStamm, StEt exercitaUnde eius Glass Cu ƫ\n\n-Silas Danieelissa29@+1-878-7941157 WisDouglas, WFacere arcAt nobis qMusician\n\n-Prof. Donamarcos82@+1.312.56 925 Buckr Jacobi-HarQuam mo Delectus pCultural St\n\n-Evan Wi ƫ sheaney@1-747-52026634 GiaZiemann-BDignissimoSit voluptaRehabilita\n\n-Prof. Mohraymond.f+1 (564) 328142 LouFay Ltd Est eum siDolores vi Grounds M\n\n-Prof. Veroyweissnat@1-414-5196123 Wes O'Conner Excepturi Odio aut sBra ƫce Bu\n\n-Jovani Labschaden.m+1.641.30 4512 TremCole Inc Sit doloresPraesen Ɵu Precision A\n\n-Mya Hesseathena67@+1-279-66115 Kaci InDooley, JaNemo aliaNobis a reParking Lo\n\n-Miss Auguryan.allie@351.225.7 92497 JamPredovic, Tenetur naUt omnis vCSI\n\n-Deonte Prnicola.web1-985-88099073 RosEmmerichAt vitae veQui nam nDoor To D\n\n-Simeon Grcorbin.kut+1-774-60209 RueckO'Conner AssumendQui reprehNetwork A\n\n-Blair Kohlevschmidt@502.577.2 2647 LeopKohler-Ba Qui deseruNihil maioShu Ʃle Ca\n\n-Devonte Harjun96@ 1-240-68557897 Lar Bailey PLCAliquid quLaudan Ɵu Prosthodo\n\n-Genoveva samantha 551-831-02967 MikeO'Conner,Autem ne Ipsum repProsthodo\n\n-Deborah Ojewel.berg(225) 395-59250 Kie Morisse Ʃe Libero ipsuDicta quasTour Guid\n\n-Earline Gr rasheed.b +1-407-8750070 BreDare GrouQui recusaSunt ut re Customer\n\n-Dr. Jordonjamaal57@(586) 597-5542 HermWeissnat, Eum iure aCorrup Ɵ e Tour Guid\n\n-Prof. Fran amina82@(973) 709-197 HelmeBashirian GOdio est qNatus con Command\n\n-Arno Jast evan.harri361-989-945465 TreWest PLC Ut a et pe Et atque aBookkeep\n\n-Bonita Lemmallory.zie+1.540.65 8639 Go Ʃ KonopelskQuam ea mMaxime a Aircra Ō Ca\n\n-Ms. Shannbergnaum+1 (540) 2695 HeathRempel Lt Hic alias v Rerum praRefrigera Ɵ\n\n-Lucie Daviabernathy(469) 927-957 MacejFeil-Doyle Id non eumExcepturi Conveyor\n\n-Je ƫe Kula ylarson@y727.916.9 9064 GweJacobs, ZuEos qui ut Esse rem vSocial Serv\n\n-Eda Ullrichcrona.jacq423-823-56441 GulgUpton Inc Magnam eEst doloreChild Care\n\n-Carley Mc tromp.jun (478) 585-19627 VeuPowlowsk Eveniet auRepudiandCarpenter\n\n-Dr. Americsbrown@g1-458-858261 Lue Ʃg Ebert and Cum esse QuisquamRadio Mec\n\n-Grace Cor marilou.to+1.847.44 9700 Will Mante LLCEst in voluQuibusdamPostmaste\n\n-Dr. Zane Cgbode@m+1 (973) 2398 Alan LRatke, WoQuia fugiaEaque mo Animal Hu\n\n-Trever Hillhills.hassa1-803-390463 Skiles Bogisich PUt et quia Natus quaReal Estat\n\n-Glenda Ritxkulas@ya417.525.8 46182 HirtEmmerichEst fuga naEt architecAnimal Bre\n\n-Leon Gerlafullrich@c1-754-62537482 Elb Rosenbau Earum beaAlias et et Speech-La\n\n-Jacky Schaqnienow@13806463 741 HayesSpinka-Ro AccusamuIn amet duInsurance\n\n-Miss Bern flatley.den1-850-87250381 KshEichmann-Rerum ut Error minuBindery M\n\n-Rick Jenkinawaters@(210) 663-6543 LoweBayer LLC Eum maio Consectet Sys Admin\n\n-Mr. Kamroelissa.hint747-447-88169 Karl Zulauf-StreNihil qui qDolores utFinancial E\n\n-Albina Maleonor.pu 602.426.7 119 Payto White, GisSimilique eSit maioreMail Clerk\n\n-Adam Bergflabadie@682-981-096270 SpoAbshire-PrLaborum aIpsum repBroadcast\n\n-Rafael Germeggie.zb858.951.4 9711 BashUpton Inc Et quo perId non et mOccupa Ɵo\n\n-Prof. Hermxbarton@ +1-412-53936 MabeJakubowskFacilis libeVolupta Ɵb Valve Rep\n\n-Prof. Monyost.cydne480.295.0 22290 AbsEmard-Be Aut repell Commodi Marine Ca\n\n-Sarah Led ona29@w602.463.4 72401 TroJenkins-MDolores quSunt id maTelecomm\n+Nora Kub angie.bergs 1.84E+10 648 Hilton Lang and S Repudiand Saepe aut vExtruding Machine Operator\n\n+Camylle Gumorn@san1-763-493-639 Rex WaBosco-McCDolor fuga Excepturi eGlazier\n\n+Keara Croogertrude.ro+1 (281) 666663 OletaHodkiewiczTempore nUt vel et veElementary and Secondary Schoo\n\n+Louisa Van jordi77@gm(919) 523-55284 KarsoKlocko GroUt voluptatIllo eum poService Station Attendant\n\n+Dr. Floyd B imelda.diet+1-407-803386 Bosco Denesik-CoUt esse sedEsse fugit uAdministrative Support Superviso\n\n+Rachael Crogturner@g 520.490.43291 Estelle O'Conner, Est et dolo Et minima Sheet Metal Worker\n\n+Johann Muguy56@do 1-347-934-560 Hayes Stamm, StrEt exercitatUnde eius qGlass Cutting Machine Operator\n\n+Silas Danie elissa29@k+1-878-79041157 WisoDouglas, WFacere archAt nobis quMusician\n\n+Prof. Dona marcos82@+1.312.562925 BuckridJacobi-Har Quam moleDelectus peCultural Studies Teacher\n\n+Evan Wittinsheaney@y1-747-520-26634 GianZiemann-B DignissimoSit volupta Rehabilitation Counselor\n\n+Prof. Moharaymond.fr+1 (564) 3028142 LourFay Ltd Est eum sinDolores vit Grounds Maintenance Worker\n\n+Prof. Veronyweissnat@1-414-519-6123 West O'Conner GExcepturi qOdio aut seBrattice Builder\n\n+Jovani Labaschaden.m+1.641.3014512 Trem Cole Inc Sit dolores Praesentiu Precision Aircraft Systems Assemb\n\n+Mya Hesse athena67@+1-279-666115 Kaci In Dooley, JacNemo aliasNobis a repParking Lot Attendant\n\n+Miss Augusryan.allie@351.225.7692497 Jam Predovic, STenetur naUt omnis v CSI\n\n+Deonte Pronicola.web 1-985-880-99073 RoscEmmerich-At vitae ve Qui nam niDoor To Door Sales\n\n+Simeon Grecorbin.kutc+1-774-603209 RueckeO'Conner PAssumendaQui repreh Network Admin OR Computer Sys\n\n+Blair Kohle vschmidt@502.577.252647 LeopoKohler-BartQui deseruNihil maiorShuttle Car Operator\n\n+Devonte Haarjun96@s1-240-685-57897 Lars Bailey PLC Aliquid qui LaudantiumProsthodontist\n\n+Genoveva samantha4551-831-012967 MikelO'Conner, Autem nemIpsum reprProsthodontist\n\n+Deborah Ojewel.bergn(225) 395-359250 Kier Morissette Libero ipsuDicta quas Tour Guide\n\n+Earline Grerasheed.bla+1-407-87250070 BreaDare GroupQui recusa Sunt ut repCustomer Service Representative\n\n+Dr. Jordon jamaal57@(586) 597-15542 HermWeissnat, REum iure a Corrupti euTour Guide\n\n+Prof. Francamina82@(973) 709-1197 Helme Bashirian GOdio est quNatus consCommand Control Center Officer\n\n+Arno Jast evan.harris361-989-9345465 TremWest PLC Ut a et per Et atque al Bookkeeper\n\n+Bonita Lemmallory.zie+1.540.6558639 GottliKonopelskiQuam ea mMaxime as Aircraft Cargo Handling Superviso\n\n+Ms. Shannobergnaum.+1 (540) 26695 HeathcRempel LtdHic alias voRerum praeRefrigeration Mechanic\n\n+Lucie Davisabernathy.(469) 927-7957 MacejkFeil-Doyle Id non eumExcepturi oConveyor Operator\n\n+Jettie Kulasylarson@ya727.916.919064 GwenJacobs, Zul Eos qui ut aEsse rem v Social Service Specialists\n\n+Eda Ullrich crona.jacqu423-823-536441 GulgoUpton Inc Magnam e Est doloremChild Care\n\n+Carley McKtromp.juni (478) 585-219627 Veu Powlowski-Eveniet autRepudiand Carpenter Assembler and Repaire\n\n+Dr. Americ sbrown@g 1-458-858-261 LuettgeEbert and SCum esse sQuisquam Radio Mechanic\n\n+Grace Corkmarilou.tow+1.847.4489700 Will RMante LLC Est in volupQuibusdamPostmasters\n\n+Dr. Zane Cogbode@mo+1 (973) 23398 Alan LiRatke, WolQuia fugiatEaque modAnimal Husbandry Worker\n\n+Trever Hillshills.hassan1-803-390-463 Skiles SBogisich PLUt et quia dNatus quaeReal Estate Sales Agent\n\n+Glenda Ritcxkulas@ya 417.525.8246182 Hirt Emmerich, Est fuga naEt architectAnimal Breeder\n\n+Leon Gerla fullrich@cr1-754-625-37482 ElbeRosenbaumEarum bea Alias et et nSpeech-Language Pathologist\n\n+Jacky Schamqnienow@ 1.38E+10 741 Hayes Spinka-RodAccusamusIn amet du Insurance Underwriter\n\n+Miss Bernitflatley.den 1-850-872-50381 Kshl Eichmann- Rerum ut cError minu Bindery Machine Operator\n\n+Rick Jenkinawaters@g(210) 663-16543 Lowe Bayer LLC Eum maiorConsectetuSys Admin\n\n+Mr. Kamro elissa.hintz747-447-888169 Karl GZulauf-StreNihil qui quDolores ut Financial Examiner\n\n+Albina Manleonor.pur 602.426.75119 PaytonWhite, GislSimilique eSit maioresMail Clerk\n\n+Adam Bergflabadie@c682-981-0196270 Spo Abshire-ProLaborum a Ipsum repeBroadcast News Analyst\n\n+Rafael Gerlmeggie.zbo858.951.459711 BashiUpton Inc Et quo persId non et mOccupational Therapist Aide\n\n+Prof. Hermxbarton@o+1-412-537936 Mabel Jakubowsk Facilis liberVoluptatib Valve Repairer OR Regulator Repa\n\n+Prof. Montyost.cydne 480.295.0922290 AbshEmard-Ber Aut repellaCommodi bMarine Cargo Inspector\n\n+Sarah Lednona29@we602.463.4972401 TromJenkins-MaDolores quSunt id ma Telecommunications Facility Exam",
+ "visual_scores": [
+ 0.841,
+ 0.841,
+ 0.8394
+ ],
+ "visual_avg": 0.8405,
+ "diff_images": [
+ {
+ "page": 1,
+ "minipdf_img": "XlsxIssue82_5mb_p1_minipdf.png",
+ "reference_img": "XlsxIssue82_5mb_p1_reference.png",
+ "auxiliary_img": "XlsxIssue82_5mb_p1_libreoffice.png",
+ "heatmap_img": "XlsxIssue82_5mb_p1_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1241,
+ 1650
+ ],
+ "difference_bbox_px": [
+ 106,
+ 122,
+ 1100,
+ 1523
+ ],
+ "changed_pixels": 434905,
+ "changed_fraction": 0.212392,
+ "mean_abs_rgb": 31.9401,
+ "rmse_rgb": 78.688,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "XlsxIssue82_5mb_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ },
+ {
+ "page": 2,
+ "minipdf_img": "XlsxIssue82_5mb_p2_minipdf.png",
+ "reference_img": "XlsxIssue82_5mb_p2_reference.png",
+ "auxiliary_img": "XlsxIssue82_5mb_p2_libreoffice.png",
+ "heatmap_img": "XlsxIssue82_5mb_p2_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1241,
+ 1650
+ ],
+ "difference_bbox_px": [
+ 106,
+ 122,
+ 1100,
+ 1522
+ ],
+ "changed_pixels": 430451,
+ "changed_fraction": 0.210217,
+ "mean_abs_rgb": 31.5113,
+ "rmse_rgb": 78.0558,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "XlsxIssue82_5mb_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ },
+ {
+ "page": 3,
+ "minipdf_img": "XlsxIssue82_5mb_p3_minipdf.png",
+ "reference_img": "XlsxIssue82_5mb_p3_reference.png",
+ "auxiliary_img": "XlsxIssue82_5mb_p3_libreoffice.png",
+ "heatmap_img": "XlsxIssue82_5mb_p3_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1241,
+ 1650
+ ],
+ "difference_bbox_px": [
+ 106,
+ 122,
+ 1100,
+ 1522
+ ],
+ "changed_pixels": 433772,
+ "changed_fraction": 0.211839,
+ "mean_abs_rgb": 31.8166,
+ "rmse_rgb": 78.4756,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "XlsxIssue82_5mb_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ }
+ ],
+ "overall_score": 0.6783
+ },
+ {
+ "name": "XlsxIssue82_SampleTestData5mb",
+ "minipdf_exists": true,
+ "reference_exists": true,
+ "report_scope": "java-issue-xlsx",
+ "case_id": "XlsxIssue82_SampleTestData5mb",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/XlsxIssue82_SampleTestData5mb.xlsx",
+ "suite": "issue",
+ "minipdf_size": 12343878,
+ "reference_size": 32924505,
+ "pdf_valid": true,
+ "minipdf_pages": 466,
+ "reference_pages": 1668,
+ "compared_pages": 3,
+ "text_similarity": 0.6595,
+ "flat_text_similarity": 0.6586,
+ "word_text_similarity": 0.6595,
+ "text_diff": "--- minipdf/XlsxIssue82_SampleTestData5mb.pdf\n+++ reference/XlsxIssue82_SampleTestData5mb.pdf\n@@ -1,131 +1,146 @@\n-ID Name Email City Country DepartmenNotes Value1 Value2 RandomTe\n\n-1 User 1 user1@exaToronto UK IT pwJqdCFm760613 0.6770745 aJ3NulIjekF\n\n-2 User 2 user2@exaDelhi Germany IT S6gI ƩJQrYi 456305 0.8501621 pf092rX59\n\n-3 User 3 user3@exaSydney UK Finance mmp5R2o 802115 0.4416719 FICghVXe4\n\n-4 User 4 user4@exaBerlin Australia HR BpiYtDuC1 929132 0.9823118 Dqy4Y ĬZV\n\n-5 User 5 user5@exaBerlin France HR DXnTIbeTy178492 0.9325545 KXaj1Xiogb\n\n-6 User 6 user6@exaDelhi Australia HR Iw9DkBED 518412 0.1261322 U601Kz3aU\n\n-7 User 7 user7@exaToronto Australia Finance tN5mvZpZ 72218 0.5143867 GuleIeBIYZ\n\n-8 User 8 user8@exaTokyo USA Ops xqmF3Xc2n238623 0.8771951 kEPOh7wm\n\n-9 User 9 user9@exaLondon Australia Ops k099328Ns369743 0.6153598 D5YOUBW\n\n-10 User 10 user10@exDelhi Germany IT 3YvAHvcSG24089 0.9405732 goDwaKqv\n\n-11 User 11 user11@exSydney France Sales r2O9ZtMJy929463 0.4255768 F4rYXgsl2m\n\n-12 User 12 user12@exTokyo Japan Sales y8JVUgTdff777742 0.6389745 wNpAAEw\n\n-13 User 13 user13@exTokyo India Support v5XTbqBU 223784 0.2318513 FlobOTEN9\n\n-14 User 14 user14@exNew York Japan Ops pxwvBMPV187168 0.7562123 cJSx1oYMF\n\n-15 User 15 user15@exSydney Japan Ops NPs68SCLX332785 0.3476629 82hWYSRr\n\n-16 User 16 user16@exDelhi Canada Ops JMgIo6JDv 966595 0.1094971 4BAbUAcF\n\n-17 User 17 user17@exParis Australia Ops LWFef8uCc429423 0.1728704 UQEtbOYiF\n\n-18 User 18 user18@exTokyo Australia Ops 4y2atULBn179954 0.9145142 AKEBEMk7\n\n-19 User 19 user19@exBerlin France Finance MoiyHIdz6416476 0.4178345 yKogEsvtgj\n\n-20 User 20 user20@exLondon India Sales Gg4eeM2f 152083 0.2796520 4bCh4zWg\n\n-21 User 21 user21@exTokyo India Finance hk0tj7hQtj913510 0.5214737 uQ5Qw22c\n\n-22 User 22 user22@exNew York UK IT FexqT7i2Zp959850 0.2004013 6WLsCwBv\n\n-23 User 23 user23@exSydney Japan Ops wZdZL0KlV813108 0.0758993 ovnVvOjCS\n\n-24 User 24 user24@exLondon Germany Support I6go0j9fZK 175461 0.2702658 euHzFEtXjD\n\n-25 User 25 user25@exLondon Canada Ops eE9wvY61e582815 0.8325950 4E725SLTR\n\n-26 User 26 user26@exTokyo Japan Support vTlTmSLZK698910 0.0572326 63fo6sebU\n\n-27 User 27 user27@exDelhi UK Ops 001jLkp56y463742 0.6366096 cPF7y1qrq\n\n-28 User 28 user28@exTokyo India Ops JYMn1HVG185984 0.7516507 aFVmUW0\n\n-29 User 29 user29@exLondon India Sales kDD8aBkfu110478 0.8380068 e8DIRNwL\n\n-30 User 30 user30@exBerlin UK Ops vt3rlC8s2T 165682 0.4784513 cuF6nwLU\n\n-31 User 31 user31@exSydney Canada Ops Sy0TGdVhk300288 0.5455362 17YQUGbp\n\n-32 User 32 user32@exLondon Japan IT nuLK3hv5k932811 0.9327351 RGlzsAMoP\n\n-33 User 33 user33@exTokyo Australia Finance 8QxYNykpz732250 0.0841050 14ZKlRNVj4\n\n-34 User 34 user34@exNew York Germany IT WpY292GK120021 0.2129102 zWJnnfwsk\n\n-35 User 35 user35@exParis India IT Jc9UIcHT95631634 0.3495153 aLR8YGHPO\n\n-36 User 36 user36@exSydney Canada Ops JuxIUrhxzG858909 0.8466705 8LPabTH0o\n\n-37 User 37 user37@exBerlin Germany Ops f3VPwwbQ335553 0.8283657 xevCKmwR\n\n-38 User 38 user38@exNew York India Support RK2dsJAxo77274 0.0923226 dG5rwOUq\n\n-39 User 39 user39@exLondon UK Ops h7clcYpBdQ127744 0.4235435 0zQYEUv9a\n\n-40 User 40 user40@exParis Canada IT 5fFW0pL9J766118 0.0962124 8uBRN1W1\n\n-41 User 41 user41@exTokyo Australia HR b0aptneoq18584 0.3069412 90pCYpBY8\n\n-42 User 42 user42@exSydney Canada HR zc3bKQDT0377914 0.1143153 ug1YisiJ5B6\n\n+ID Name Email City Country DepartmenNotes Value1 Value2\n\n+1 User 1 user1@exaToronto UK IT pwJqdCFm 760613 0.677075\n\n+2 User 2 user2@exaDelhi Germany IT S6gIttJQrYi 456305 0.850162\n\n+3 User 3 user3@exaSydney UK Finance mmp5R2oK 802115 0.441672\n\n+4 User 4 user4@exaBerlin Australia HR BpiYtDuC1 929132 0.982312\n\n+5 User 5 user5@exaBerlin France HR DXnTIbeTy 178492 0.932555\n\n+6 User 6 user6@exaDelhi Australia HR Iw9DkBEDh 518412 0.126132\n\n+7 User 7 user7@exaToronto Australia Finance tN5mvZpZF 72218 0.514387\n\n+8 User 8 user8@exaTokyo USA Ops xqmF3Xc2n 238623 0.877195\n\n+9 User 9 user9@exaLondon Australia Ops k099328Ns 369743 0.61536\n\n+10 User 10 user10@exDelhi Germany IT 3YvAHvcSG 24089 0.940573\n\n+11 User 11 user11@exSydney France Sales r2O9ZtMJy 929463 0.425577\n\n+12 User 12 user12@exTokyo Japan Sales y8JVUgTdff 777742 0.638975\n\n+13 User 13 user13@exTokyo India Support v5XTbqBUb 223784 0.231851\n\n+14 User 14 user14@exNew York Japan Ops pxwvBMPV 187168 0.756212\n\n+15 User 15 user15@exSydney Japan Ops NPs68SCLX 332785 0.347663\n\n+16 User 16 user16@exDelhi Canada Ops JMgIo6JDv 966595 0.109497\n\n+17 User 17 user17@exParis Australia Ops LWFef8uCc 429423 0.17287\n\n+18 User 18 user18@exTokyo Australia Ops 4y2atULBn 179954 0.914514\n\n+19 User 19 user19@exBerlin France Finance MoiyHIdz6 416476 0.417835\n\n+20 User 20 user20@exLondon India Sales Gg4eeM2f 152083 0.279652\n\n+21 User 21 user21@exTokyo India Finance hk0tj7hQtj 913510 0.521474\n\n+22 User 22 user22@exNew York UK IT FexqT7i2Zp 959850 0.200401\n\n+23 User 23 user23@exSydney Japan Ops wZdZL0KlV 813108 0.075899\n\n+24 User 24 user24@exLondon Germany Support I6go0j9fZK 175461 0.270266\n\n+25 User 25 user25@exLondon Canada Ops eE9wvY61e 582815 0.832595\n\n+26 User 26 user26@exTokyo Japan Support vTlTmSLZK 698910 0.057233\n\n+27 User 27 user27@exDelhi UK Ops 001jLkp56y 463742 0.63661\n\n+28 User 28 user28@exTokyo India Ops JYMn1HVG 185984 0.751651\n\n+29 User 29 user29@exLondon India Sales kDD8aBkfu 110478 0.838007\n\n+30 User 30 user30@exBerlin UK Ops vt3rlC8s2T 165682 0.478451\n\n+31 User 31 user31@exSydney Canada Ops Sy0TGdVhk 300288 0.545536\n\n+32 User 32 user32@exLondon Japan IT nuLK3hv5k 932811 0.932735\n\n+33 User 33 user33@exTokyo Australia Finance 8QxYNykpz 732250 0.084105\n\n+34 User 34 user34@exNew York Germany IT WpY292GK 120021 0.21291\n\n+35 User 35 user35@exParis India IT Jc9UIcHT95 631634 0.349515\n\n+36 User 36 user36@exSydney Canada Ops JuxIUrhxzG 858909 0.846671\n\n+37 User 37 user37@exBerlin Germany Ops f3VPwwbQ 335553 0.828366\n\n+38 User 38 user38@exNew York India Support RK2dsJAxo 77274 0.092323\n\n+39 User 39 user39@exLondon UK Ops h7clcYpBdQ 127744 0.423544\n\n+40 User 40 user40@exParis Canada IT 5fFW0pL9J 766118 0.096212\n\n+41 User 41 user41@exTokyo Australia HR b0aptneoq 18584 0.306941\n\n+42 User 42 user42@exSydney Canada HR zc3bKQDT0 377914 0.114315\n\n+43 User 43 user43@exSydney India IT kOXLmqe2 692339 0.917215\n\n+44 User 44 user44@exNew York Canada Sales IfbMmzIxeT 211604 0.760957\n\n+45 User 45 user45@exSydney Australia Ops pSgTVUUSc 678354 0.735938\n\n+46 User 46 user46@exToronto Australia Sales RfaAbjGWL 538685 0.10975\n\n+47 User 47 user47@exDelhi France IT qIEmsQfW 731498 0.602969\n\n ---PAGE---\n\n-43 User 43 user43@exSydney India IT kOXLmqe2692339 0.9172149 oziAXf1ScK\n\n-44 User 44 user44@exNew York Canada Sales I ĩMmzIxe 211604 0.7609569 6cuChdxef\n\n-45 User 45 user45@exSydney Australia Ops pSgTVUUS 678354 0.7359376 YqmZM6Q\n\n-46 User 46 user46@exToronto Australia Sales RfaAbjGW 538685 0.1097496 bgmSp49q\n\n-47 User 47 user47@exDelhi France IT qIEmsQfW731498 0.6029687 GdxIEtlPBr\n\n-48 User 48 user48@exToronto Japan HR gHfmzYTIg 949591 0.7494362 Jj5zeG3DcU\n\n-49 User 49 user49@exBerlin USA Finance y1rGMU6n942989 0.6763081 oznXGro8z\n\n-50 User 50 user50@exBerlin India Support 7hM3n4sC43099 0.8213021 EuGw0OQ\n\n-51 User 51 user51@exLondon Australia HR MmV8BaE 763744 0.8099885 XJETIxko9t\n\n-52 User 52 user52@exTokyo USA Sales XYWbId9ra567945 0.6771776 izWN8bHim\n\n-53 User 53 user53@exSydney India Ops wrhIJ4tOQ23173 0.7727330 H1whCyVf\n\n-54 User 54 user54@exBerlin UK Ops C1UzUHuIx640118 0.0928711 haO93rZXm\n\n-55 User 55 user55@exParis India Ops NwN8HJ0o861057 0.0633270 LEvHHR3L6\n\n-56 User 56 user56@exTokyo India Sales WCHK12hN781351 0.8121292 Vd3AvQeJc\n\n-57 User 57 user57@exNew York Japan Finance 52a67MbY553366 0.6360348 YiRarm1Pv\n\n-58 User 58 user58@exToronto UK Support zEDfqL3lSk571081 0.5216211 jw9NdvFPw\n\n-59 User 59 user59@exLondon Germany Ops GK2yaRjJ8G886667 0.2104232 vL4K3rOyA\n\n-60 User 60 user60@exSydney France Support uPoXGLysN120996 0.5698598 T6yRnrr92\n\n-61 User 61 user61@exTokyo France HR a0kjAST01V626587 0.9632653 N7dcOBQd\n\n-62 User 62 user62@exToronto Australia Sales Ca5t9ga4i0251280 0.8578650 XhopZtgu8\n\n-63 User 63 user63@exNew York France Ops X6vKuLHj2 374312 0.1000169 gls9pnyBaX\n\n-64 User 64 user64@exNew York Germany Sales KV3hqzMU542032 0.5769093 nQb817wG\n\n-65 User 65 user65@exNew York USA HR uMT8lMRA173041 0.1312740 D6wNDW0\n\n-66 User 66 user66@exBerlin India Sales K49Il5UBQ433186 0.5278215 O9XsNnkn\n\n-67 User 67 user67@exToronto India IT J7Y2aeVZO10813 0.4735151 DHH4M3H\n\n-68 User 68 user68@exDelhi India Support 7jeSfauKvK19370 0.7466147 B7PwW4P\n\n-69 User 69 user69@exLondon France HR jIpYsY4pZL 364549 0.2253328 IyOp6s2M4\n\n-70 User 70 user70@exDelhi India IT UwaV8I4Cw951943 0.7495851 JzUbUwYm\n\n-71 User 71 user71@exDelhi France Ops 0Ym9UoP1893176 0.3766673 ySdFxv18H\n\n-72 User 72 user72@exNew York India Support U6V62Wez70193 0.2139794 jbybfxkjGn\n\n-73 User 73 user73@exNew York UK Ops wH7id1Sd5157735 0.0699862 uG5xberBk\n\n-74 User 74 user74@exTokyo Japan IT 6N2f6QTvd335377 0.0463896 UVwuvCn9\n\n-75 User 75 user75@exParis Canada Finance I4WEtHWz686537 0.3693260 qy7vbZlWk\n\n-76 User 76 user76@exTokyo India Finance qvPya44Q2815804 0.3461168 t4eAXtrYsP\n\n-77 User 77 user77@exTokyo Japan Support 0orEFMnW349017 0.5786067 pe2IFbLuqJ\n\n-78 User 78 user78@exSydney India Finance 6wUPnX0T809884 0.4482304 wL2fDjOZ6\n\n-79 User 79 user79@exBerlin India Sales tOZjLiQMS585405 0.6793615 PMzwPuOr\n\n-80 User 80 user80@exBerlin France HR JmkJcjyJ51163635 0.6557601 Yy4x7aq6E\n\n-81 User 81 user81@exBerlin India Sales ymLZqumc336189 0.7734933 kazU4lZilm\n\n-82 User 82 user82@exSydney France HR 2ZDBcGlyI8519574 0.1512873 hTdECmFH\n\n-83 User 83 user83@exParis Australia Sales WJ8UNcsX739637 0.1624233 D79Vqncgu\n\n-84 User 84 user84@exParis USA Sales gJ5JKM9TF816943 0.3681694 dQJypGR24\n\n-85 User 85 user85@exTokyo Germany Ops 4Lwth3h5t294727 0.9645151 nSAj35RPs\n\n+48 User 48 user48@exToronto Japan HR gHfmzYTIg 949591 0.749436\n\n+49 User 49 user49@exBerlin USA Finance y1rGMU6n 942989 0.676308\n\n+50 User 50 user50@exBerlin India Support 7hM3n4sC 43099 0.821302\n\n+51 User 51 user51@exLondon Australia HR MmV8BaE0 763744 0.809989\n\n+52 User 52 user52@exTokyo USA Sales XYWbId9ra 567945 0.677178\n\n+53 User 53 user53@exSydney India Ops wrhIJ4tOQ 23173 0.772733\n\n+54 User 54 user54@exBerlin UK Ops C1UzUHuIx 640118 0.092871\n\n+55 User 55 user55@exParis India Ops NwN8HJ0o 861057 0.063327\n\n+56 User 56 user56@exTokyo India Sales WCHK12hN 781351 0.812129\n\n+57 User 57 user57@exNew York Japan Finance 52a67MbY 553366 0.636035\n\n+58 User 58 user58@exToronto UK Support zEDfqL3lSk 571081 0.521621\n\n+59 User 59 user59@exLondon Germany Ops GK2yaRjJ8G 886667 0.210423\n\n+60 User 60 user60@exSydney France Support uPoXGLysN 120996 0.56986\n\n+61 User 61 user61@exTokyo France HR a0kjAST01V 626587 0.963265\n\n+62 User 62 user62@exToronto Australia Sales Ca5t9ga4i0 251280 0.857865\n\n+63 User 63 user63@exNew York France Ops X6vKuLHj2 374312 0.100017\n\n+64 User 64 user64@exNew York Germany Sales KV3hqzMU 542032 0.576909\n\n+65 User 65 user65@exNew York USA HR uMT8lMRA 173041 0.131274\n\n+66 User 66 user66@exBerlin India Sales K49Il5UBQ 433186 0.527822\n\n+67 User 67 user67@exToronto India IT J7Y2aeVZO 10813 0.473515\n\n+68 User 68 user68@exDelhi India Support 7jeSfauKvK 19370 0.746615\n\n+69 User 69 user69@exLondon France HR jIpYsY4pZL 364549 0.225333\n\n+70 User 70 user70@exDelhi India IT UwaV8I4Cw 951943 0.749585\n\n+71 User 71 user71@exDelhi France Ops 0Ym9UoP1 893176 0.376667\n\n+72 User 72 user72@exNew York India Support U6V62Wez 70193 0.213979\n\n+73 User 73 user73@exNew York UK Ops wH7id1Sd5 157735 0.069986\n\n+74 User 74 user74@exTokyo Japan IT 6N2f6QTvd 335377 0.04639\n\n+75 User 75 user75@exParis Canada Finance I4WEtHWz 686537 0.369326\n\n+76 User 76 user76@exTokyo India Finance qvPya44Q2 815804 0.346117\n\n+77 User 77 user77@exTokyo Japan Support 0orEFMnW 349017 0.578607\n\n+78 User 78 user78@exSydney India Finance 6wUPnX0T 809884 0.44823\n\n+79 User 79 user79@exBerlin India Sales tOZjLiQMS 585405 0.679362\n\n+80 User 80 user80@exBerlin France HR JmkJcjyJ51 163635 0.65576\n\n+81 User 81 user81@exBerlin India Sales ymLZqumc 336189 0.773493\n\n+82 User 82 user82@exSydney France HR 2ZDBcGlyI8 519574 0.151287\n\n+83 User 83 user83@exParis Australia Sales WJ8UNcsX 739637 0.162423\n\n+84 User 84 user84@exParis USA Sales gJ5JKM9TF 816943 0.368169\n\n+85 User 85 user85@exTokyo Germany Ops 4Lwth3h5t 294727 0.964515\n\n+86 User 86 user86@exBerlin Australia Support qdHkuwuA 26051 0.155339\n\n+87 User 87 user87@exLondon Germany Sales Rm8ULi8zC 510690 0.214005\n\n+88 User 88 user88@exLondon Germany Ops RLiCwPFsf8 882997 0.530643\n\n+89 User 89 user89@exParis UK Ops 8uJGoN4bm 541389 0.648206\n\n+90 User 90 user90@exDelhi Australia Finance s3OwOdf4 182072 0.197334\n\n+91 User 91 user91@exNew York India Sales WNxiOf7t0 558356 0.110729\n\n+92 User 92 user92@exToronto Australia HR 6Ahj9jv5lv7 456649 0.237787\n\n+93 User 93 user93@exTokyo Japan Support oJ0UurS10 725729 0.667981\n\n+94 User 94 user94@exTokyo France Support 3S1nUyHzL 528395 0.574581\n\n+95 User 95 user95@exLondon Japan Ops pIeB2mVQ 824787 0.36571\n\n ---PAGE---\n\n-86 User 86 user86@exBerlin Australia Support qdHkuwuA26051 0.1553391 nZZZB3rto\n\n-87 User 87 user87@exLondon Germany Sales Rm8ULi8zC510690 0.2140052 QC331rVyz\n\n-88 User 88 user88@exLondon Germany Ops RLiCwPFsf8882997 0.5306427 uOObOMiF\n\n-89 User 89 user89@exParis UK Ops 8uJGoN4bm541389 0.6482057 wO9NiI7NF\n\n-90 User 90 user90@exDelhi Australia Finance s3OwOdf4 182072 0.1973342 5knRqv5hD\n\n-91 User 91 user91@exNew York India Sales WNxiOf7t0558356 0.1107289 SWlW1Yod\n\n-92 User 92 user92@exToronto Australia HR 6Ahj9jv5lv 456649 0.2377873 MWBsNJTe\n\n-93 User 93 user93@exTokyo Japan Support oJ0UurS10725729 0.6679805 JnpAFdtZaC\n\n-94 User 94 user94@exTokyo France Support 3S1nUyHzL528395 0.5745808 h8CfoCCHn\n\n-95 User 95 user95@exLondon Japan Ops pIeB2mVQ824787 0.3657098 zla4L847k1\n\n-96 User 96 user96@exNew York France IT hulUkDiMo235296 0.5696921 SBO8S ŅXK\n\n-97 User 97 user97@exLondon Japan HR HcWR2JVD820757 0.3114619 ysmCZ7IYo\n\n-98 User 98 user98@exToronto Canada Finance rzAyXFQJp 424891 0.4222309 MDPBvBfm\n\n-99 User 99 user99@exTokyo Canada IT 0812MWb 968152 0.1284013 VRvKjHgiQ\n\n-100 User 100 user100@eParis India IT NufGb8y3N843439 0.1581288 hZJR6K6I9o\n\n-101 User 101 user101@eToronto Japan IT deU8iHNYk34908 0.1964766 dzKPO8hFt\n\n-102 User 102 user102@eLondon Canada IT DhGtReG3 479050 0.7616127 qvZ2wvV2s\n\n-103 User 103 user103@eDelhi Germany IT eDxVpFoh8458438 0.1964282 taNTdhntk\n\n-104 User 104 user104@eSydney Australia Ops k8PUmmzK312354 0.7133815 zjjtTZsprhV\n\n-105 User 105 user105@eParis France Ops ZKoxM3lPT915347 0.3699949 NXNkwDRx\n\n-106 User 106 user106@eBerlin Japan Sales h9nfVqLXY702812 0.7484500 1PkadibIgv\n\n-107 User 107 user107@eSydney India Ops ahdv8h3CZ763038 0.0104155 NOpPEsayx\n\n-108 User 108 user108@eSydney USA Finance s4H4yCdRu758153 0.1850179 85n ŅbQlq\n\n-109 User 109 user109@eSydney USA IT mkVORAG 571933 0.4315153 L8SQDUYp\n\n-110 User 110 user110@eBerlin USA Finance Y4DpetM8219537 0.7557194 qYWL18pw\n\n-111 User 111 user111@eDelhi India Ops 1t60ENNne649507 0.1117389 Vq9y2RoEh\n\n-112 User 112 user112@eBerlin France IT GZkcW97c 187557 0.1275561 bXiL29EjRX\n\n-113 User 113 user113@eToronto Canada Support sHmAji1IXN297243 0.8072703 PWXElVXH\n\n-114 User 114 user114@eBerlin India Ops 48Aezwrq6315163 0.1882047 QzQhpniJD\n\n-115 User 115 user115@eTokyo France Ops 5iJn7C2wM78489 0.1588379 XOqPeijTfF\n\n-116 User 116 user116@eToronto UK Ops YJwkek68h160903 0.0992863 hPyZHq53G\n\n-117 User 117 user117@eSydney France IT dOkiXIQMk732106 0.2668870 3P83ZuF31\n\n-118 User 118 user118@eLondon Japan HR sfxPBku9Fv287096 0.0985303 imkFllt6GF\n\n-119 User 119 user119@eTokyo India Ops KDVrmeQK308729 0.4164513 9MAF6PLK\n\n-120 User 120 user120@eLondon Canada Ops jD9hrR0Gz 537720 0.7938233 t83P4yZUx\n\n-121 User 121 user121@eNew York USA HR c7kZ7tYKb 441172 0.2294726 QI5u7F7uk\n\n-122 User 122 user122@eSydney Canada Finance I1MExdeqH499737 0.9000335 4QSDIGe9T\n\n-123 User 123 user123@eLondon UK HR OHmzoY1W567629 0.0525116 6ohFIZRi8y\n\n-124 User 124 user124@eToronto Germany HR h1pzgN8BT722752 0.7936499 kIoGcYsEYL\n\n-125 User 125 user125@eSydney Canada HR f17e8htrtn218736 0.9971520 CuEityvykiW\n\n-126 User 126 user126@eSydney USA HR upw4M0l4324442 0.1536136 vX1aoo1S0\n\n-127 User 127 user127@eLondon France HR AQuCMExF738485 0.2527435 p6qqOrii2p\n\n-128 User 128 user128@eTokyo India Finance ExhcxbIlLsC133333 0.6261561 5KmmdfQu\n+96 User 96 user96@exNew York France IT hulUkDiMo 235296 0.569692\n\n+97 User 97 user97@exLondon Japan HR HcWR2JVD 820757 0.311462\n\n+98 User 98 user98@exToronto Canada Finance rzAyXFQJp 424891 0.422231\n\n+99 User 99 user99@exTokyo Canada IT 0812MWb 968152 0.128401\n\n+100 User 100 user100@eParis India IT NufGb8y3N 843439 0.158129\n\n+101 User 101 user101@eToronto Japan IT deU8iHNYk 34908 0.196477\n\n+102 User 102 user102@eLondon Canada IT DhGtReG3 479050 0.761613\n\n+103 User 103 user103@eDelhi Germany IT eDxVpFoh8 458438 0.196428\n\n+104 User 104 user104@eSydney Australia Ops k8PUmmzK 312354 0.713382\n\n+105 User 105 user105@eParis France Ops ZKoxM3lPT 915347 0.369995\n\n+106 User 106 user106@eBerlin Japan Sales h9nfVqLXY 702812 0.74845\n\n+107 User 107 user107@eSydney India Ops ahdv8h3CZ 763038 0.010416\n\n+108 User 108 user108@eSydney USA Finance s4H4yCdRu 758153 0.185018\n\n+109 User 109 user109@eSydney USA IT mkVORAGK 571933 0.431515\n\n+110 User 110 user110@eBerlin USA Finance Y4DpetM8 219537 0.755719\n\n+111 User 111 user111@eDelhi India Ops 1t60ENNne 649507 0.111739\n\n+112 User 112 user112@eBerlin France IT GZkcW97c 187557 0.127556\n\n+113 User 113 user113@eToronto Canada Support sHmAji1IXN 297243 0.80727\n\n+114 User 114 user114@eBerlin India Ops 48Aezwrq6 315163 0.188205\n\n+115 User 115 user115@eTokyo France Ops 5iJn7C2wM 78489 0.158838\n\n+116 User 116 user116@eToronto UK Ops YJwkek68h 160903 0.099286\n\n+117 User 117 user117@eSydney France IT dOkiXIQMk 732106 0.266887\n\n+118 User 118 user118@eLondon Japan HR sfxPBku9Fv 287096 0.09853\n\n+119 User 119 user119@eTokyo India Ops KDVrmeQK 308729 0.416451\n\n+120 User 120 user120@eLondon Canada Ops jD9hrR0Gz 537720 0.793823\n\n+121 User 121 user121@eNew York USA HR c7kZ7tYKbU 441172 0.229473\n\n+122 User 122 user122@eSydney Canada Finance I1MExdeqH 499737 0.900034\n\n+123 User 123 user123@eLondon UK HR OHmzoY1W 567629 0.052512\n\n+124 User 124 user124@eToronto Germany HR h1pzgN8BT 722752 0.79365\n\n+125 User 125 user125@eSydney Canada HR f17e8htrtn 218736 0.997152\n\n+126 User 126 user126@eSydney USA HR upw4M0l4 324442 0.153614\n\n+127 User 127 user127@eLondon France HR AQuCMExF 738485 0.252744\n\n+128 User 128 user128@eTokyo India Finance ExhcxbIlLsC 133333 0.626156\n\n+129 User 129 user129@eSydney Canada HR 3ISteehQH 348122 0.615977\n\n+130 User 130 user130@eTokyo France Ops bDyPWDq4 213592 0.004476\n\n+131 User 131 user131@eToronto Japan Ops gWYJqcRCR 929719 0.58812\n\n+132 User 132 user132@eTokyo Australia Ops 5Gyykn9s6 139678 0.1422\n\n+133 User 133 user133@eSydney Germany Support 7b87Byn4C 532024 0.521675\n\n+134 User 134 user134@eLondon Australia Support mNDhwFlU 184668 0.237346\n\n+135 User 135 user135@eParis USA Support EMsNaracP 578362 0.596993\n\n+136 User 136 user136@eDelhi Germany Support 8KEpYImbB 255681 0.772566\n\n+137 User 137 user137@eNew York Canada IT LR6JoYTkPJ 529150 0.677791\n\n+138 User 138 user138@eBerlin Australia Ops ifrlUWuVD 104741 0.173994\n\n+139 User 139 user139@eTokyo Australia IT rEmdtnwU 680725 0.970682\n\n+140 User 140 user140@eSydney UK Ops FGqYHnrao 644846 0.001783\n\n+141 User 141 user141@eLondon UK Ops JSlUmVmk 844498 0.290946\n\n+142 User 142 user142@eNew York Canada HR oW2cNeNj 186421 0.892564\n\n+143 User 143 user143@eLondon India Ops ui1afoCfLk 139589 0.524195",
+ "visual_scores": [
+ 0.8861,
+ 0.8816,
+ 0.8807
+ ],
+ "visual_avg": 0.8828,
+ "diff_images": [
+ {
+ "page": 1,
+ "minipdf_img": "XlsxIssue82_SampleTestData5mb_p1_minipdf.png",
+ "reference_img": "XlsxIssue82_SampleTestData5mb_p1_reference.png",
+ "auxiliary_img": "XlsxIssue82_SampleTestData5mb_p1_libreoffice.png",
+ "heatmap_img": "XlsxIssue82_SampleTestData5mb_p1_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1241,
+ 1754
+ ],
+ "difference_bbox_px": [
+ 114,
+ 157,
+ 1078,
+ 1599
+ ],
+ "changed_pixels": 356955,
+ "changed_fraction": 0.163988,
+ "mean_abs_rgb": 26.6364,
+ "rmse_rgb": 73.6748,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "XlsxIssue82_SampleTestData5mb_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ },
+ {
+ "page": 2,
+ "minipdf_img": "XlsxIssue82_SampleTestData5mb_p2_minipdf.png",
+ "reference_img": "XlsxIssue82_SampleTestData5mb_p2_reference.png",
+ "auxiliary_img": "XlsxIssue82_SampleTestData5mb_p2_libreoffice.png",
+ "heatmap_img": "XlsxIssue82_SampleTestData5mb_p2_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1241,
+ 1754
+ ],
+ "difference_bbox_px": [
+ 114,
+ 157,
+ 1078,
+ 1600
+ ],
+ "changed_pixels": 365254,
+ "changed_fraction": 0.167801,
+ "mean_abs_rgb": 27.2049,
+ "rmse_rgb": 74.4386,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "XlsxIssue82_SampleTestData5mb_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ },
+ {
+ "page": 3,
+ "minipdf_img": "XlsxIssue82_SampleTestData5mb_p3_minipdf.png",
+ "reference_img": "XlsxIssue82_SampleTestData5mb_p3_reference.png",
+ "auxiliary_img": "XlsxIssue82_SampleTestData5mb_p3_libreoffice.png",
+ "heatmap_img": "XlsxIssue82_SampleTestData5mb_p3_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1241,
+ 1754
+ ],
+ "difference_bbox_px": [
+ 114,
+ 157,
+ 1078,
+ 1599
+ ],
+ "changed_pixels": 369955,
+ "changed_fraction": 0.16996,
+ "mean_abs_rgb": 27.6909,
+ "rmse_rgb": 75.189,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "XlsxIssue82_SampleTestData5mb_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ }
+ ],
+ "overall_score": 0.7169
+ },
+ {
+ "name": "XlsxIssue82_WideTable",
+ "minipdf_exists": true,
+ "reference_exists": true,
+ "report_scope": "java-issue-xlsx",
+ "case_id": "XlsxIssue82_WideTable",
+ "format": "xlsx",
+ "source_path": "tests/Issue_Files/xlsx/XlsxIssue82_WideTable.xlsx",
+ "suite": "issue",
+ "minipdf_size": 67131,
+ "reference_size": 467940,
+ "pdf_valid": true,
+ "minipdf_pages": 13,
+ "reference_pages": 13,
+ "compared_pages": 3,
+ "text_similarity": 0.9103,
+ "flat_text_similarity": 0.5423,
+ "word_text_similarity": 0.9103,
+ "text_diff": "--- minipdf/XlsxIssue82_WideTable.pdf\n+++ reference/XlsxIssue82_WideTable.pdf\n@@ -1,110 +1,113 @@\n Record ID First Name Last Name Street Address City Region Postal Code\n\n ID-00001 Naveen Adhikari 1000 North Evergreen Avenue Suite 200 Kathmandu WA 98000\n\n ID-00002 Alicia Patel 1001 North Evergreen Avenue Suite 201 Dublin BC 98001\n\n-ID-00003 Marcus Benne Ʃ 1002 North Evergreen Avenue Suite 202 Aus Ɵn WA 98002\n\n+ID-00003 Marcus Bennett 1002 North Evergreen Avenue Suite 202 Austin WA 98002\n\n ID-00004 Priya Olsen 1003 North Evergreen Avenue Suite 203 Berlin BC 98003\n\n ID-00005 Daniel Chen 1004 North Evergreen Avenue Suite 204 Singapore WA 98004\n\n-ID-00006 Mei Tanaka 1005 North Evergreen Avenue Suite 205 Sea Ʃle BC 98005\n\n-ID-00007 Sofia Kim 1006 North Evergreen Avenue Suite 206 Melbourne WA 98006\n\n+ID-00006 Mei Tanaka 1005 North Evergreen Avenue Suite 205 Seattle BC 98005\n\n+ID-00007 Sofia Kim 1006 North Evergreen Avenue Suite 206 Melbourne WA 98006\n\n ID-00008 Owen Morrison 1007 North Evergreen Avenue Suite 207 Toronto BC 98007\n\n ID-00009 Ibrahim Rodriguez 1008 North Evergreen Avenue Suite 208 Kathmandu WA 98008\n\n ID-00010 Caroline Singh 1009 North Evergreen Avenue Suite 209 Dublin BC 98009\n\n-ID-00011 Naveen Adhikari 1010 North Evergreen Avenue Suite 210 Aus Ɵn WA 98010\n\n+ID-00011 Naveen Adhikari 1010 North Evergreen Avenue Suite 210 Austin WA 98010\n\n ID-00012 Alicia Patel 1011 North Evergreen Avenue Suite 211 Berlin BC 98011\n\n-ID-00013 Marcus Benne Ʃ 1012 North Evergreen Avenue Suite 212 Singapore WA 98012\n\n-ID-00014 Priya Olsen 1013 North Evergreen Avenue Suite 213 Sea Ʃle BC 98013\n\n+ID-00013 Marcus Bennett 1012 North Evergreen Avenue Suite 212 Singapore WA 98012\n\n+ID-00014 Priya Olsen 1013 North Evergreen Avenue Suite 213 Seattle BC 98013\n\n ID-00015 Daniel Chen 1014 North Evergreen Avenue Suite 214 Melbourne WA 98014\n\n ID-00016 Mei Tanaka 1015 North Evergreen Avenue Suite 215 Toronto BC 98015\n\n-ID-00017 Sofia Kim 1016 North Evergreen Avenue Suite 216 Kathmandu WA 98016\n\n+ID-00017 Sofia Kim 1016 North Evergreen Avenue Suite 216 Kathmandu WA 98016\n\n ID-00018 Owen Morrison 1017 North Evergreen Avenue Suite 217 Dublin BC 98017\n\n-ID-00019 Ibrahim Rodriguez 1018 North Evergreen Avenue Suite 218 Aus Ɵn WA 98018\n\n+ID-00019 Ibrahim Rodriguez 1018 North Evergreen Avenue Suite 218 Austin WA 98018\n\n ID-00020 Caroline Singh 1019 North Evergreen Avenue Suite 219 Berlin BC 98019\n\n ID-00021 Naveen Adhikari 1020 North Evergreen Avenue Suite 220 Singapore WA 98020\n\n-ID-00022 Alicia Patel 1021 North Evergreen Avenue Suite 221 Sea Ʃle BC 98021\n\n-ID-00023 Marcus Benne Ʃ 1022 North Evergreen Avenue Suite 222 Melbourne WA 98022\n\n+ID-00022 Alicia Patel 1021 North Evergreen Avenue Suite 221 Seattle BC 98021\n\n+ID-00023 Marcus Bennett 1022 North Evergreen Avenue Suite 222 Melbourne WA 98022\n\n ID-00024 Priya Olsen 1023 North Evergreen Avenue Suite 223 Toronto BC 98023\n\n ID-00025 Daniel Chen 1024 North Evergreen Avenue Suite 224 Kathmandu WA 98024\n\n ID-00026 Mei Tanaka 1025 North Evergreen Avenue Suite 225 Dublin BC 98025\n\n-ID-00027 Sofia Kim 1026 North Evergreen Avenue Suite 226 Aus Ɵn WA 98026\n\n+ID-00027 Sofia Kim 1026 North Evergreen Avenue Suite 226 Austin WA 98026\n\n ID-00028 Owen Morrison 1027 North Evergreen Avenue Suite 227 Berlin BC 98027\n\n ID-00029 Ibrahim Rodriguez 1028 North Evergreen Avenue Suite 228 Singapore WA 98028\n\n-ID-00030 Caroline Singh 1029 North Evergreen Avenue Suite 229 Sea Ʃle BC 98029\n\n+ID-00030 Caroline Singh 1029 North Evergreen Avenue Suite 229 Seattle BC 98029\n\n ID-00031 Naveen Adhikari 1030 North Evergreen Avenue Suite 230 Melbourne WA 98030\n\n ID-00032 Alicia Patel 1031 North Evergreen Avenue Suite 231 Toronto BC 98031\n\n-ID-00033 Marcus Benne Ʃ 1032 North Evergreen Avenue Suite 232 Kathmandu WA 98032\n\n+ID-00033 Marcus Bennett 1032 North Evergreen Avenue Suite 232 Kathmandu WA 98032\n\n ID-00034 Priya Olsen 1033 North Evergreen Avenue Suite 233 Dublin BC 98033\n\n-ID-00035 Daniel Chen 1034 North Evergreen Avenue Suite 234 Aus Ɵn WA 98034\n\n+ID-00035 Daniel Chen 1034 North Evergreen Avenue Suite 234 Austin WA 98034\n\n+ID-00036 Mei Tanaka 1035 North Evergreen Avenue Suite 235 Berlin BC 98035\n\n ---PAGE---\n\n Record ID First Name Last Name Street Address City Region Postal Code\n\n-ID-00036 Mei Tanaka 1035 North Evergreen Avenue Suite 235 Berlin BC 98035\n\n-ID-00037 Sofia Kim 1036 North Evergreen Avenue Suite 236 Singapore WA 98036\n\n-ID-00038 Owen Morrison 1037 North Evergreen Avenue Suite 237 Sea Ʃle BC 98037\n\n+ID-00037 Sofia Kim 1036 North Evergreen Avenue Suite 236 Singapore WA 98036\n\n+ID-00038 Owen Morrison 1037 North Evergreen Avenue Suite 237 Seattle BC 98037\n\n ID-00039 Ibrahim Rodriguez 1038 North Evergreen Avenue Suite 238 Melbourne WA 98038\n\n ID-00040 Caroline Singh 1039 North Evergreen Avenue Suite 239 Toronto BC 98039\n\n ID-00041 Naveen Adhikari 1040 North Evergreen Avenue Suite 240 Kathmandu WA 98040\n\n ID-00042 Alicia Patel 1041 North Evergreen Avenue Suite 241 Dublin BC 98041\n\n-ID-00043 Marcus Benne Ʃ 1042 North Evergreen Avenue Suite 242 Aus Ɵn WA 98042\n\n+ID-00043 Marcus Bennett 1042 North Evergreen Avenue Suite 242 Austin WA 98042\n\n ID-00044 Priya Olsen 1043 North Evergreen Avenue Suite 243 Berlin BC 98043\n\n ID-00045 Daniel Chen 1044 North Evergreen Avenue Suite 244 Singapore WA 98044\n\n-ID-00046 Mei Tanaka 1045 North Evergreen Avenue Suite 245 Sea Ʃle BC 98045\n\n-ID-00047 Sofia Kim 1046 North Evergreen Avenue Suite 246 Melbourne WA 98046\n\n+ID-00046 Mei Tanaka 1045 North Evergreen Avenue Suite 245 Seattle BC 98045\n\n+ID-00047 Sofia Kim 1046 North Evergreen Avenue Suite 246 Melbourne WA 98046\n\n ID-00048 Owen Morrison 1047 North Evergreen Avenue Suite 247 Toronto BC 98047\n\n ID-00049 Ibrahim Rodriguez 1048 North Evergreen Avenue Suite 248 Kathmandu WA 98048\n\n ID-00050 Caroline Singh 1049 North Evergreen Avenue Suite 249 Dublin BC 98049\n\n-ID-00051 Naveen Adhikari 1050 North Evergreen Avenue Suite 200 Aus Ɵn WA 98050\n\n+ID-00051 Naveen Adhikari 1050 North Evergreen Avenue Suite 200 Austin WA 98050\n\n ID-00052 Alicia Patel 1051 North Evergreen Avenue Suite 201 Berlin BC 98051\n\n-ID-00053 Marcus Benne Ʃ 1052 North Evergreen Avenue Suite 202 Singapore WA 98052\n\n-ID-00054 Priya Olsen 1053 North Evergreen Avenue Suite 203 Sea Ʃle BC 98053\n\n+ID-00053 Marcus Bennett 1052 North Evergreen Avenue Suite 202 Singapore WA 98052\n\n+ID-00054 Priya Olsen 1053 North Evergreen Avenue Suite 203 Seattle BC 98053\n\n ID-00055 Daniel Chen 1054 North Evergreen Avenue Suite 204 Melbourne WA 98054\n\n ID-00056 Mei Tanaka 1055 North Evergreen Avenue Suite 205 Toronto BC 98055\n\n-ID-00057 Sofia Kim 1056 North Evergreen Avenue Suite 206 Kathmandu WA 98056\n\n+ID-00057 Sofia Kim 1056 North Evergreen Avenue Suite 206 Kathmandu WA 98056\n\n ID-00058 Owen Morrison 1057 North Evergreen Avenue Suite 207 Dublin BC 98057\n\n-ID-00059 Ibrahim Rodriguez 1058 North Evergreen Avenue Suite 208 Aus Ɵn WA 98058\n\n+ID-00059 Ibrahim Rodriguez 1058 North Evergreen Avenue Suite 208 Austin WA 98058\n\n ID-00060 Caroline Singh 1059 North Evergreen Avenue Suite 209 Berlin BC 98059\n\n ID-00061 Naveen Adhikari 1060 North Evergreen Avenue Suite 210 Singapore WA 98060\n\n-ID-00062 Alicia Patel 1061 North Evergreen Avenue Suite 211 Sea Ʃle BC 98061\n\n-ID-00063 Marcus Benne Ʃ 1062 North Evergreen Avenue Suite 212 Melbourne WA 98062\n\n+ID-00062 Alicia Patel 1061 North Evergreen Avenue Suite 211 Seattle BC 98061\n\n+ID-00063 Marcus Bennett 1062 North Evergreen Avenue Suite 212 Melbourne WA 98062\n\n ID-00064 Priya Olsen 1063 North Evergreen Avenue Suite 213 Toronto BC 98063\n\n ID-00065 Daniel Chen 1064 North Evergreen Avenue Suite 214 Kathmandu WA 98064\n\n ID-00066 Mei Tanaka 1065 North Evergreen Avenue Suite 215 Dublin BC 98065\n\n-ID-00067 Sofia Kim 1066 North Evergreen Avenue Suite 216 Aus Ɵn WA 98066\n\n+ID-00067 Sofia Kim 1066 North Evergreen Avenue Suite 216 Austin WA 98066\n\n ID-00068 Owen Morrison 1067 North Evergreen Avenue Suite 217 Berlin BC 98067\n\n ID-00069 Ibrahim Rodriguez 1068 North Evergreen Avenue Suite 218 Singapore WA 98068\n\n-ID-00070 Caroline Singh 1069 North Evergreen Avenue Suite 219 Sea Ʃle BC 98069\n\n+ID-00070 Caroline Singh 1069 North Evergreen Avenue Suite 219 Seattle BC 98069\n\n+ID-00071 Naveen Adhikari 1070 North Evergreen Avenue Suite 220 Melbourne WA 98070\n\n+ID-00072 Alicia Patel 1071 North Evergreen Avenue Suite 221 Toronto BC 98071\n\n ---PAGE---\n\n Record ID First Name Last Name Street Address City Region Postal Code\n\n-ID-00071 Naveen Adhikari 1070 North Evergreen Avenue Suite 220 Melbourne WA 98070\n\n-ID-00072 Alicia Patel 1071 North Evergreen Avenue Suite 221 Toronto BC 98071\n\n-ID-00073 Marcus Benne Ʃ 1072 North Evergreen Avenue Suite 222 Kathmandu WA 98072\n\n+ID-00073 Marcus Bennett 1072 North Evergreen Avenue Suite 222 Kathmandu WA 98072\n\n ID-00074 Priya Olsen 1073 North Evergreen Avenue Suite 223 Dublin BC 98073\n\n-ID-00075 Daniel Chen 1074 North Evergreen Avenue Suite 224 Aus Ɵn WA 98074\n\n+ID-00075 Daniel Chen 1074 North Evergreen Avenue Suite 224 Austin WA 98074\n\n ID-00076 Mei Tanaka 1075 North Evergreen Avenue Suite 225 Berlin BC 98075\n\n-ID-00077 Sofia Kim 1076 North Evergreen Avenue Suite 226 Singapore WA 98076\n\n-ID-00078 Owen Morrison 1077 North Evergreen Avenue Suite 227 Sea Ʃle BC 98077\n\n+ID-00077 Sofia Kim 1076 North Evergreen Avenue Suite 226 Singapore WA 98076\n\n+ID-00078 Owen Morrison 1077 North Evergreen Avenue Suite 227 Seattle BC 98077\n\n ID-00079 Ibrahim Rodriguez 1078 North Evergreen Avenue Suite 228 Melbourne WA 98078\n\n ID-00080 Caroline Singh 1079 North Evergreen Avenue Suite 229 Toronto BC 98079\n\n ID-00081 Naveen Adhikari 1080 North Evergreen Avenue Suite 230 Kathmandu WA 98080\n\n ID-00082 Alicia Patel 1081 North Evergreen Avenue Suite 231 Dublin BC 98081\n\n-ID-00083 Marcus Benne Ʃ 1082 North Evergreen Avenue Suite 232 Aus Ɵn WA 98082\n\n+ID-00083 Marcus Bennett 1082 North Evergreen Avenue Suite 232 Austin WA 98082\n\n ID-00084 Priya Olsen 1083 North Evergreen Avenue Suite 233 Berlin BC 98083\n\n ID-00085 Daniel Chen 1084 North Evergreen Avenue Suite 234 Singapore WA 98084\n\n-ID-00086 Mei Tanaka 1085 North Evergreen Avenue Suite 235 Sea Ʃle BC 98085\n\n-ID-00087 Sofia Kim 1086 North Evergreen Avenue Suite 236 Melbourne WA 98086\n\n+ID-00086 Mei Tanaka 1085 North Evergreen Avenue Suite 235 Seattle BC 98085\n\n+ID-00087 Sofia Kim 1086 North Evergreen Avenue Suite 236 Melbourne WA 98086\n\n ID-00088 Owen Morrison 1087 North Evergreen Avenue Suite 237 Toronto BC 98087\n\n ID-00089 Ibrahim Rodriguez 1088 North Evergreen Avenue Suite 238 Kathmandu WA 98088\n\n ID-00090 Caroline Singh 1089 North Evergreen Avenue Suite 239 Dublin BC 98089\n\n-ID-00091 Naveen Adhikari 1090 North Evergreen Avenue Suite 240 Aus Ɵn WA 98090\n\n+ID-00091 Naveen Adhikari 1090 North Evergreen Avenue Suite 240 Austin WA 98090\n\n ID-00092 Alicia Patel 1091 North Evergreen Avenue Suite 241 Berlin BC 98091\n\n-ID-00093 Marcus Benne Ʃ 1092 North Evergreen Avenue Suite 242 Singapore WA 98092\n\n-ID-00094 Priya Olsen 1093 North Evergreen Avenue Suite 243 Sea Ʃle BC 98093\n\n+ID-00093 Marcus Bennett 1092 North Evergreen Avenue Suite 242 Singapore WA 98092\n\n+ID-00094 Priya Olsen 1093 North Evergreen Avenue Suite 243 Seattle BC 98093\n\n ID-00095 Daniel Chen 1094 North Evergreen Avenue Suite 244 Melbourne WA 98094\n\n ID-00096 Mei Tanaka 1095 North Evergreen Avenue Suite 245 Toronto BC 98095\n\n-ID-00097 Sofia Kim 1096 North Evergreen Avenue Suite 246 Kathmandu WA 98096\n\n+ID-00097 Sofia Kim 1096 North Evergreen Avenue Suite 246 Kathmandu WA 98096\n\n ID-00098 Owen Morrison 1097 North Evergreen Avenue Suite 247 Dublin BC 98097\n\n-ID-00099 Ibrahim Rodriguez 1098 North Evergreen Avenue Suite 248 Aus Ɵn WA 98098\n\n+ID-00099 Ibrahim Rodriguez 1098 North Evergreen Avenue Suite 248 Austin WA 98098\n\n ID-00100 Caroline Singh 1099 North Evergreen Avenue Suite 249 Berlin BC 98099\n\n ID-00101 Naveen Adhikari 1100 North Evergreen Avenue Suite 200 Singapore WA 98100\n\n-ID-00102 Alicia Patel 1101 North Evergreen Avenue Suite 201 Sea Ʃle BC 98101\n\n-ID-00103 Marcus Benne Ʃ 1102 North Evergreen Avenue Suite 202 Melbourne WA 98102\n\n+ID-00102 Alicia Patel 1101 North Evergreen Avenue Suite 201 Seattle BC 98101\n\n+ID-00103 Marcus Bennett 1102 North Evergreen Avenue Suite 202 Melbourne WA 98102\n\n ID-00104 Priya Olsen 1103 North Evergreen Avenue Suite 203 Toronto BC 98103\n\n-ID-00105 Daniel Chen 1104 North Evergreen Avenue Suite 204 Kathmandu WA 98104\n+ID-00105 Daniel Chen 1104 North Evergreen Avenue Suite 204 Kathmandu WA 98104\n\n+ID-00106 Mei Tanaka 1105 North Evergreen Avenue Suite 205 Dublin BC 98105\n\n+ID-00107 Sofia Kim 1106 North Evergreen Avenue Suite 206 Austin WA 98106\n\n+ID-00108 Owen Morrison 1107 North Evergreen Avenue Suite 207 Berlin BC 98107",
+ "visual_scores": [
+ 0.7469,
+ 0.7619,
+ 0.7469
+ ],
+ "visual_avg": 0.7519,
+ "diff_images": [
+ {
+ "page": 1,
+ "minipdf_img": "XlsxIssue82_WideTable_p1_minipdf.png",
+ "reference_img": "XlsxIssue82_WideTable_p1_reference.png",
+ "auxiliary_img": "XlsxIssue82_WideTable_p1_libreoffice.png",
+ "heatmap_img": "XlsxIssue82_WideTable_p1_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1650,
+ 1241
+ ],
+ "difference_bbox_px": [
+ 52,
+ 73,
+ 1522,
+ 1168
+ ],
+ "changed_pixels": 466771,
+ "changed_fraction": 0.227954,
+ "mean_abs_rgb": 27.6719,
+ "rmse_rgb": 70.3825,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "XlsxIssue82_WideTable_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ },
+ {
+ "page": 2,
+ "minipdf_img": "XlsxIssue82_WideTable_p2_minipdf.png",
+ "reference_img": "XlsxIssue82_WideTable_p2_reference.png",
+ "auxiliary_img": "XlsxIssue82_WideTable_p2_libreoffice.png",
+ "heatmap_img": "XlsxIssue82_WideTable_p2_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1650,
+ 1241
+ ],
+ "difference_bbox_px": [
+ 52,
+ 73,
+ 1522,
+ 1168
+ ],
+ "changed_pixels": 459731,
+ "changed_fraction": 0.224516,
+ "mean_abs_rgb": 27.6212,
+ "rmse_rgb": 70.4357,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "XlsxIssue82_WideTable_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ },
+ {
+ "page": 3,
+ "minipdf_img": "XlsxIssue82_WideTable_p3_minipdf.png",
+ "reference_img": "XlsxIssue82_WideTable_p3_reference.png",
+ "auxiliary_img": "XlsxIssue82_WideTable_p3_libreoffice.png",
+ "heatmap_img": "XlsxIssue82_WideTable_p3_heatmap.png",
+ "heatmap_metrics": {
+ "size_px": [
+ 1650,
+ 1241
+ ],
+ "difference_bbox_px": [
+ 52,
+ 73,
+ 1522,
+ 1168
+ ],
+ "changed_pixels": 467887,
+ "changed_fraction": 0.228499,
+ "mean_abs_rgb": 27.692,
+ "rmse_rgb": 70.4004,
+ "threshold": 12,
+ "gain": 5.0
+ },
+ "composite_img": "XlsxIssue82_WideTable_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png"
+ }
+ ],
+ "overall_score": 0.8649
}
]
\ No newline at end of file
diff --git a/artifacts/java-benchmark/issue/xlsx/report/comparison_report.md b/artifacts/java-benchmark/issue/xlsx/report/comparison_report.md
index b5ff1c5a..ced7a70c 100644
--- a/artifacts/java-benchmark/issue/xlsx/report/comparison_report.md
+++ b/artifacts/java-benchmark/issue/xlsx/report/comparison_report.md
@@ -1,19 +1,185 @@
# java MiniPdf vs Microsoft 365 Excel Reference PDF Comparison Report
-Generated: 2026-09-06T20:42:47.973286
+Generated: 2026-09-07T11:54:12.982984
## Summary
| # | Test Case | Valid | Text Sim | Visual Avg | Pages (M/R) | Overall |
|---|-----------|-------|----------|------------|-------------|--------|
-| 1 | 🟢 XlsxIssue77_MergedCellAlignment | ✅ | 1.0 | 0.891 | 2/2 | **0.9564** |
+| 1 | 🟡 Academic Achievement Summary Table | ✅ | 0.9068 | 0.6289 | 4/2 | **0.7143** |
+| 2 | 🟡 AcademicAchievement_temp | ✅ | 0.9068 | 0.6289 | 4/2 | **0.7143** |
+| 3 | 🟢 Business expense budget1 | ✅ | 0.9712 | 0.8317 | 4/4 | **0.9212** |
+| 4 | 🟡 Business expenses budget2 | ✅ | 0.8422 | 0.8064 | 4/4 | **0.8594** |
+| 5 | 🟡 Business plan checklist with SWOT analysis1 | ✅ | 0.8583 | 0.582 | 1/1 | **0.7761** |
+| 6 | 🟡 Event budget1 | ✅ | 0.9859 | 0.741 | 7/5 | **0.7908** |
+| 7 | 🟡 Expense report basic1 | ✅ | 0.9556 | 0.5218 | 1/1 | **0.791** |
+| 8 | 🟡 Grocery list1 | ✅ | 0.8403 | 0.6961 | 1/1 | **0.8146** |
+| 9 | 🟢 Issue202609031340 | ✅ | 0.9022 | 0.9262 | 4/4 | **0.9314** |
+| 10 | 🔴 payroll-calculator_f | ✅ | 0.8386 | 0.4835 | 36/29 | **0.6288** |
+| 11 | 🟡 PO_anonymized | ✅ | 0.9385 | 0.743 | 69/9 | **0.7726** |
+| 12 | 🟡 Simple invoice1 | ✅ | 0.7573 | 0.6953 | 1/1 | **0.781** |
+| 13 | 🟡 Small business cash flow forecast1 | ✅ | 0.9004 | 0.6894 | 3/5 | **0.7359** |
+| 14 | 🟢 Wedding_timeline_planner1_copy | ✅ | 0.9295 | 0.8964 | 8/8 | **0.9304** |
+| 15 | 🔴 Weekly schedule planner1 | ✅ | 0.6289 | 0.3729 | 2/1 | **0.5007** |
+| 16 | 🟡 XlsxIssue75 | ✅ | 0.9694 | 0.9592 | 152/144 | **0.8714** |
+| 17 | 🟢 XlsxIssue77_MergedCellAlignment | ✅ | 1.0 | 0.891 | 2/2 | **0.9564** |
+| 18 | 🟢 XlsxIssue77_Template1 | ✅ | 0.9905 | 0.9007 | 6/6 | **0.9565** |
+| 19 | 🟢 XlsxIssue77_Template2_Workaround | ✅ | 0.9905 | 0.9048 | 6/6 | **0.9581** |
+| 20 | 🟡 XlsxIssue81_LayoutOptions | ✅ | 0.9188 | 0.807 | 16/16 | **0.8903** |
+| 21 | 🔴 XlsxIssue82_5mb | ✅ | 0.6052 | 0.8405 | 383/766 | **0.6783** |
+| 22 | 🟡 XlsxIssue82_SampleTestData5mb | ✅ | 0.6595 | 0.8828 | 466/1668 | **0.7169** |
+| 23 | 🟡 XlsxIssue82_WideTable | ✅ | 0.9103 | 0.7519 | 13/13 | **0.8649** |
-**Average Overall Score: 0.9564**
+**Average Overall Score: 0.8068**
## Labeled Side-by-Side Comparison
| Case | Comparison |
+
+ Academic Achievement Summary Table format: xlsx | case: Academic Achievement Summary Table | scope: java-issue-xlsx Page 1 |
+  |
+
+
+ Academic Achievement Summary Table format: xlsx | case: Academic Achievement Summary Table | scope: java-issue-xlsx Page 2 |
+  |
+
+
+ AcademicAchievement_temp format: xlsx | case: AcademicAchievement_temp | scope: java-issue-xlsx Page 1 |
+  |
+
+
+ AcademicAchievement_temp format: xlsx | case: AcademicAchievement_temp | scope: java-issue-xlsx Page 2 |
+  |
+
+
+ Business expense budget1 format: xlsx | case: Business expense budget1 | scope: java-issue-xlsx Page 1 |
+  |
+
+
+ Business expense budget1 format: xlsx | case: Business expense budget1 | scope: java-issue-xlsx Page 2 |
+  |
+
+
+ Business expense budget1 format: xlsx | case: Business expense budget1 | scope: java-issue-xlsx Page 3 |
+  |
+
+
+ Business expenses budget2 format: xlsx | case: Business expenses budget2 | scope: java-issue-xlsx Page 1 |
+  |
+
+
+ Business expenses budget2 format: xlsx | case: Business expenses budget2 | scope: java-issue-xlsx Page 2 |
+  |
+
+
+ Business expenses budget2 format: xlsx | case: Business expenses budget2 | scope: java-issue-xlsx Page 3 |
+  |
+
+
+ Business plan checklist with SWOT analysis1 format: xlsx | case: Business plan checklist with SWOT analysis1 | scope: java-issue-xlsx Page 1 |
+  |
+
+
+ Event budget1 format: xlsx | case: Event budget1 | scope: java-issue-xlsx Page 1 |
+  |
+
+
+ Event budget1 format: xlsx | case: Event budget1 | scope: java-issue-xlsx Page 2 |
+  |
+
+
+ Event budget1 format: xlsx | case: Event budget1 | scope: java-issue-xlsx Page 3 |
+  |
+
+
+ Expense report basic1 format: xlsx | case: Expense report basic1 | scope: java-issue-xlsx Page 1 |
+  |
+
+
+ Grocery list1 format: xlsx | case: Grocery list1 | scope: java-issue-xlsx Page 1 |
+  |
+
+
+ Issue202609031340 format: xlsx | case: Issue202609031340 | scope: java-issue-xlsx Page 1 |
+  |
+
+
+ Issue202609031340 format: xlsx | case: Issue202609031340 | scope: java-issue-xlsx Page 2 |
+  |
+
+
+ Issue202609031340 format: xlsx | case: Issue202609031340 | scope: java-issue-xlsx Page 3 |
+  |
+
+
+ payroll-calculator_f format: xlsx | case: payroll-calculator_f | scope: java-issue-xlsx Page 1 |
+  |
+
+
+ payroll-calculator_f format: xlsx | case: payroll-calculator_f | scope: java-issue-xlsx Page 2 |
+  |
+
+
+ payroll-calculator_f format: xlsx | case: payroll-calculator_f | scope: java-issue-xlsx Page 3 |
+  |
+
+
+ PO_anonymized format: xlsx | case: PO_anonymized | scope: java-issue-xlsx Page 1 |
+  |
+
+
+ PO_anonymized format: xlsx | case: PO_anonymized | scope: java-issue-xlsx Page 2 |
+  |
+
+
+ PO_anonymized format: xlsx | case: PO_anonymized | scope: java-issue-xlsx Page 3 |
+  |
+
+
+ Simple invoice1 format: xlsx | case: Simple invoice1 | scope: java-issue-xlsx Page 1 |
+  |
+
+
+ Small business cash flow forecast1 format: xlsx | case: Small business cash flow forecast1 | scope: java-issue-xlsx Page 1 |
+  |
+
+
+ Small business cash flow forecast1 format: xlsx | case: Small business cash flow forecast1 | scope: java-issue-xlsx Page 2 |
+  |
+
+
+ Small business cash flow forecast1 format: xlsx | case: Small business cash flow forecast1 | scope: java-issue-xlsx Page 3 |
+  |
+
+
+ Wedding_timeline_planner1_copy format: xlsx | case: Wedding_timeline_planner1_copy | scope: java-issue-xlsx Page 1 |
+  |
+
+
+ Wedding_timeline_planner1_copy format: xlsx | case: Wedding_timeline_planner1_copy | scope: java-issue-xlsx Page 2 |
+  |
+
+
+ Wedding_timeline_planner1_copy format: xlsx | case: Wedding_timeline_planner1_copy | scope: java-issue-xlsx Page 3 |
+  |
+
+
+ Weekly schedule planner1 format: xlsx | case: Weekly schedule planner1 | scope: java-issue-xlsx Page 1 |
+  |
+
+
+ XlsxIssue75 format: xlsx | case: XlsxIssue75 | scope: java-issue-xlsx Page 1 |
+  |
+
+
+ XlsxIssue75 format: xlsx | case: XlsxIssue75 | scope: java-issue-xlsx Page 2 |
+  |
+
+
+ XlsxIssue75 format: xlsx | case: XlsxIssue75 | scope: java-issue-xlsx Page 3 |
+  |
+
XlsxIssue77_MergedCellAlignment format: xlsx | case: XlsxIssue77_MergedCellAlignment | scope: java-issue-xlsx Page 1 |
 |
@@ -22,6 +188,78 @@ Generated: 2026-09-06T20:42:47.973286
XlsxIssue77_MergedCellAlignment format: xlsx | case: XlsxIssue77_MergedCellAlignment | scope: java-issue-xlsx Page 2 |
 |
+
+ XlsxIssue77_Template1 format: xlsx | case: XlsxIssue77_Template1 | scope: java-issue-xlsx Page 1 |
+  |
+
+
+ XlsxIssue77_Template1 format: xlsx | case: XlsxIssue77_Template1 | scope: java-issue-xlsx Page 2 |
+  |
+
+
+ XlsxIssue77_Template1 format: xlsx | case: XlsxIssue77_Template1 | scope: java-issue-xlsx Page 3 |
+  |
+
+
+ XlsxIssue77_Template2_Workaround format: xlsx | case: XlsxIssue77_Template2_Workaround | scope: java-issue-xlsx Page 1 |
+  |
+
+
+ XlsxIssue77_Template2_Workaround format: xlsx | case: XlsxIssue77_Template2_Workaround | scope: java-issue-xlsx Page 2 |
+  |
+
+
+ XlsxIssue77_Template2_Workaround format: xlsx | case: XlsxIssue77_Template2_Workaround | scope: java-issue-xlsx Page 3 |
+  |
+
+
+ XlsxIssue81_LayoutOptions format: xlsx | case: XlsxIssue81_LayoutOptions | scope: java-issue-xlsx Page 1 |
+  |
+
+
+ XlsxIssue81_LayoutOptions format: xlsx | case: XlsxIssue81_LayoutOptions | scope: java-issue-xlsx Page 2 |
+  |
+
+
+ XlsxIssue81_LayoutOptions format: xlsx | case: XlsxIssue81_LayoutOptions | scope: java-issue-xlsx Page 3 |
+  |
+
+
+ XlsxIssue82_5mb format: xlsx | case: XlsxIssue82_5mb | scope: java-issue-xlsx Page 1 |
+  |
+
+
+ XlsxIssue82_5mb format: xlsx | case: XlsxIssue82_5mb | scope: java-issue-xlsx Page 2 |
+  |
+
+
+ XlsxIssue82_5mb format: xlsx | case: XlsxIssue82_5mb | scope: java-issue-xlsx Page 3 |
+  |
+
+
+ XlsxIssue82_SampleTestData5mb format: xlsx | case: XlsxIssue82_SampleTestData5mb | scope: java-issue-xlsx Page 1 |
+  |
+
+
+ XlsxIssue82_SampleTestData5mb format: xlsx | case: XlsxIssue82_SampleTestData5mb | scope: java-issue-xlsx Page 2 |
+  |
+
+
+ XlsxIssue82_SampleTestData5mb format: xlsx | case: XlsxIssue82_SampleTestData5mb | scope: java-issue-xlsx Page 3 |
+  |
+
+
+ XlsxIssue82_WideTable format: xlsx | case: XlsxIssue82_WideTable | scope: java-issue-xlsx Page 1 |
+  |
+
+
+ XlsxIssue82_WideTable format: xlsx | case: XlsxIssue82_WideTable | scope: java-issue-xlsx Page 2 |
+  |
+
+
+ XlsxIssue82_WideTable format: xlsx | case: XlsxIssue82_WideTable | scope: java-issue-xlsx Page 3 |
+  |
+
## Difference Heatmaps
@@ -30,6 +268,186 @@ Blue areas are below the configured difference threshold; red areas have stronge
| Case | Heatmap | Metrics |
+
+ Academic Achievement Summary Table Page 1 |
+  |
+ changed: 177377 px (8.15%) bbox: [46, 24, 1717, 1143] mean abs RGB: 12.1082 RMSE RGB: 47.6028 threshold: 12, gain: 5.0 |
+
+
+ Academic Achievement Summary Table Page 2 |
+  |
+ changed: 256408 px (11.78%) bbox: [46, 11, 1717, 1170] mean abs RGB: 16.7922 RMSE RGB: 55.8028 threshold: 12, gain: 5.0 |
+
+
+ AcademicAchievement_temp Page 1 |
+  |
+ changed: 177377 px (8.15%) bbox: [46, 24, 1717, 1143] mean abs RGB: 12.1082 RMSE RGB: 47.6028 threshold: 12, gain: 5.0 |
+
+
+ AcademicAchievement_temp Page 2 |
+  |
+ changed: 256408 px (11.78%) bbox: [46, 11, 1717, 1170] mean abs RGB: 16.7922 RMSE RGB: 55.8028 threshold: 12, gain: 5.0 |
+
+
+ Business expense budget1 Page 1 |
+  |
+ changed: 439037 px (20.17%) bbox: [147, 176, 1016, 1596] mean abs RGB: 25.4757 RMSE RGB: 68.6251 threshold: 12, gain: 5.0 |
+
+
+ Business expense budget1 Page 2 |
+  |
+ changed: 178210 px (8.19%) bbox: [112, 178, 1016, 1225] mean abs RGB: 10.7438 RMSE RGB: 41.8304 threshold: 12, gain: 5.0 |
+
+
+ Business expense budget1 Page 3 |
+  |
+ changed: 217907 px (10.01%) bbox: [112, 297, 450, 1596] mean abs RGB: 12.8481 RMSE RGB: 48.2032 threshold: 12, gain: 5.0 |
+
+
+ Business expenses budget2 Page 1 |
+  |
+ changed: 470506 px (21.62%) bbox: [229, 75, 1522, 1124] mean abs RGB: 11.7846 RMSE RGB: 35.2513 threshold: 12, gain: 5.0 |
+
+
+ Business expenses budget2 Page 2 |
+  |
+ changed: 471683 px (21.67%) bbox: [204, 75, 1548, 1163] mean abs RGB: 11.0576 RMSE RGB: 32.6913 threshold: 12, gain: 5.0 |
+
+
+ Business expenses budget2 Page 3 |
+  |
+ changed: 435364 px (20.00%) bbox: [153, 75, 1598, 1163] mean abs RGB: 10.0189 RMSE RGB: 29.5823 threshold: 12, gain: 5.0 |
+
+
+ Business plan checklist with SWOT analysis1 Page 1 |
+  |
+ changed: 955797 px (43.91%) bbox: [88, 62, 1214, 1448] mean abs RGB: 33.8616 RMSE RGB: 70.0944 threshold: 12, gain: 5.0 |
+
+
+ Event budget1 Page 1 |
+  |
+ changed: 93832 px (4.31%) bbox: [73, 153, 1165, 770] mean abs RGB: 6.6463 RMSE RGB: 36.9543 threshold: 12, gain: 5.0 |
+
+
+ Event budget1 Page 2 |
+  |
+ changed: 1056182 px (48.52%) bbox: [61, 143, 1211, 1625] mean abs RGB: 22.4906 RMSE RGB: 46.7637 threshold: 12, gain: 5.0 |
+
+
+ Event budget1 Page 3 |
+  |
+ changed: 481866 px (22.14%) bbox: [62, 114, 1211, 568] mean abs RGB: 4.318 RMSE RGB: 14.6122 threshold: 12, gain: 5.0 |
+
+
+ Expense report basic1 Page 1 |
+  |
+ changed: 458410 px (21.06%) bbox: [63, 59, 1690, 856] mean abs RGB: 6.7153 RMSE RGB: 23.9935 threshold: 12, gain: 5.0 |
+
+
+ Grocery list1 Page 1 |
+  |
+ changed: 495398 px (22.76%) bbox: [43, 77, 1229, 960] mean abs RGB: 17.0865 RMSE RGB: 50.1037 threshold: 12, gain: 5.0 |
+
+
+ Issue202609031340 Page 1 |
+  |
+ changed: 443271 px (20.36%) bbox: [28, 55, 1212, 1697] mean abs RGB: 27.4178 RMSE RGB: 71.7062 threshold: 12, gain: 5.0 |
+
+
+ Issue202609031340 Page 2 |
+  |
+ changed: 59016 px (2.71%) bbox: [28, 738, 1212, 1014] mean abs RGB: 3.6137 RMSE RGB: 25.2653 threshold: 12, gain: 5.0 |
+
+
+ Issue202609031340 Page 3 |
+  |
+ changed: 258293 px (11.87%) bbox: [34, 29, 1196, 1725] mean abs RGB: 16.8844 RMSE RGB: 56.4854 threshold: 12, gain: 5.0 |
+
+
+ payroll-calculator_f Page 1 |
+  |
+ changed: 532215 px (24.45%) bbox: [23, 29, 1754, 1160] mean abs RGB: 17.5896 RMSE RGB: 42.8265 threshold: 12, gain: 5.0 |
+
+
+ payroll-calculator_f Page 2 |
+  |
+ changed: 394684 px (18.13%) bbox: [23, 29, 1682, 1160] mean abs RGB: 19.5001 RMSE RGB: 53.1636 threshold: 12, gain: 5.0 |
+
+
+ payroll-calculator_f Page 3 |
+  |
+ changed: 488426 px (22.44%) bbox: [23, 29, 1504, 1160] mean abs RGB: 21.1973 RMSE RGB: 55.8296 threshold: 12, gain: 5.0 |
+
+
+ PO_anonymized Page 1 |
+  |
+ changed: 514717 px (23.65%) bbox: [58, 45, 1182, 1713] mean abs RGB: 29.8818 RMSE RGB: 76.4864 threshold: 12, gain: 5.0 |
+
+
+ PO_anonymized Page 2 |
+  |
+ changed: 651275 px (29.92%) bbox: [59, 45, 1181, 1713] mean abs RGB: 34.8838 RMSE RGB: 80.9979 threshold: 12, gain: 5.0 |
+
+
+ PO_anonymized Page 3 |
+  |
+ changed: 122180 px (5.61%) bbox: [61, 45, 1181, 1713] mean abs RGB: 7.7594 RMSE RGB: 40.8676 threshold: 12, gain: 5.0 |
+
+
+ Simple invoice1 Page 1 |
+  |
+ changed: 344628 px (15.83%) bbox: [36, 114, 1237, 1451] mean abs RGB: 18.2359 RMSE RGB: 60.1872 threshold: 12, gain: 5.0 |
+
+
+ Small business cash flow forecast1 Page 1 |
+  |
+ changed: 815067 px (37.44%) bbox: [66, 75, 1173, 1680] mean abs RGB: 17.9447 RMSE RGB: 44.8225 threshold: 12, gain: 5.0 |
+
+
+ Small business cash flow forecast1 Page 2 |
+  |
+ changed: 496069 px (32.21%) bbox: [87, 53, 1157, 1071] mean abs RGB: 42.0195 RMSE RGB: 87.6112 threshold: 12, gain: 5.0 |
+
+
+ Small business cash flow forecast1 Page 3 |
+  |
+ changed: 2092 px (0.10%) bbox: [835, 112, 1532, 116] mean abs RGB: 0.0692 RMSE RGB: 2.9896 threshold: 12, gain: 5.0 |
+
+
+ Wedding_timeline_planner1_copy Page 1 |
+  |
+ changed: 298306 px (13.70%) bbox: [102, 183, 1158, 1550] mean abs RGB: 14.256 RMSE RGB: 46.0558 threshold: 12, gain: 5.0 |
+
+
+ Wedding_timeline_planner1_copy Page 2 |
+  |
+ changed: 318572 px (14.64%) bbox: [102, 183, 1158, 1542] mean abs RGB: 14.539 RMSE RGB: 46.27 threshold: 12, gain: 5.0 |
+
+
+ Wedding_timeline_planner1_copy Page 3 |
+  |
+ changed: 291508 px (13.39%) bbox: [102, 183, 1158, 1516] mean abs RGB: 13.5658 RMSE RGB: 44.6731 threshold: 12, gain: 5.0 |
+
+
+ Weekly schedule planner1 Page 1 |
+  |
+ changed: 686598 px (31.54%) bbox: [121, 96, 1571, 1144] mean abs RGB: 25.2436 RMSE RGB: 60.9064 threshold: 12, gain: 5.0 |
+
+
+ XlsxIssue75 Page 1 |
+  |
+ changed: 157587 px (7.24%) bbox: [109, 114, 1111, 1649] mean abs RGB: 8.9397 RMSE RGB: 40.5315 threshold: 12, gain: 5.0 |
+
+
+ XlsxIssue75 Page 2 |
+  |
+ changed: 107345 px (4.93%) bbox: [114, 120, 1076, 1649] mean abs RGB: 8.0094 RMSE RGB: 40.3943 threshold: 12, gain: 5.0 |
+
+
+ XlsxIssue75 Page 3 |
+  |
+ changed: 102955 px (4.73%) bbox: [114, 120, 1076, 1649] mean abs RGB: 7.6331 RMSE RGB: 39.3545 threshold: 12, gain: 5.0 |
+
XlsxIssue77_MergedCellAlignment Page 1 |
 |
@@ -40,6 +458,96 @@ Blue areas are below the configured difference threshold; red areas have stronge
 |
changed: 443109 px (20.36%) bbox: [35, 156, 1163, 1612] mean abs RGB: 30.2766 RMSE RGB: 78.5097 threshold: 12, gain: 5.0 |
+
+ XlsxIssue77_Template1 Page 1 |
+  |
+ changed: 379981 px (17.46%) bbox: [82, 166, 1157, 1565] mean abs RGB: 20.849 RMSE RGB: 62.5945 threshold: 12, gain: 5.0 |
+
+
+ XlsxIssue77_Template1 Page 2 |
+  |
+ changed: 380038 px (17.46%) bbox: [82, 166, 1157, 1565] mean abs RGB: 20.7739 RMSE RGB: 62.443 threshold: 12, gain: 5.0 |
+
+
+ XlsxIssue77_Template1 Page 3 |
+  |
+ changed: 380167 px (17.47%) bbox: [82, 166, 1157, 1565] mean abs RGB: 20.7364 RMSE RGB: 62.3609 threshold: 12, gain: 5.0 |
+
+
+ XlsxIssue77_Template2_Workaround Page 1 |
+  |
+ changed: 375573 px (17.25%) bbox: [78, 166, 1153, 1569] mean abs RGB: 20.7999 RMSE RGB: 62.6342 threshold: 12, gain: 5.0 |
+
+
+ XlsxIssue77_Template2_Workaround Page 2 |
+  |
+ changed: 374803 px (17.22%) bbox: [78, 166, 1153, 1569] mean abs RGB: 20.6963 RMSE RGB: 62.4252 threshold: 12, gain: 5.0 |
+
+
+ XlsxIssue77_Template2_Workaround Page 3 |
+  |
+ changed: 374804 px (17.22%) bbox: [78, 166, 1153, 1569] mean abs RGB: 20.6898 RMSE RGB: 62.408 threshold: 12, gain: 5.0 |
+
+
+ XlsxIssue81_LayoutOptions Page 1 |
+  |
+ changed: 511187 px (24.96%) bbox: [36, 74, 1068, 1570] mean abs RGB: 32.0216 RMSE RGB: 77.0589 threshold: 12, gain: 5.0 |
+
+
+ XlsxIssue81_LayoutOptions Page 2 |
+  |
+ changed: 512225 px (25.02%) bbox: [36, 74, 1068, 1570] mean abs RGB: 32.1024 RMSE RGB: 77.1614 threshold: 12, gain: 5.0 |
+
+
+ XlsxIssue81_LayoutOptions Page 3 |
+  |
+ changed: 511075 px (24.96%) bbox: [36, 74, 1068, 1570] mean abs RGB: 31.9801 RMSE RGB: 77.0071 threshold: 12, gain: 5.0 |
+
+
+ XlsxIssue82_5mb Page 1 |
+  |
+ changed: 434905 px (21.24%) bbox: [106, 122, 1100, 1523] mean abs RGB: 31.9401 RMSE RGB: 78.688 threshold: 12, gain: 5.0 |
+
+
+ XlsxIssue82_5mb Page 2 |
+  |
+ changed: 430451 px (21.02%) bbox: [106, 122, 1100, 1522] mean abs RGB: 31.5113 RMSE RGB: 78.0558 threshold: 12, gain: 5.0 |
+
+
+ XlsxIssue82_5mb Page 3 |
+  |
+ changed: 433772 px (21.18%) bbox: [106, 122, 1100, 1522] mean abs RGB: 31.8166 RMSE RGB: 78.4756 threshold: 12, gain: 5.0 |
+
+
+ XlsxIssue82_SampleTestData5mb Page 1 |
+  |
+ changed: 356955 px (16.40%) bbox: [114, 157, 1078, 1599] mean abs RGB: 26.6364 RMSE RGB: 73.6748 threshold: 12, gain: 5.0 |
+
+
+ XlsxIssue82_SampleTestData5mb Page 2 |
+  |
+ changed: 365254 px (16.78%) bbox: [114, 157, 1078, 1600] mean abs RGB: 27.2049 RMSE RGB: 74.4386 threshold: 12, gain: 5.0 |
+
+
+ XlsxIssue82_SampleTestData5mb Page 3 |
+  |
+ changed: 369955 px (17.00%) bbox: [114, 157, 1078, 1599] mean abs RGB: 27.6909 RMSE RGB: 75.189 threshold: 12, gain: 5.0 |
+
+
+ XlsxIssue82_WideTable Page 1 |
+  |
+ changed: 466771 px (22.80%) bbox: [52, 73, 1522, 1168] mean abs RGB: 27.6719 RMSE RGB: 70.3825 threshold: 12, gain: 5.0 |
+
+
+ XlsxIssue82_WideTable Page 2 |
+  |
+ changed: 459731 px (22.45%) bbox: [52, 73, 1522, 1168] mean abs RGB: 27.6212 RMSE RGB: 70.4357 threshold: 12, gain: 5.0 |
+
+
+ XlsxIssue82_WideTable Page 3 |
+  |
+ changed: 467887 px (22.85%) bbox: [52, 73, 1522, 1168] mean abs RGB: 27.692 RMSE RGB: 70.4004 threshold: 12, gain: 5.0 |
+
## Visual Comparison
@@ -49,35 +557,2997 @@ Scores compare java MiniPdf against Microsoft 365 Excel Reference. LibreOffice i
| java MiniPdf | Microsoft 365 Excel Reference | LibreOffice |
- XlsxIssue77_MergedCellAlignment format: xlsx | case: XlsxIssue77_MergedCellAlignment | scope: java-issue-xlsx |
- XlsxIssue77_MergedCellAlignment ⬤ 95.6% |
+ Academic Achievement Summary Table format: xlsx | case: Academic Achievement Summary Table | scope: java-issue-xlsx |
+ Academic Achievement Summary Table ⬤ 71.4% |
-  |
-  |
-  |
+  |
+  |
+  |
-  |
-  |
-  |
+  |
+  |
+  |
-
-
-## Detailed Results
-
-### XlsxIssue77_MergedCellAlignment
-
-- **Case Metadata:** format: xlsx | case: XlsxIssue77_MergedCellAlignment | scope: java-issue-xlsx
-- **Source:** tests/Issue_Files/xlsx/XlsxIssue77_MergedCellAlignment.xlsx
-- **Text Similarity:** 1.0
-- **Visual Average:** 0.891
-- **Overall Score:** 0.9564
-- **Pages:** MiniPdf=2, Reference=2
-- **File Size:** MiniPdf=71248 bytes, Reference=172385 bytes
-
-Text content: ✅ Identical
-
-## Improvement Suggestions
+
+  |
+ missing |
+ missing |
+
+
+ AcademicAchievement_temp format: xlsx | case: AcademicAchievement_temp | scope: java-issue-xlsx |
+ AcademicAchievement_temp ⬤ 71.4% |
+
+
+  |
+  |
+  |
+
+
+  |
+  |
+  |
+
+
+  |
+ missing |
+ missing |
+
+
+ Business expense budget1 format: xlsx | case: Business expense budget1 | scope: java-issue-xlsx |
+ Business expense budget1 ⬤ 92.1% |
+
+
+  |
+  |
+  |
+
+
+  |
+  |
+  |
+
+
+  |
+  |
+  |
+
+
+ Business expenses budget2 format: xlsx | case: Business expenses budget2 | scope: java-issue-xlsx |
+ Business expenses budget2 ⬤ 85.9% |
+
+
+  |
+  |
+  |
+
+
+  |
+  |
+  |
+
+
+  |
+  |
+  |
+
+
+ Business plan checklist with SWOT analysis1 format: xlsx | case: Business plan checklist with SWOT analysis1 | scope: java-issue-xlsx |
+ Business plan checklist with SWOT analysis1 ⬤ 77.6% |
+
+
+  |
+  |
+  |
+
+
+ Event budget1 format: xlsx | case: Event budget1 | scope: java-issue-xlsx |
+ Event budget1 ⬤ 79.1% |
+
+
+  |
+  |
+  |
+
+
+  |
+  |
+  |
+
+
+  |
+  |
+  |
+
+
+ Expense report basic1 format: xlsx | case: Expense report basic1 | scope: java-issue-xlsx |
+ Expense report basic1 ⬤ 79.1% |
+
+
+  |
+  |
+  |
+
+
+ Grocery list1 format: xlsx | case: Grocery list1 | scope: java-issue-xlsx |
+ Grocery list1 ⬤ 81.5% |
+
+
+  |
+  |
+  |
+
+
+ Issue202609031340 format: xlsx | case: Issue202609031340 | scope: java-issue-xlsx |
+ Issue202609031340 ⬤ 93.1% |
+
+
+  |
+  |
+  |
+
+
+  |
+  |
+  |
+
+
+  |
+  |
+  |
+
+
+ payroll-calculator_f format: xlsx | case: payroll-calculator_f | scope: java-issue-xlsx |
+ payroll-calculator_f ⬤ 62.9% |
+
+
+  |
+  |
+  |
+
+
+  |
+  |
+  |
+
+
+  |
+  |
+  |
+
+
+ PO_anonymized format: xlsx | case: PO_anonymized | scope: java-issue-xlsx |
+ PO_anonymized ⬤ 77.3% |
+
+
+  |
+  |
+  |
+
+
+  |
+  |
+  |
+
+
+  |
+  |
+  |
+
+
+ Simple invoice1 format: xlsx | case: Simple invoice1 | scope: java-issue-xlsx |
+ Simple invoice1 ⬤ 78.1% |
+
+
+  |
+  |
+  |
+
+
+ Small business cash flow forecast1 format: xlsx | case: Small business cash flow forecast1 | scope: java-issue-xlsx |
+ Small business cash flow forecast1 ⬤ 73.6% |
+
+
+  |
+  |
+  |
+
+
+  |
+  |
+  |
+
+
+  |
+  |
+  |
+
+
+ Wedding_timeline_planner1_copy format: xlsx | case: Wedding_timeline_planner1_copy | scope: java-issue-xlsx |
+ Wedding_timeline_planner1_copy ⬤ 93.0% |
+
+
+  |
+  |
+  |
+
+
+  |
+  |
+  |
+
+
+  |
+  |
+  |
+
+
+ Weekly schedule planner1 format: xlsx | case: Weekly schedule planner1 | scope: java-issue-xlsx |
+ Weekly schedule planner1 ⬤ 50.1% |
+
+
+  |
+  |
+  |
+
+
+  |
+ missing |
+ missing |
+
+
+ XlsxIssue75 format: xlsx | case: XlsxIssue75 | scope: java-issue-xlsx |
+ XlsxIssue75 ⬤ 87.1% |
+
+
+  |
+  |
+  |
+
+
+  |
+  |
+  |
+
+
+  |
+  |
+  |
+
+
+ XlsxIssue77_MergedCellAlignment format: xlsx | case: XlsxIssue77_MergedCellAlignment | scope: java-issue-xlsx |
+ XlsxIssue77_MergedCellAlignment ⬤ 95.6% |
+
+
+  |
+  |
+  |
+
+
+  |
+  |
+  |
+
+
+ XlsxIssue77_Template1 format: xlsx | case: XlsxIssue77_Template1 | scope: java-issue-xlsx |
+ XlsxIssue77_Template1 ⬤ 95.7% |
+
+
+  |
+  |
+  |
+
+
+  |
+  |
+  |
+
+
+  |
+  |
+  |
+
+
+ XlsxIssue77_Template2_Workaround format: xlsx | case: XlsxIssue77_Template2_Workaround | scope: java-issue-xlsx |
+ XlsxIssue77_Template2_Workaround ⬤ 95.8% |
+
+
+  |
+  |
+  |
+
+
+  |
+  |
+  |
+
+
+  |
+  |
+  |
+
+
+ XlsxIssue81_LayoutOptions format: xlsx | case: XlsxIssue81_LayoutOptions | scope: java-issue-xlsx |
+ XlsxIssue81_LayoutOptions ⬤ 89.0% |
+
+
+  |
+  |
+  |
+
+
+  |
+  |
+  |
+
+
+  |
+  |
+  |
+
+
+ XlsxIssue82_5mb format: xlsx | case: XlsxIssue82_5mb | scope: java-issue-xlsx |
+ XlsxIssue82_5mb ⬤ 67.8% |
+
+
+  |
+  |
+  |
+
+
+  |
+  |
+  |
+
+
+  |
+  |
+  |
+
+
+ XlsxIssue82_SampleTestData5mb format: xlsx | case: XlsxIssue82_SampleTestData5mb | scope: java-issue-xlsx |
+ XlsxIssue82_SampleTestData5mb ⬤ 71.7% |
+
+
+  |
+  |
+  |
+
+
+  |
+  |
+  |
+
+
+  |
+  |
+  |
+
+
+ XlsxIssue82_WideTable format: xlsx | case: XlsxIssue82_WideTable | scope: java-issue-xlsx |
+ XlsxIssue82_WideTable ⬤ 86.5% |
+
+
+  |
+  |
+  |
+
+
+  |
+  |
+  |
+
+
+  |
+  |
+  |
+
+
+
+## Detailed Results
+
+### Academic Achievement Summary Table
+
+- **Case Metadata:** format: xlsx | case: Academic Achievement Summary Table | scope: java-issue-xlsx
+- **Source:** tests/Issue_Files/xlsx/Academic Achievement Summary Table.xlsx
+- **Text Similarity:** 0.9068
+- **Visual Average:** 0.6289
+- **Overall Score:** 0.7143
+- **Pages:** MiniPdf=4, Reference=2
+- **File Size:** MiniPdf=54546 bytes, Reference=151877 bytes
+
+Text Diff
+
+```diff
+--- minipdf/Academic Achievement Summary Table.pdf
++++ reference/Academic Achievement Summary Table.pdf
+@@ -1,10 +1,10 @@
+ 附件3
+
+ 学术业绩汇总表
+
+-报考岗位: 报考岗位代码: 考⽣姓名:
+
+-博⼠论⽂题⽬: 博⼠论⽂研究⽅向:
+
+-公开发表的主要论⽂情况
+
+-⻆⾊ 转载刊物、转载字数及 是否为代表作
+
+-序号 题⽬ 刊物名称 核⼼期刊情况 刊号 发表时间
+
++报考岗位: 报考岗位代码: 考生姓名:
+
++博士论文题目: 博士论文研究方向:
+
++公开发表的主要论文情况
+
++角色 转载刊物、转载字数及 是否为代表作
+
++序号 题目 刊物名称 核心期刊情况 刊号 发表时间
+
+ (排名) 转载时间等 (指定1篇)
+
+ 1
+
+ 2
+
+@@ -20,29 +20,28 @@
+ 12
+
+ ---PAGE---
+
+ 公开出版的主要专(译)著、教材情况
+
+-⻆⾊ 全书⽂ 本⼈写 转载刊物、转载字数及
+
+-序号 题⽬ 出版社名称 出版号 出版时间 备注
+
++角色 全书文 本人写 转载刊物、转载字数及
+
++序号 题目 出版社名称 出版号 出版时间 备注
+
+ (排名) 字数 作量 转载时间等
+
+ 1
+
+ 2
+
+ 获批的决策咨询报告情况
+
+-序号 题⽬ 批⽰领导级别 获批时间 ⻆⾊(排名) 备注
+
++序号 题目 批示领导级别 获批时间 角色(排名) 备注
+
+ 1
+
+ 2
+
+ 3
+
+ 4
+
+ 承担的主要科研课题情况
+
+-项⽬
+
+-序号 课题名称 项⽬来源 课题编号 ⻆⾊(排名) 起⽌时间 成果鉴定(评价) 备注
+
++项目
+
++序号 课题名称 项目来源 课题编号 角色(排名) 起止时间 成果鉴定(评价) 备注
+
+ 级别
+
+ 1
+
+ 2
+
+ 3
+
+ 4
+
+-本⼈承诺以上情况属实,并有相应证明。如有不实之处,愿意承担相应责任。
+
+-报名⼈员签名:
+
+-⽇期: 年 ⽉ ⽇
+
+-填表说明:1.请将各类学术成果按等级、层次及⽔平⾃⾼到低顺序填写。不加⾏、减⾏,不加⻚、减⻚,本表采⽤A4正反⾯打印。
+
+-2.核⼼期刊是指北京⼤学图书馆“中⽂核⼼期刊”、南京⼤学“中⽂社会科学引⽂索引(CSSCI)来源期刊”(含扩展版、集刊)、中国科学技术信息研究所
+
+-“中国科技论⽂统计源期刊”和科学引⽂索引(SCI)、社会科学引⽂索引(SSCI)。其中,被SCI、SSCI收录的期刊要求进⼊所在学科领域Q1、Q2。
+
+----PAGE---
++本人承诺以上情况属实,并有相应证明。如有不实之处,愿意承担相应责任。
+
++报名人员签名:
+
++日期: 年 月 日
+
++填表说明:1.请将各类学术成果按等级、层次及水平自高到低顺序填写。不加行、减行,不加页、减页,本表采用A4正反面打印。
+
++2.核心期刊是指北京大学图书馆“中文核心期刊”、南京大学“中文社会科学引文索引(CSSCI)来源期刊”(含扩展版、集刊)、中国科学技术信息研究所
+
++“中国科技论文统计源期刊”和科学引文索引(SCI)、社会科学引文索引(SSCI)。其中,被SCI、SSCI收录的期刊要求进入所在学科领域Q1、Q2。
+```
+
+
+### AcademicAchievement_temp
+
+- **Case Metadata:** format: xlsx | case: AcademicAchievement_temp | scope: java-issue-xlsx
+- **Source:** tests/Issue_Files/xlsx/AcademicAchievement_temp.xlsx
+- **Text Similarity:** 0.9068
+- **Visual Average:** 0.6289
+- **Overall Score:** 0.7143
+- **Pages:** MiniPdf=4, Reference=2
+- **File Size:** MiniPdf=54546 bytes, Reference=151877 bytes
+
+Text Diff
+
+```diff
+--- minipdf/AcademicAchievement_temp.pdf
++++ reference/AcademicAchievement_temp.pdf
+@@ -1,10 +1,10 @@
+ 附件3
+
+ 学术业绩汇总表
+
+-报考岗位: 报考岗位代码: 考⽣姓名:
+
+-博⼠论⽂题⽬: 博⼠论⽂研究⽅向:
+
+-公开发表的主要论⽂情况
+
+-⻆⾊ 转载刊物、转载字数及 是否为代表作
+
+-序号 题⽬ 刊物名称 核⼼期刊情况 刊号 发表时间
+
++报考岗位: 报考岗位代码: 考生姓名:
+
++博士论文题目: 博士论文研究方向:
+
++公开发表的主要论文情况
+
++角色 转载刊物、转载字数及 是否为代表作
+
++序号 题目 刊物名称 核心期刊情况 刊号 发表时间
+
+ (排名) 转载时间等 (指定1篇)
+
+ 1
+
+ 2
+
+@@ -20,29 +20,28 @@
+ 12
+
+ ---PAGE---
+
+ 公开出版的主要专(译)著、教材情况
+
+-⻆⾊ 全书⽂ 本⼈写 转载刊物、转载字数及
+
+-序号 题⽬ 出版社名称 出版号 出版时间 备注
+
++角色 全书文 本人写 转载刊物、转载字数及
+
++序号 题目 出版社名称 出版号 出版时间 备注
+
+ (排名) 字数 作量 转载时间等
+
+ 1
+
+ 2
+
+ 获批的决策咨询报告情况
+
+-序号 题⽬ 批⽰领导级别 获批时间 ⻆⾊(排名) 备注
+
++序号 题目 批示领导级别 获批时间 角色(排名) 备注
+
+ 1
+
+ 2
+
+ 3
+
+ 4
+
+ 承担的主要科研课题情况
+
+-项⽬
+
+-序号 课题名称 项⽬来源 课题编号 ⻆⾊(排名) 起⽌时间 成果鉴定(评价) 备注
+
++项目
+
++序号 课题名称 项目来源 课题编号 角色(排名) 起止时间 成果鉴定(评价) 备注
+
+ 级别
+
+ 1
+
+ 2
+
+ 3
+
+ 4
+
+-本⼈承诺以上情况属实,并有相应证明。如有不实之处,愿意承担相应责任。
+
+-报名⼈员签名:
+
+-⽇期: 年 ⽉ ⽇
+
+-填表说明:1.请将各类学术成果按等级、层次及⽔平⾃⾼到低顺序填写。不加⾏、减⾏,不加⻚、减⻚,本表采⽤A4正反⾯打印。
+
+-2.核⼼期刊是指北京⼤学图书馆“中⽂核⼼期刊”、南京⼤学“中⽂社会科学引⽂索引(CSSCI)来源期刊”(含扩展版、集刊)、中国科学技术信息研究所
+
+-“中国科技论⽂统计源期刊”和科学引⽂索引(SCI)、社会科学引⽂索引(SSCI)。其中,被SCI、SSCI收录的期刊要求进⼊所在学科领域Q1、Q2。
+
+----PAGE---
++本人承诺以上情况属实,并有相应证明。如有不实之处,愿意承担相应责任。
+
++报名人员签名:
+
++日期: 年 月 日
+
++填表说明:1.请将各类学术成果按等级、层次及水平自高到低顺序填写。不加行、减行,不加页、减页,本表采用A4正反面打印。
+
++2.核心期刊是指北京大学图书馆“中文核心期刊”、南京大学“中文社会科学引文索引(CSSCI)来源期刊”(含扩展版、集刊)、中国科学技术信息研究所
+
++“中国科技论文统计源期刊”和科学引文索引(SCI)、社会科学引文索引(SSCI)。其中,被SCI、SSCI收录的期刊要求进入所在学科领域Q1、Q2。
+```
+
+
+### Business expense budget1
+
+- **Case Metadata:** format: xlsx | case: Business expense budget1 | scope: java-issue-xlsx
+- **Source:** tests/Issue_Files/xlsx/Business expense budget1.xlsx
+- **Text Similarity:** 0.9712
+- **Visual Average:** 0.8317
+- **Overall Score:** 0.9212
+- **Pages:** MiniPdf=4, Reference=4
+- **File Size:** MiniPdf=45757 bytes, Reference=159864 bytes
+
+Text Diff
+
+```diff
+--- minipdf/Business expense budget1.pdf
++++ reference/Business expense budget1.pdf
+@@ -3,43 +3,46 @@
+ CATEGORY Q1 BUDGET Q1 ACTUAL Q2 BUDGET
+
+ PERSONNEL
+
+ Salaries & Wages 45,000.00 44,200.00 46,000.00
+
+-Benefits & Insurance 12,000.00 11,850.00 12,500.00
+
++Benefits & Insurance 12,000.00 11,850.00 12,500.00
+
+ Training & Development 3,000.00 2,800.00 3,200.00
+
+ Recruitment 2,000.00 1,500.00 2,500.00
+
+ Personnel Subtotal 62,000.00 60,350.00 64,200.00
+
+ OPERATIONS
+
+-Rent & U ƟliƟes 8,000.00 8,000.00 8,200.00
+
+-Office Supplies 1,500.00 1,650.00 1,500.00
+
++Rent & Utilities 8,000.00 8,000.00 8,200.00
+
++Office Supplies 1,500.00 1,650.00 1,500.00
+
+ Equipment & Maintenance 3,000.00 2,700.00 3,500.00
+
+-IT & So Ōware 4,000.00 4,200.00 4,500.00
+
+-Telecommunica Ɵons 2,000.00 1,900.00 2,100.00
+
+-Opera Ɵons Subtotal 18,500.00 18,450.00 19,800.00
+
++IT & Software 4,000.00 4,200.00 4,500.00
+
++Telecommunications 2,000.00 1,900.00 2,100.00
+
++Operations Subtotal 18,500.00 18,450.00 19,800.00
+
+ MARKETING
+
+-Adver Ɵsing 5,000.00 4,800.00 6,000.00
+
+-Digital Marke Ɵng 3,000.00 3,200.00 3,500.00
+
++Advertising 5,000.00 4,800.00 6,000.00
+
++Digital Marketing 3,000.00 3,200.00 3,500.00
+
+ Events & Sponsorships 2,000.00 1,800.00 2,500.00
+
+-Prin Ɵng & Design 1,000.00 950.00 1,200.00
+
+-Marke Ɵng Subtotal 11,000.00 10,750.00 13,200.00
+
++Printing & Design 1,000.00 950.00 1,200.00
+
++Marketing Subtotal 11,000.00 10,750.00 13,200.00
+
+ TRAVEL & ENTERTAINMENT
+
+-Domes Ɵc Travel 3,000.00 2,500.00 3,500.00
+
+-Interna Ɵonal Travel 5,000.00 4,000.00 6,000.00
+
++Domestic Travel 3,000.00 2,500.00 3,500.00
+
++International Travel 5,000.00 4,000.00 6,000.00
+
+ Meals & Entertainment 2,000.00 1,800.00 2,200.00
+
+ Vehicle Expenses 1,500.00 1,400.00 1,500.00
+
+ Travel & Entertainment Subtotal 11,500.00 9,700.00 13,200.00
+
+ PROFESSIONAL SERVICES
+
+ Legal Fees 3,000.00 2,800.00 3,500.00
+
+-Accoun Ɵng & Audit 2,500.00 2,500.00 2,500.00
+
+-Consul Ɵng 4,000.00 3,500.00 5,000.00
+
++Accounting & Audit 2,500.00 2,500.00 2,500.00
+
++Consulting 4,000.00 3,500.00 5,000.00
+
+ Insurance 2,000.00 2,000.00 2,100.00
+
+ Professional Services Subtotal 11,500.00 10,800.00 13,100.00
+
+ ---PAGE---
+
+ GRAND TOTAL 114,500.00 110,050.00 123,500.00
+
+ Category Total Budget Total Actual
+
+ Personnel 126200 124250
+
+-Opera Ɵons 38300 38150
+
+-Marke Ɵng 24200 23750
+
++Operations 38300 38150
+
++Marketing 24200 23750
+
+ Travel & Entertainment 24700 22100
+
+ Professional Services 24600 23400
+
++Budget vs Actual by Category
+
++Amount (\$)
+
++Category
+
+ ---PAGE---
+
+ Q2 ACTUAL VARIANCE
+
+ 45,800.00 1,000.00
+```
+
+
+### Business expenses budget2
+
+- **Case Metadata:** format: xlsx | case: Business expenses budget2 | scope: java-issue-xlsx
+- **Source:** tests/Issue_Files/xlsx/Business expenses budget2.xlsx
+- **Text Similarity:** 0.8422
+- **Visual Average:** 0.8064
+- **Overall Score:** 0.8594
+- **Pages:** MiniPdf=4, Reference=4
+- **File Size:** MiniPdf=232162 bytes, Reference=376973 bytes
+
+Text Diff
+
+```diff
+--- minipdf/Business expenses budget2.pdf
++++ reference/Business expenses budget2.pdf
+@@ -1,81 +1,81 @@
+ Market Financial Consulting
+
+ PLANNED EXPENSES
+
+ January February March April May June July August September October November December Total
+
+-EMPLOYEE COSTS $ 107,950.00 $ 107,950.00 $ 107,950.00 $ 111,125.00 $ 111,125.00 $ 111,125.00 $ 111,125.00 $ 117,348.00 $ 117,348.00 $ 117,348.00 $ 117,348.00 $ 117,348.00 $ 1,355,090.00
+
+-Wages $ 85,000.00 $ 85,000.00 $ 85,000.00 $ 87,500.00 $ 87,500.00 $ 87,500.00 $ 87,500.00 $ 92,400.00 $ 92,400.00 $ 92,400.00 $ 92,400.00 $ 92,400.00 $ 1,067,000.00
+
+-Benefits $ 22,950.00 $ 22,950.00 $ 22,950.00 $ 23,625.00 $ 23,625.00 $ 23,625.00 $ 23,625.00 $ 24,948.00 $ 24,948.00 $ 24,948.00 $ 24,948.00 $ 24,948.00 $ 288,090.00
+
+-OFFICE COSTS $ 11,370.00 $ 11,770.00 $ 11,770.00 $ 11,470.00 $ 11,470.00 $ 11,470.00 $ 11,470.00 $ 11,470.00 $ 11,470.00 $ 11,470.00 $ 11,770.00 $ 11,770.00 $ 138,740.00
+
+-Office lease $ 9,800.00 $ 9,800.00 $ 9,800.00 $ 9,800.00 $ 9,800.00 $ 9,800.00 $ 9,800.00 $ 9,800.00 $ 9,800.00 $ 9,800.00 $ 9,800.00 $ 9,800.00 $ 117,600.00
+
+-Gas $ - 0 $ 400.00 $ 400.00 $ 100.00 $ 100.00 $ 100.00 $ 100.00 $ 100.00 $ 100.00 $ 100.00 $ 400.00 $ 400.00 $ 2,300.00
+
+-Electric $ 300.00 $ 300.00 $ 300.00 $ 300.00 $ 300.00 $ 300.00 $ 300.00 $ 300.00 $ 300.00 $ 300.00 $ 300.00 $ 300.00 $ 3,600.00
+
+-Water $ 40.00 $ 40.00 $ 40.00 $ 40.00 $ 40.00 $ 40.00 $ 40.00 $ 40.00 $ 40.00 $ 40.00 $ 40.00 $ 40.00 $ 480.00
+
+-Telephone $ 250.00 $ 250.00 $ 250.00 $ 250.00 $ 250.00 $ 250.00 $ 250.00 $ 250.00 $ 250.00 $ 250.00 $ 250.00 $ 250.00 $ 3,000.00
+
+-Internet access $ 180.00 $ 180.00 $ 180.00 $ 180.00 $ 180.00 $ 180.00 $ 180.00 $ 180.00 $ 180.00 $ 180.00 $ 180.00 $ 180.00 $ 2,160.00
+
+-Office supplies $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 2,400.00
+
+-Security $ 600.00 $ 600.00 $ 600.00 $ 600.00 $ 600.00 $ 600.00 $ 600.00 $ 600.00 $ 600.00 $ 600.00 $ 600.00 $ 600.00 $ 7,200.00
+
+-MARKETING COSTS $ 8,100.00 $ 3,100.00 $ 3,100.00 $ 11,100.00 $ 3,100.00 $ 3,900.00 $ 8,100.00 $ 6,100.00 $ 3,100.00 $ 8,100.00 $ 3,100.00 $ 6,900.00 $ 67,800.00
+
+-Web site hosting $ 500.00 $ 500.00 $ 500.00 $ 500.00 $ 500.00 $ 500.00 $ 500.00 $ 500.00 $ 500.00 $ 500.00 $ 500.00 $ 500.00 $ 6,000.00
+
+-Web site updates $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 1,000.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 1,000.00 $ 4,000.00
+
+-Collateral preparation $ 5,000.00 $ - 0 $ - 0 $ 5,000.00 $ - 0 $ - 0 $ 5,000.00 $ - 0 $ - 0 $ 5,000.00 $ - 0 $ - 0 $ 20,000.00
+
+-Co
+... (13972 more characters)
+
+```
+
+
+### Business plan checklist with SWOT analysis1
+
+- **Case Metadata:** format: xlsx | case: Business plan checklist with SWOT analysis1 | scope: java-issue-xlsx
+- **Source:** tests/Issue_Files/xlsx/Business plan checklist with SWOT analysis1.xlsx
+- **Text Similarity:** 0.8583
+- **Visual Average:** 0.582
+- **Overall Score:** 0.7761
+- **Pages:** MiniPdf=1, Reference=1
+- **File Size:** MiniPdf=40955 bytes, Reference=64252 bytes
+
+Text Diff
+
+```diff
+--- minipdf/Business plan checklist with SWOT analysis1.pdf
++++ reference/Business plan checklist with SWOT analysis1.pdf
+@@ -1,35 +1,37 @@
+ Northwind Traders
+
+ Business planning checklist
+
+-Using the strength, weakness, opportunity, and threat (SWOT) analysis framework, develop a checklist of the key activi
+
+-ties that need to be performed when preparing a formal business plan in the table, below.
+
++Using the strength, weakness, opportunity, and threat (SWOT) analysis framework, develop a checklist of the key activities
+
++that need to be performed when preparing a formal business plan in the table, below.
+
+ Activity Owner Completion date
+
+-Strengths: Define the company's current mission statemen
+
+-Luca Richter 1/9/23
+
+-t.
+
+-Strengths: Identify market segments in which the compan
+
+-y will participate by conducting primary and secondary ma Dylan Williams 1/9/23
+
+-rket research.
+
+-Strengths: Identify the company's value proposition and h
+
+-Kristin Orav 1/16/23
+
+-ow it will differentiate itself within the marketplace.
+
+-Weaknesses: Identify any barriers to market entry (for exa
+
+-mple, capital requirements, technical barriers, patents, an Flora Berggren 1/6/23
+
+-d process barriers) that the company needs to overcome.
+
+-Weaknesses: Identify any risks inherent to the organizatio
+
+-n that need to be mitigated so that the company can realiz Flora Berggren 1/6/23
+
+-e the business plan.
+
++Strengths: Define the company's current mission
+
++Luca Richter 1/9/2023
+
++statement.
+
++Strengths: Identify market segments in which the
+
++company will participate by conducting primary and Dylan Williams 1/9/2023
+
++secondary market research.
+
++Strengths: Identify the company's value proposition and
+
++Kristin Orav 1/16/2023
+
++how it will differentiate itself within the marketplace.
+
++Weaknesses: Identify any barriers to market entry (for
+
++example, capital requirements, technical barriers, patents,
+
++Flora Berggren 1/6/2023
+
++and process barriers) that the company needs to
+
++overcome.
+
++Weaknesses: Identify any risks inherent to the
+
++organization that need to be mitigated so that the company Flora Berggren 1/6/2023
+
++can realize the business plan.
+
+ Opportunities: Identify areas where the current market is
+
+-Kristin Orav 1/6/23
+
++Kristin Orav 1/6/2023
+
+ underserved that provide an opportunity for the company.
+
+-Opportunities: Identify any key processes, intellectual capi
+
+-tal, or other resources that the company can use to its adv Ian Hansson 1/9/23
+
+-antage in the marketplace.
+
+-Threats: Identify primary competitors, and then analyze co
+
+-mpetitor performance by using all available data and additi Gaurav Cheema 1/9/23
+
+-onal data that can be verified.
+
+-Threats: Identify secondary and potential future competito
+
+-Chela Arapelli 1/16/23
+
+-rs that might affect the business plan.
+
+-Threats: Develop strategies for mitigating primary and sec
+
+-Gaurav Cheema 1/16/23
+
+-ondary competitive threats.
++Opportunities: Identify any key processes, intellectual
+
++capital, or other res
+... (514 more characters)
+
+```
+
+
+### Event budget1
+
+- **Case Metadata:** format: xlsx | case: Event budget1 | scope: java-issue-xlsx
+- **Source:** tests/Issue_Files/xlsx/Event budget1.xlsx
+- **Text Similarity:** 0.9859
+- **Visual Average:** 0.741
+- **Overall Score:** 0.7908
+- **Pages:** MiniPdf=7, Reference=5
+- **File Size:** MiniPdf=61943 bytes, Reference=121223 bytes
+
+Text Diff
+
+```diff
+--- minipdf/Event budget1.pdf
++++ reference/Event budget1.pdf
+@@ -1,15 +1,16 @@
+ ABOUT THIS TEMPLATE
+
+-Use this event budget workbook to track expenses incurred on and income earned from an event.
+
++Use this event budget workbook to track expenses incurred on and income earned from an
+
++event.
+
+ Enter details in tables in expenses worksheet and income worksheet.
+
+ Total expenses and total income are auto-calculated.
+
+ Profit & loss summary and chart are auto-updated in profit-loss summary worksheet.
+
+ Note:
+
+-Additional instructions have been provided in column A in each worksheet. This text has been intentio
+
+-nally hidden. To remove text, select column A, then select DELETE.
+
+-To learn more about tables, press SHIFT and then F10 within a table, select the TABLE option, and th
+
+-en select ALTERNATIVE TEXT
+
++Additional instructions have been provided in column A in each worksheet. This text has been
+
++intentionally hidden. To remove text, select column A, then select DELETE.
+
++To learn more about tables, press SHIFT and then F10 within a table, select the TABLE option, and
+
++then select ALTERNATIVE TEXT
+
+ ---PAGE---
+
+-Event budget EXPENSE
+
++Event budget EXPENSES
+
+ Estimated Actual
+
+ TOTAL EXPENSES
+
+ $882.00 $333.00
+
+@@ -31,10 +32,10 @@
+ Photocopying/Printing $20.00 Gifts $100.00
+
+ Postage Total $100.00 $0.00
+
+ Total $20.00 $0.00
+
+----PAGE---
+
+ Miscellaneous Estimated Actual
+
+ Telephone $13.00
+
+ Transportation $12.00
+
+ Stationery supplies
+
+ Fax services
+
+-Total $12.00 $13.00
++Total $12.00 $13.00
+
++---PAGE---
+```
+
+
+### Expense report basic1
+
+- **Case Metadata:** format: xlsx | case: Expense report basic1 | scope: java-issue-xlsx
+- **Source:** tests/Issue_Files/xlsx/Expense report basic1.xlsx
+- **Text Similarity:** 0.9556
+- **Visual Average:** 0.5218
+- **Overall Score:** 0.791
+- **Pages:** MiniPdf=1, Reference=1
+- **File Size:** MiniPdf=48922 bytes, Reference=47896 bytes
+
+Text Diff
+
+```diff
+--- minipdf/Expense report basic1.pdf
++++ reference/Expense report basic1.pdf
+@@ -6,7 +6,7 @@
+ Name Cora Thomas Position Sales rep SSN 123-45-****
+
+ Department Marketing & sales Manager Liane Cormier Employee ID 8675309
+
+ Date Account Description Hotel Transport Fuel Meals Phone Entertainment Misc. Total
+
+-10/5/23 Wide World Importers Networking $111.00 $250.00 $60.00 $50.00 $0.00 $300.00 $25.00 $796.00
+
++10/5/2023 Wide World Importers Networking $111.00 $250.00 $60.00 $50.00 $0.00 $300.00 $25.00 $796.00
+
+ $0.00
+
+ $0.00
+
+ $0.00
+
+@@ -16,10 +16,8 @@
+ $0.00
+
+ $0.00
+
+ Total $111.00 $250.00 $60.00 $50.00 $0.00 $300.00 $25.00 $796.00
+
+-$796.00
+
+-Subtotal
+
+-$0.00
+
++Subtotal $796.00
+
++Advances $0.00
+
+ APPROVED
+
+-NOTES Advances
+
+-$796.00
+
+-Total
++NOTES
+
++Total $796.00
+```
+
+
+### Grocery list1
+
+- **Case Metadata:** format: xlsx | case: Grocery list1 | scope: java-issue-xlsx
+- **Source:** tests/Issue_Files/xlsx/Grocery list1.xlsx
+- **Text Similarity:** 0.8403
+- **Visual Average:** 0.6961
+- **Overall Score:** 0.8146
+- **Pages:** MiniPdf=1, Reference=1
+- **File Size:** MiniPdf=34874 bytes, Reference=71396 bytes
+
+Text Diff
+
+```diff
+--- minipdf/Grocery list1.pdf
++++ reference/Grocery list1.pdf
+@@ -1,48 +1,28 @@
+ ORCHARD GROCERY HOME DELIVERY LOCAL MARKET OTHER GRAND TOTAL
+
+ GROCERY LIST
+
+-Customize this list. Replace the entries above with your own to track your most frequentl
+
+-y used categories.
+
++Customize this list. Replace the entries above with your own to track your
+
+ $11.95 $6.12 $31.85 $216.60 $3.99 $270.51
+
++most frequently used categories.
+
+ DONE? ITEM STORE CATEGORY QTY UNIT UNIT PRICE TOTAL NOTE
+
+-Yes Peaches Azure River Farm ORCHARD lbs $2.99 $5.98
+
+-2
+
+-Yes Apples Azure River Farm ORCHARD lbs $1.99 $5.97 Have coupon
+
+-3
+
+-Bananas Wide World Importers OTHER bunch $3.99 $3.99
+
+-1
+
+-Yes Lettuce Market LOCAL MARKET head $2.29 $4.58
+
+-2
+
+-Tomatoes Market LOCAL MARKET lbs $3.49 $13.96
+
+-4
+
+-Yes Squash Market LOCAL MARKET each $1.50 $3.00
+
+-2
+
+-Yes Celery Wide World Importers LOCAL MARKET bunch $1.99 $3.98
+
+-2
+
+-Cucumber Market LOCAL MARKET lbs $2.29 $2.29
+
+-1
+
+-Mushrooms Wide World Importers GROCERY lbs $2.25 $1.13
+
+-0.5
+
+-HOME DELIVER
+
+-Yes Milk Local Farmer gal $3.99 $7.98
+
+-Y 2
+
+-HOME DELIVER Variety of block c
+
+-Yes Cheese Local Farmer lbs $9.99 $9.99
+
+-Y 1 heeses
+
+-HOME DELIVER
+
+-Yes Eggs Local Farmer doz $3.50 $7.00
+
+-Y 2
+
+-HOME DELIVER
+
+-Yes Cottage cheese Local Farmer 16 oz $3.89 $3.89
+
+-Y 1
+
+-HOME DELIVER
+
+-Yes Sour cream Local Farmer 8 oz $2.99 $2.99
+
+-Y 1
+
+-Yogurt Wide World Importers GROCERY 16 oz $4.99 $4.99 Greek with honey
+
+-1
+
+-Bacon wrapped fil
+
+-Beef Farmer's Market LOCAL MARKET lbs $7.99 $79.90
+
+-10 ets
+
+-Wild Salmon Fish Market LOCAL MARKET lbs $8.99 $53.94
+
+-6
+
+-Alaskan King Crab Legs Fish Market LOCAL MARKET lbs $10.99 $54.95
+
+-5
++Yes Peaches Azure River Farm ORCHARD 2 lbs $2.99 $5.98
+
++Yes Apples Azure River Farm ORCHARD 3 lbs $1.99 $5.97 Have coupon
+
++Bananas Wide World Importers OTHER 1 bunch $3.99 $3.99
+
++Yes Lettuce Market LOCAL MARKET 2 head $2.29 $4.58
+
++Tomatoes Market LOCAL MARKET 4 lbs $3.49 $13.96
+
++Yes Squash Market LOCAL MARKET 2 each $1.50 $3.00
+
++Yes Celery Wide World Importers LOCAL MARKET 2 bunch $1.99 $3.98
+
++Cucumber Market LOCAL MARKET 1 lbs $2.29 $2.29
+
++Mushrooms Wide World Importers GROCERY 0.5 lbs $2.25 $1.13
+
++Yes Milk Local Farmer HOME DELIVERY 2 gal $3.99 $7.98
+
++Variety of block
+
++Yes Cheese Local Farmer HOME DELIVERY 1 lbs $9.99 $9.99
+
++cheeses
+
++Yes Eggs Local Farmer HOME DELIVERY 2 doz $3.50 $7.00
+
++Yes Cottage cheese Local Farmer HOME DELIVERY 1 16 oz $3.89 $3.89
+
++Yes Sour cream Local Farmer HOME DELIVERY 1 8 oz $2.99 $2.99
+
++Yogurt Wide World Importers GROCERY 1 16 oz $4.99 $4.99 Greek with honey
+
++Bacon wrapped
+
++Beef Farmer's Market LOCAL MARKET 10 lbs $7.99 $79.90
+
++filets
+
++Wild Salmon Fish Market LOCAL MARKET 6 lbs $8.99 $53.94
+
++Alaskan King Crab Legs Fish Market LOCAL MARKET 5 lbs $10.99 $54.95
+```
+
+
+### Issue202609031340
+
+- **Case Metadata:** format: xlsx | case: Issue202609031340 | scope: java-issue-xlsx
+- **Source:** tests/Issue_Files/xlsx/Issue202609031340.xlsx
+- **Text Similarity:** 0.9022
+- **Visual Average:** 0.9262
+- **Overall Score:** 0.9314
+- **Pages:** MiniPdf=4, Reference=4
+- **File Size:** MiniPdf=446118 bytes, Reference=346206 bytes
+
+Text Diff
+
+```diff
+--- minipdf/Issue202609031340.pdf
++++ reference/Issue202609031340.pdf
+@@ -1,30 +1,34 @@
+ 表单编号 XXX-XXX-051-01
+
+-文件编号 QA-SIPI-XXXX-01-1-1
+
+-XXXXXX有限公司
+
++XXXXXX有限公司 文件编号QA-SIPI-XXXX-01-1-1
+
+ 发行日期 2025-04-11
+
+ 文件版本 03 修订日期 2025-11-25
+
+ 产品穴号 详见注意事项 产品单重 20.45±1.05 g
+
+-注塑制程检验标准书 ¢1.18*10MM(320度加强
+
++注塑制程检验标准书
+
++¢1.18*10MM(320度加强
+
+ 附件编号 / 销钉规格
+
+ 型)
+
+ 产品型号 XXXX 部件名称 盖塑胶件 抽样计划 ANSI/ASQ Z1.4Ⅱ 巡检频率 2H/次
+
+-MO25XXXX0100/MO2
+
++MO25XXXX0100/MO
+
+ 模具编号 部件材质 PETG 允收水准 CR: 0 MA:1.0 MI: 2.0
+
+-5XXXX0110
+
++25XXXX0110
+
+ 检验条件 检验光源角度:45°-90°,检验距离30cm,光照900~1200lux
+
+ 参考 图纸文件编号:XXXX系列 内部图纸 2025.4.10
+
+ 项目 检验工具 巡检内容
+
+ 图 部件图纸编号:HKXXXX-01-RB
+
+-结 目视、图纸 1、首件样品整模结构符合图纸设计、同PPS结构一致;
+
+-构 、PPS 2、制程巡检整模产品结构需同首件结构一致。
+
+-颜 目视、限度 1、首件样品颜色需无限接近限度样中的标准样;
+
+-色 样 2、制程巡检产品颜色需同首件颜色一致。
+
+-外 目视、限度 1、注塑成型外观缺陷大小不可超出限度样板;
+
+-观 样 2、其它外观缺陷无限度样的按常规通用标准判定。
+
++结 目视、图 1、首件样品整模结构符合图纸设计、同PPS结构一致;
+
++构 纸、PPS 2、制程巡检整模产品结构需同首件结构一致。
+
++颜 目视、限 1、首件样品颜色需无限接近限度样中的标准样;
+
++色 度样 2、制程巡检产品颜色需同首件颜色一致。
+
++外 目视、限 1、注塑成型外观缺陷大小不可超出限度样板;
+
++观 度样 2、其它外观缺陷无限度样的按常规通用标准判定。
+
+ 包装 目视 参照注塑作业指导书(SOP)
+
+ 仪器 项目 管控标准(mm) 测量位置 频率
+
+-卡尺 A 68.16 +0.05/-0.17 外形最长距离 1次/班
+
+-卡尺 B 62.03 +0.05/-0.20 外形最宽距离 1次/班
+
++1次/
+
++卡尺 A 68.16 +0.05/-0.17 外形最长距离
+
++班
+
++1次/
+
++卡尺 B 62.03 +0.05/-0.20 外形最宽距离
+
++班
+
+ 卡尺 C 27.9 +0.03/-0.05 顶部装饰片槽长度 首件
+
+ 卡尺 D 18.87 +0.00/-0.10 后钮侧面装饰片槽长度 首件
+
+ 卡尺 E 6.70+0.00/-0.05 后钮侧面大卡槽宽度 首件
+
+@@ -36,44 +40,62 @@
+ 后钮针孔中分线中心点至前扣弧
+
+ 投影仪 J 53.93+0.04/-0.03 6H
+
+ 线中心点距离
+
+-卡尺 K 18.61±0.05 后钮针孔左右间距 1次/班
+
+-高度规 L*2 4.65+0.00/-0.10 后钮针孔中心至口部平面间距 1次/班
+
+-参考资料/项目 代码 取样数量频率 代码 取样数量频率 注意事项及品质履历
+
++1次/
+
++卡尺 K 18.61±0.05 后钮针孔左右间距
+
++班
+
++1次/
+
++高度规 L*2 4.65+0.00/-0.10 后钮针孔中心至口部平面间距
+
++班
+
++产品后钮装饰片槽缺
+
++口竖边同卡尺贴紧
+
++68.16 mm 62.03 mm
+
++产品口部平面同
+
++产品口部平面同
+
++卡尺上平面平行
+
++卡尺上平面平行
+
++产品后钮装饰片槽缺
+
++口竖边同卡尺贴紧
+
++0.00 ~ 300mm卡尺
+
++参考资料/项目 代码 取样数量 频率 代码 取样数量 频率 注意事项及品质履历
+
+ 1.MO25XXXX0100:1#~4#/MO25XXXX0110:5#~12#
+
+ 尺
+
+ 寸
+
+ 组
+
+ 组装制程检验标
+
+-准书 1# 一模 1次/班 2# 一模 1次/班
+
++1次/ 1次/
+
++准书 1# 一模 2# 一模
+
++班 班
+
+ 合
+
+-XXXX-00组装成
+
++XXXX-
+
+ 功
+
+-3# 一模 1次/班 5# 一模 1次/班
+
+-品
+
++1次/ 1次/
+
++3# 一模 5# 一模
+
++00组装成品 班 班
+
+ 能
+
+-6# 一模 1次/班
+
++1次/
+
++6# 一模
+
++班
+
++日期 版本 工程担当 品质担当 修 订 内 容
+
++2025/4/11 00 AAAA AAA 初版发行
+
+ 修
+
+-日期 版本工程担当 品质担当 修 订 内 容
+
++---PAGE---
+
++修
+
++A:68.16 +0.05/-0.13改为68.16 +0.05/-0.17;B:62.03 +0.05/-0.10改为62.03 +0.05/-0.20;D:18.87
+
+ 订
+
+-2025/4/11 00 AAAA AAA 初版发行
+
+++0.00/-0.05改为18.87
+
++2025/5/12 01 BBBB BBB
+
+ 记
+
+----PAGE---
+
+-A:68.16 +0.05/-0.13改为68.16 +0.05/-0.17;B:62.03 +0.05/-0.10改为62.03 +0.05/-0.20;D:18.87 +0.
+
+-2025/5/12 01 BBBB BBB 00/-0.05改为18.87 +0.00/-0.10;I:8.35+0.00/-0.16改为8.35+0.10/-0.05;J:53.93+0.00/-0.10改为53.93
+
+-+0.05/-0.10;L*2:4.65±0.05改成4.65+0.00/-0.10;更新检验频率
+
+++0.00/-0.10;I:8.35+0.00/-0.16改为8.35+0.10/-0.05;J:53.93+0.00/-0.10改为53.93+0.05/-0.10;
+
++录 L*2:4.65±0.05改成4.65+0.00/-0.10;更新检验频率
+
+ 2025/8/6 02 CCCC CCCC 新增模具编号:MO25XXXX0110
+
+ 2025/11/25 03 DDDD DDDD J:53.93+0.05/-0.10改为53.93+0.04/-0.03
+
+ 研 制
+
+ 制 品
+
+-发 造
+
++审 发 审 造 审 审 制
+
+ 造 保
+
+-工 工 制
+
++核 工 核 工 核 核 作
+
+ 部 部
+
+-程 程 作
+
+-审 审
+
+-审 审
+
+-核 核
+
+-核 核
+
++程 程
+
+ ---PAGE---
+
+ 文件编号 QA-SIPI-XXXX-01-1-1 表单编号 QA-FM-051-01
+
+ XXXXXX有限公司
+
+@@ -83,7
+... (132 more characters)
+
+```
+
+
+### payroll-calculator_f
+
+- **Case Metadata:** format: xlsx | case: payroll-calculator_f | scope: java-issue-xlsx
+- **Source:** tests/Issue_Files/xlsx/payroll-calculator_f.xlsx
+- **Text Similarity:** 0.8386
+- **Visual Average:** 0.4835
+- **Overall Score:** 0.6288
+- **Pages:** MiniPdf=36, Reference=29
+- **File Size:** MiniPdf=1021293 bytes, Reference=606513 bytes
+
+Text Diff
+
+```diff
+--- minipdf/payroll-calculator_f.pdf
++++ reference/payroll-calculator_f.pdf
+@@ -1,43 +1,49 @@
+ Employee Register
+
+-Information contained in this employee register is highly confidential Filing Status (W-4 before 2020) Filing Status (W-4 from 2020 or later)
+
+-Step 2 Step 3
+
+-Additional Amount to Wit
+
++Information contained in this employee register is highly confidential Filing Status (W-4 before 2020) Filing St
+
++Step 2
+
++Additional Amount to
+
+ Annual Regular Overtime Exempt
+
+-Pay Federal hhold
+
++Pay Federal Withhold
+
+ ID Employee's Name M/F Hire Date Occupation Salary Hourly Hourly from W-4 Form Filing Status Filing Status
+
+-Frequency Allowance (With every paycheck) Dependents Other
+
++Frequency Allowance (With every paycheck)
+
+ ($) Rate ($) Rate ($) Overtime Box in (c)
+
+-($) Under Age 17 Dependents
+
++($)
+
+ 1 Adam Jones M 15-Feb-13 Senior Accountant 42,000.00 20.19 30.29 Yes Monthly W-4 (2020 or later) Exempt 2 50 Single Not Checked
+
+ 2 Nichola Brown F 28-Sep-11 CR Manager 54,481.00 26.19 39.29 Yes Monthly W-4 (2020 or later) Married 4 Single Not Checked
+
+ 3 Benny Erwin M 11-May-11 Applications PM 48,785.00 23.45 35.18 No Monthly W-4 (before 2020) Married 4
+
++When adding more rows, insert new rows above this one
+
++Page 1 of 29
+
+ ---PAGE---
+
+-When adding more rows, insert new rows above this one
+
++tatus (W-4 from 2020 or later) Pre-Tax Adjustments Post-Tax Adjustments Post-Tax Deductions
+
++Step 3 Step 4
+
++Tax Deferral Plan Health Insurance Other State Local Other Social
+
++(b) (c) Exempt from Insurance
+
++(401k) Premiums Withholdings Tax Tax Deductions Address Security
+
++Dependents Other Deductions Extra FICA ($)
+
++(%) ($) ($) (%) (%) ($) #
+
++Under Age 17 Dependents ($) withholding
+
++($)
+
++100 50 4.00% - - Not Exempt 4.63% 0.00% 45.00 - 111 Street, Town/City, ST, 00000 ***-**-6789
+
++3.00% - - Not Exempt 4.63% 0.00% 42.00 - 111 Street, Town/City, ST, 00000 ***-**-4321
+
++4.50% - - Not Exempt 4.63% 0.00% 14.00 30.00 111 Street, Town/City, ST, 00000 ***-**-0000
+
++Page 2 of 29
+
+ ---PAGE---
+
+ © 2013 - 2026 Spreadsheet123 LTD
+
+-Pre-Tax Adjustments Post-Tax Adjustments Post-Tax Deductions Payroll Calculator
+
+-Step 4
+
+-Tax Deferral Pl Health Insuranc Other Withholdi Exempt from State Local Other Deduct Social
+
+-(b) (c) Insurance
+
+-an (401k) e Premiums ngs Tax Tax ions Address Security
+
+-Deductions Extra ($)
+
+-(%) ($) ($) FICA (%) (%) ($) #
+
+-($) withholding
+
+-($)
+
+-100 50 4.00% - 0 - 0 Not Exempt 4.63% 0.00% 45.00 - 0 111 Street, Town/City, ST, 00000 ***-**-6789
+
+-3.00% - 0 - 0 Not Exempt 4.63% 0.00% 42.00 - 0 111 Street, Town/City, ST, 00000 ***-**-4321
+
+-4.50% - 0 - 0 Not Exempt 4.63% 0.00% 14.00 30.00 111 Street, Town/City, ST, 00000 ***-**-0000
+
++Payroll Calculator
+
+ Disclaimer:
+
+-This template is provided as-is for informatio
+
+-nal, illustrative, or/and educational purposes
+
+-only and under no circumstances should be
+
+-construed as financial, legal, or tax advice.
+
+-The results provided by this calculator are o
+
+-nly estimates and may not apply to your
+... (802 more characters)
+
+```
+
+
+### PO_anonymized
+
+- **Case Metadata:** format: xlsx | case: PO_anonymized | scope: java-issue-xlsx
+- **Source:** tests/Issue_Files/xlsx/PO_anonymized.xlsx
+- **Text Similarity:** 0.9385
+- **Visual Average:** 0.743
+- **Overall Score:** 0.7726
+- **Pages:** MiniPdf=69, Reference=9
+- **File Size:** MiniPdf=165573 bytes, Reference=409049 bytes
+
+Text Diff
+
+```diff
+--- minipdf/PO_anonymized.pdf
++++ reference/PO_anonymized.pdf
+@@ -1,36 +1,35 @@
+-Final Inspec Ɵon Report
+
++Final Inspection Report
+
+ Client: Global Tech Supplier: Alpha Labs Client PO#: PO-XX328
+
+-XXX office: TX Inspector: Sam Davis XXX PO#: 21668732
+
+-PM: Avery Wilson Inspec Ɵon Site: Greenfield county, Metro city PO Quan Ɵty: N/A
+
+-Project#: XXBFNO6 Inspec Ɵon date: 24-Jan-2026 Batch Quan Ɵty: 88907PCS
+
+-Date of Manufacture: 1/18/2026~1/21/2026 Lot ID: 9928-539898(1st lot)
+
++XXX office: TX Inspector: Sam Davis XXX PO#: 21668732
+
++PM: Avery Wilson Inspection Site: Greenfield county, Metro city PO Quantity: N/A
+
++Project#: XXBFNO6 Inspection date: 24-Jan-2026 Batch Quantity: 88907PCS
+
++Date of Manufacture: 1/18/2026~1/21/2026 Lot ID: 9928-539898(1st lot)
+
+ Item#: XX-ABC-68878-C
+
+-Descrip Ɵon: Standard Component Assembly with Seal Insert
+
+-Sign-off sample: Yes Approved drawings Yes (Drawing#: K1VRJNVG REV: C )
+
++Description: Standard Component Assembly with Seal Insert
+
++Sign-off sample: Yes Approved drawings Yes (Drawing#: K1VRJNVG REV: C )
+
+ Ship mark Yes Approved ranges Yes Ship to TBA
+
+-Inspec Ɵon Result: Accept
+
+-Re-in No
+
+-( Comm )
+
+-Inspec Ɵon Result Summary
+
+-Sample size Comment Remark
+
+-Check points
+
++Inspection Result: Accept
+
++Re-inspection: No
+
++( Comment: )
+
++Inspection Result Summary
+
++Check points Sample size Comment Remark
+
+ Dimension 20 Conformed
+
+-Aesthe Ɵcs 500 Conformed
+
++Aesthetics 500 Conformed
+
+ Color 500 Conformed
+
+ Material N/A
+
+-Decora Ɵon 500 Conformed
+
++Decoration 500 Conformed
+
+ Packaging N/A
+
+ Labeling N/A
+
+ Assortment N/A
+
+ Ship mark 1 Conformed
+
+ Workmanship 500 Conformed
+
+-Func Ɵon 20 Conformed
+
+-Aesthe Ɵc InspecƟon
+
+-Inspec Ɵon method: ANSI/ASQ Z1.4 Sampling plan: Single sampling normal inspec Ɵon Sampling level: Level 2
+
+-Acceptable Quality Level (AQL): Cri Ɵcal A: 0 Cri Ɵcal B: 0.65 Major: 1.5 Minor: 4.0
+
++Function 20 Conformed
+
++Aesthetic Inspection
+
++Inspection method: ANSI/ASQ Z1.4 Sampling plan: Single sampling normal inspection Sampling level: Level 2
+
++Acceptable Quality Level (AQL): Critical A: 0 Critical B: 0.65 Major: 1.5 Minor: 4.0
+
+ Sample size: 500 No. of carton drawn: 10
+
+ Opened carton No.: No carton#
+
+-No. Defects descrip Ɵon Cri. A Cri. B Major Minor
+
++No. Defects description Cri. A Cri. B Major Minor
+
+ 1 K. Seal gap 1 1
+
+ 2 J. Thread irregularity 3
+
+ 3
+
+@@ -38,30 +37,32 @@
+ 5
+
+ 6
+
+ 7
+
+-Total Defec Ɵves 1 4
+
+-Maximum Defec Ɵves 0 7 14 21
+
+-Inspec Ɵon qty: >80%
+
+-Inspec Ɵon quanƟty No. of carton
+
++Total Defectives 1 4
+
++Maximum Defectives 0 7 14 21
+
++Inspection qty: >80%
+
++Inspection quantity No. of carton
+
+ Item# XXX PO No. Batch qty.
+
+ Packed Unpacked Packed Unpacked
+
+ XX-ABC-57052-C 71662963 61,859 41,466 8,462 61 16
+
+ Total: 41,466 8,462 61 16
+
++Doc#: FIR-003.5
+
++Effective: 20171109 Page 1 of 9
+
+ ---PAGE---
+
+-Final Inspec Ɵon Report
+
++Final Inspection Report
+
+ Client: Global Tech Supplier: Alpha Labs Client PO#: PO-XX328
+
+-XXX office: TX Inspector: Sam Davis XXX PO#: 21668732
+
+-PM: Avery Wilson I
+... (2959 more characters)
+
+```
+
+
+### Simple invoice1
+
+- **Case Metadata:** format: xlsx | case: Simple invoice1 | scope: java-issue-xlsx
+- **Source:** tests/Issue_Files/xlsx/Simple invoice1.xlsx
+- **Text Similarity:** 0.7573
+- **Visual Average:** 0.6953
+- **Overall Score:** 0.781
+- **Pages:** MiniPdf=1, Reference=1
+- **File Size:** MiniPdf=52865 bytes, Reference=94130 bytes
+
+Text Diff
+
+```diff
+--- minipdf/Simple invoice1.pdf
++++ reference/Simple invoice1.pdf
+@@ -1,32 +1,20 @@
+-Elegant INVO
+
++Elegant INVOICE
+
+ Invoice #: 10654
+
+-Invoice date: 9/7/26
+
+-Embrace
+
++Embrace Invoice date: 8/29/2026
+
+ Job: Wedding florals
+
+-Bill to: Hailey Clark
+
+-345 W Main
+
+-Address: 123 Avenue A,
+
+-Los Angeles, CA 14151
+
++345 W Main Bill to: Hailey Clark
+
++Los Angeles, CA 14151 Address: 123 Avenue A,
+
+ P: 915-555-0195 Burbank, CA 56789
+
+-Phone: 805-555-0185
+
+-F: 915-555-0105
+
++F: 915-555-0105 Phone: 805-555-0185
+
+ elegantembrace@example.com Fax: NA
+
+-Qty Unit price Discount Price
+
+-Item # Description
+
+-35 $1.05 $36.75
+
+-A875 Peonies
+
+-25 $2.00 $50.00
+
+-K245 Tulips
+
+-30 $1.35 $40.50
+
+-U123 Buttercup
+
+-$127.25
+
+-Invoice Subtotal
+
+-6.00%
+
+-Tax Rate
+
+-$7.64
+
+-Sales Tax
+
+-$50.00
+
+-Deposit Received
+
++Item # Description Qty Unit price Discount Price
+
++A875 Peonies 35 $1.05 $36.75
+
++K245 Tulips 25 $2.00 $50.00
+
++U123 Buttercup 30 $1.35 $40.50
+
++Invoice Subtotal $127.25
+
++Tax Rate 6.00%
+
++Sales Tax $7.64
+
++Deposit Received $50.00
+
+ TOTAL $77.25
+
+ Please make all checks payable to Elegant Embrace.
+
+ Total due in 90 days. Overdue accounts subject to a service charge of 1.5% per month.
+```
+
+
+### Small business cash flow forecast1
+
+- **Case Metadata:** format: xlsx | case: Small business cash flow forecast1 | scope: java-issue-xlsx
+- **Source:** tests/Issue_Files/xlsx/Small business cash flow forecast1.xlsx
+- **Text Similarity:** 0.9004
+- **Visual Average:** 0.6894
+- **Overall Score:** 0.7359
+- **Pages:** MiniPdf=3, Reference=5
+- **File Size:** MiniPdf=48698 bytes, Reference=93247 bytes
+
+Text Diff
+
+```diff
+--- minipdf/Small business cash flow forecast1.pdf
++++ reference/Small business cash flow forecast1.pdf
+@@ -1,59 +1,82 @@
+ ELBIDE REALTY
+
+ Cash flow forecast
+
+-Starting cash on hand $ 10,000.00 Starting date Oct 2026 Cash minimum balance alert $ 2,000.00
+
+-Oct 2026 Nov 2026 Dec 2026 Jan 2027 Feb 2027 Mar 2027 Apr 2027 May 2027 Jun 2027 Jul 2027 Aug 2027 Sep 2027
+
++Starting cash on hand $ 10,000.00 Starting date Sep 2026 Cash minimum balance alert $ 2,000.00
+
++Sep 2026 Oct 2026 Nov 2026 Dec 2026 Jan 2027 Feb 2027 Mar 2027 Apr 2027 May 2027 Jun 2027 Jul 2027 Aug 2027
+
+ Total
+
+-Cash on hand (beginning of month) $ 10,000.00 $ 8,050.00 $ 9,350.00 $ 890.00 $ 2,190.00 $ 13,590.00 $ 13,790.00 $ 15,290.00 $ 16,410.00 $ 14,360.00 $ 16,560.00 $ 18,780.00
+
++Cash on hand (beginning of month) $ 10,000.00 $ 8,050.00 $ 9,350.00 $ 890.00 $ 2,190.00 $ 13,590.00 $ 13,790.00 $ 15,290.00 $ 16,410.00 $ 14,360.00 $ 16,560.00 $ 18,780.00
+
+ Cash receipts
+
+-Cash sales $ 2,500.00 $ 3,000.00 $ 3,600.00 $ 3,000.00 $ 14,000.00 $ 6,000.00 $ 3,000.00 $ 2,800.00 $ 3,500.00 $ 4,000.00 $ 3,800.00 $ 4,200.00 $ 53,400.00
+
+-Returns and allowances $ 200.00 $ 200.00
+
+-Collections on accounts receivable $ - 0
+
+-Interest, other income $ - 0
+
+-Loan proceeds $ - 0
+
+-Owner contributions $ - 0
+
+-Other receipts $ - 0
+
+-Total cash receipts $ 2,500.00 $ 3,000.00 $ 3,400.00 $ 3,000.00 $ 14,000.00 $ 6,000.00 $ 3,000.00 $ 2,800.00 $ 3,500.00 $ 4,000.00 $ 3,800.00 $ 4,200.00 $ 53,600.00
+
+-Total cash available $ 12,500.00 $ 11,050.00 $ 12,750.00 $ 3,890.00 $ 16,190.00 $ 19,590.00 $ 16,790.00 $ 18,090.00 $ 19,910.00 $ 18,360.00 $ 20,360.00 $ 22,980.00
+
++Cash sales $ 2,500.00 $ 3,000.00 $ 3,600.00 $ 3,000.00 $ 14,000.00 $ 6,000.00 $ 3,000.00 $ 2,800.00 $ 3,500.00 $ 4,000.00 $ 3,800.00 $ 4,200.00 $ 53,400.00
+
++Returns and allowances $ 200.00 $ 200.00
+
++Collections on accounts receivable $ -
+
++Interest, other income $ -
+
++Loan proceeds $ -
+
++Owner contributions $ -
+
++Other receipts $ -
+
++Total cash receipts $ 2,500.00 $ 3,000.00 $ 3,400.00 $ 3,000.00 $ 14,000.00 $ 6,000.00 $ 3,000.00 $ 2,800.00 $ 3,500.00 $ 4,000.00 $ 3,800.00 $ 4,200.00 $ 53,600.00
+
++Total cash available $ 12,500.00 $ 11,050.00 $ 12,750.00 $ 3,890.00 $ 16,190.00 $ 19,590.00 $ 16,790.00 $ 18,090.00 $ 19,910.00 $ 18,360.00 $ 20,360.00 $ 22,980.00
+
+ Cash paid out
+
+-Advertising $ 3,000.00 $ 3,000.00
+
+-Commissions and fees $ 250.00 $ 300.00 $ 360.00 $ 300.00 $ 1,400.00 $ 400.00 $ 300.00 $ 280.00 $ 350.00 $ 400.00 $ 380.00 $ 420.00 $ 5,140.00
+
+-Contract labor $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 200.00 $ 1,200.00
+
+-Employee benefit programs $ - 0
+
+-Insurance (other than health) $ 4,000.00 $ 4,000.00 $ 4,000.00 $ 4,000.00 $ 16,000.00
+
+-Interest expense $ - 0
+
+-Materials and supplies (in COGS) $ 1,200.00 $ 1,200.00
+... (3800 more characters)
+
+```
+
+
+### Wedding_timeline_planner1_copy
+
+- **Case Metadata:** format: xlsx | case: Wedding_timeline_planner1_copy | scope: java-issue-xlsx
+- **Source:** tests/Issue_Files/xlsx/Wedding_timeline_planner1_copy.xlsx
+- **Text Similarity:** 0.9295
+- **Visual Average:** 0.8964
+- **Overall Score:** 0.9304
+- **Pages:** MiniPdf=8, Reference=8
+- **File Size:** MiniPdf=408701 bytes, Reference=180076 bytes
+
+Text Diff
+
+```diff
+--- minipdf/Wedding_timeline_planner1_copy.pdf
++++ reference/Wedding_timeline_planner1_copy.pdf
+@@ -1,114 +1,121 @@
+ Wedding timeline planner
+
+ DONE?
+
+-? Arrange a gathering for you and your parents.
+
+-? Determine budget and how expenses will be shared.
+
++☐ Arrange a gathering for you and your parents.
+
+ 9 - 12
+
++☐ Determine budget and how expenses will be shared.
+
+ MONTHS TO GO
+
+-? Discuss the size, style, location, and scope of the wedding you want.
+
+-Choose a target wedding date and time. (The actual date will depend on v
+
+-?
+
+-enue availability.)
+
+-Create a binder to store and organize ideas, worksheets, receipts, brochur
+
+-?
+
+-es, etc.
+
+-? Visit and reserve wedding and reception sites.
+
+-? Meet with your officiant.
+
+-Start compiling your guest list to estimate head count. Consider budg
+
+-?
+
+-et when thinking about “must-invites” versus “nice-to-invites.”
+
+-? Begin shopping for the wedding gown.
+
+-? Choose the members of your wedding party.
+
+-? Enroll in wedding/shower gift registries.
+
++☐ Discuss the size, style, location, and scope of the wedding you want.
+
++Choose a target wedding date and time. (The actual date will depend
+
++☐
+
++on venue availability.)
+
++Create a binder to store and organize ideas, worksheets, receipts,
+
++☐
+
++brochures, etc.
+
++☐ Visit and reserve wedding and reception sites.
+
++☐ Meet with your officiant.
+
++Start compiling your guest list to estimate head count. Consider
+
++☐
+
++budget when thinking about “must-invites” versus “nice-to-invites.”
+
++☐ Begin shopping for the wedding gown.
+
++☐ Choose the members of your wedding party.
+
+ 6 - 9
+
++☐ Enroll in wedding/shower gift registries.
+
+ MONTHS TO GO
+
+-? Hire a photographer and a videographer.
+
+-Book an engagement photo session, especially if you plan to include a prof
+
+-?
+
+-essional engagement picture with Save-the-Date cards.
+
+-? Hire a caterer.
+
+-? Hire a florist.
+
+-Make arrangements for music to be played at the ceremony and reception
+
+-? . (Tasks might include booking a band or solo musician, hiring a DJ, choosi
+
+-ng significant musical selections, and so on.).
+
+-Reserve a block of hotel rooms for out-of-town guests. (Ask about group r
+
+-?
+
+-ates.)
+
+-Send out Save-the-Date cards. (Include lodging info and maps, as possible
+
+-?
+
+-.)
+
+-? Shop for wedding rings.
+
+-Select and order wedding gown, leaving ample time for delivery and altera
+
+-?
+
+-tions.
+
++☐ Hire a photographer and a videographer.
+
++Book an engagement photo session, especially if you plan to include a
+
++☐
+
++professional engagement picture with Save-the-Date cards.
+
++☐ Hire a caterer.
+
++☐ Hire a florist.
+
++Make arrangements for music to be played at the ceremony and
+
++☐ reception. (Tasks might include booking a band or solo musician,
+
++hiring a DJ, choosing significant musical selections, and so on.).
+
++Reserve a block of hotel rooms for out-of-town guests. (Ask about
+
++☐
+
++group rates.)
+
++Send out Save-the-Date cards. (Include lodging info and maps, as
+
++☐
+
++possible.)
+
++☐ Shop for wedding rings.
+
++Select and order
+... (5652 more characters)
+
+```
+
+
+### Weekly schedule planner1
+
+- **Case Metadata:** format: xlsx | case: Weekly schedule planner1 | scope: java-issue-xlsx
+- **Source:** tests/Issue_Files/xlsx/Weekly schedule planner1.xlsx
+- **Text Similarity:** 0.6289
+- **Visual Average:** 0.3729
+- **Overall Score:** 0.5007
+- **Pages:** MiniPdf=2, Reference=1
+- **File Size:** MiniPdf=72332 bytes, Reference=148591 bytes
+
+Text Diff
+
+```diff
+--- minipdf/Weekly schedule planner1.pdf
++++ reference/Weekly schedule planner1.pdf
+@@ -1,16 +1,15 @@
+ Weekly schedule planner
+
+-Week of: 9/7/26
+
++Week of: 8/24/2026
+
+ Weekly objectives To do items Deadlines this week
+
+-Run 3 miles Take FiFi to vet Presenta Ɵon on Thursday
+
++Run 3 miles Take FiFi to vet Presentation on Thursday
+
+ Read 30 min/day Go grocery shopping
+
+ Stretch Pick up dry cleaning
+
+-46272.0 46273.0 46274.0 46275.0 46276.0 46277.0 46278.0
+
+-07
+
+-September 08 September 09 September 10 September 11 September 12 September 13 September
+
+-? Run ? Run ? Run Run Run Run Run
+
+-? Read ? Read ? Read Read Read Read Read
+
+-? Stretch ? Stretch ? Stretch Stretch Stretch Stretch Stretch
+
+-? Go to vet ? Shopping Present
+
+-? Rehearse
+
+-Notes
+
+----PAGE---
++Monday Tuesday Wednesday Thursday Friday Saturday Sunday
+
++24 25 26 27 28 29 30
+
++August August August August August August August
+
++✔ Run ✔ Run ✖ Run Run Run Run Run
+
++✖ Read ✔ Read ✔ Read Read Read Read Read
+
++✔ Stretch ✔ Stretch ✖ Stretch Stretch Stretch Stretch Stretch
+
++✔ Go to vet ✔ Shopping Present
+
++✔ Rehearse
+
++Notes
+```
+
+
+### XlsxIssue75
+
+- **Case Metadata:** format: xlsx | case: XlsxIssue75 | scope: java-issue-xlsx
+- **Source:** tests/Issue_Files/xlsx/XlsxIssue75.xlsx
+- **Text Similarity:** 0.9694
+- **Visual Average:** 0.9592
+- **Overall Score:** 0.8714
+- **Pages:** MiniPdf=152, Reference=144
+- **File Size:** MiniPdf=393485 bytes, Reference=5896201 bytes
+
+Text Diff
+
+```diff
+--- minipdf/XlsxIssue75.pdf
++++ reference/XlsxIssue75.pdf
+@@ -46,10 +46,10 @@
+ 3991293 Fred Invoice
+
+ 30184 Fred Invoice
+
+ 30184 Fred Invoice
+
+----PAGE---
+
+ 30184 Fred Invoice
+
+ 30184 Fred Invoice
+
+ 30184 Fred Invoice
+
++---PAGE---
+
+ 30184 Fred Invoice
+
+ 30184 Fred Invoice
+
+ 30184 Fred Invoice
+
+@@ -95,13 +95,13 @@
+ BLAC002 Fred Invoice
+
+ BLAC002 Fred Invoice
+
+ BLAC002 Fred Invoice
+
+----PAGE---
+
+ BLAC002 Fred Invoice
+
+ BLAC002 Fred Credit Memo
+
+ BLAC002 Fred Credit Memo
+
+ BLAC002 Fred Invoice
+
+ BLAC002 Fred Invoice
+
+ BLAC002 Fred Invoice
+
++---PAGE---
+
+ BLAC002 Fred Credit Memo
+
+ BLAC002 Fred Invoice
+
+ BLAC002 Fred Invoice
+
+@@ -143,4 +143,13 @@
+ 26202 Fred Invoice
+
+ 26202 Fred Invoice
+
+ 26202 Fred Invoice
+
+-26202 Fred Invoice
++26202 Fred Invoice
+
++26202 Fred Invoice
+
++26202 Fred Invoice
+
++26202 Fred Invoice
+
++12011 Fred Invoice
+
++011299 Fred Credit Memo
+
++48105 Fred Credit Memo
+
++48105 Fred Credit Memo
+
++12112 Fred Invoice
+
++14449 Fred Invoice
+```
+
+
+### XlsxIssue77_MergedCellAlignment
+
+- **Case Metadata:** format: xlsx | case: XlsxIssue77_MergedCellAlignment | scope: java-issue-xlsx
+- **Source:** tests/Issue_Files/xlsx/XlsxIssue77_MergedCellAlignment.xlsx
+- **Text Similarity:** 1.0
+- **Visual Average:** 0.891
+- **Overall Score:** 0.9564
+- **Pages:** MiniPdf=2, Reference=2
+- **File Size:** MiniPdf=71248 bytes, Reference=172385 bytes
+
+Text content: ✅ Identical
+
+### XlsxIssue77_Template1
+
+- **Case Metadata:** format: xlsx | case: XlsxIssue77_Template1 | scope: java-issue-xlsx
+- **Source:** tests/Issue_Files/xlsx/XlsxIssue77_Template1.xlsx
+- **Text Similarity:** 0.9905
+- **Visual Average:** 0.9007
+- **Overall Score:** 0.9565
+- **Pages:** MiniPdf=6, Reference=6
+- **File Size:** MiniPdf=60540 bytes, Reference=64464 bytes
+
+Text Diff
+
+```diff
+--- minipdf/XlsxIssue77_Template1.pdf
++++ reference/XlsxIssue77_Template1.pdf
+@@ -6,8 +6,8 @@
+ Attn Customer: Please return parts to the return address below.
+
+ Customer Name Sales Person Requestor
+
+ Return Address: Reason for Return:
+
+-NOTE - All parts returned for credit must be in original factory condition, with clean factory label and scannable QR cod
+
+-e, original factory packaging, with no extra labels or markings on the product.
+
++NOTE - All parts returned for credit must be in original factory condition, with clean factory label and scannable QR
+
++code, original factory packaging, with no extra labels or markings on the product.
+
+ Original Qty
+
+ Part No. Per Unit
+
+ Invoice # Authorized
+
+@@ -20,8 +20,8 @@
+ Attn Customer: Please return parts to the return address below.
+
+ Customer Name Sales Person Requestor
+
+ Return Address: Reason for Return:
+
+-NOTE - All parts returned for credit must be in original factory condition, with clean factory label and scannable QR cod
+
+-e, original factory packaging, with no extra labels or markings on the product.
+
++NOTE - All parts returned for credit must be in original factory condition, with clean factory label and scannable QR
+
++code, original factory packaging, with no extra labels or markings on the product.
+
+ Original Qty
+
+ Part No. Per Unit
+
+ Invoice # Authorized
+
+@@ -34,8 +34,8 @@
+ Attn Customer: Please return parts to the return address below.
+
+ Customer Name Sales Person Requestor
+
+ Return Address: Reason for Return:
+
+-NOTE - All parts returned for credit must be in original factory condition, with clean factory label and scannable QR cod
+
+-e, original factory packaging, with no extra labels or markings on the product.
+
++NOTE - All parts returned for credit must be in original factory condition, with clean factory label and scannable QR
+
++code, original factory packaging, with no extra labels or markings on the product.
+
+ Original Qty
+
+ Part No. Per Unit
+
+ Invoice # Authorized
+```
+
+
+### XlsxIssue77_Template2_Workaround
+
+- **Case Metadata:** format: xlsx | case: XlsxIssue77_Template2_Workaround | scope: java-issue-xlsx
+- **Source:** tests/Issue_Files/xlsx/XlsxIssue77_Template2_Workaround.xlsx
+- **Text Similarity:** 0.9905
+- **Visual Average:** 0.9048
+- **Overall Score:** 0.9581
+- **Pages:** MiniPdf=6, Reference=6
+- **File Size:** MiniPdf=60494 bytes, Reference=64466 bytes
+
+Text Diff
+
+```diff
+--- minipdf/XlsxIssue77_Template2_Workaround.pdf
++++ reference/XlsxIssue77_Template2_Workaround.pdf
+@@ -6,8 +6,8 @@
+ Attn Customer: Please return parts to the return address below.
+
+ Customer Name Sales Person Requestor
+
+ Return Address: Reason for Return:
+
+-NOTE - All parts returned for credit must be in original factory condition, with clean factory label and scannable QR cod
+
+-e, original factory packaging, with no extra labels or markings on the product.
+
++NOTE - All parts returned for credit must be in original factory condition, with clean factory label and scannable QR
+
++code, original factory packaging, with no extra labels or markings on the product.
+
+ Original Qty
+
+ Part No. Per Unit
+
+ Invoice # Authorized
+
+@@ -20,8 +20,8 @@
+ Attn Customer: Please return parts to the return address below.
+
+ Customer Name Sales Person Requestor
+
+ Return Address: Reason for Return:
+
+-NOTE - All parts returned for credit must be in original factory condition, with clean factory label and scannable QR cod
+
+-e, original factory packaging, with no extra labels or markings on the product.
+
++NOTE - All parts returned for credit must be in original factory condition, with clean factory label and scannable QR
+
++code, original factory packaging, with no extra labels or markings on the product.
+
+ Original Qty
+
+ Part No. Per Unit
+
+ Invoice # Authorized
+
+@@ -34,8 +34,8 @@
+ Attn Customer: Please return parts to the return address below.
+
+ Customer Name Sales Person Requestor
+
+ Return Address: Reason for Return:
+
+-NOTE - All parts returned for credit must be in original factory condition, with clean factory label and scannable QR cod
+
+-e, original factory packaging, with no extra labels or markings on the product.
+
++NOTE - All parts returned for credit must be in original factory condition, with clean factory label and scannable QR
+
++code, original factory packaging, with no extra labels or markings on the product.
+
+ Original Qty
+
+ Part No. Per Unit
+
+ Invoice # Authorized
+```
+
+
+### XlsxIssue81_LayoutOptions
+
+- **Case Metadata:** format: xlsx | case: XlsxIssue81_LayoutOptions | scope: java-issue-xlsx
+- **Source:** tests/Issue_Files/xlsx/XlsxIssue81_LayoutOptions.xlsx
+- **Text Similarity:** 0.9188
+- **Visual Average:** 0.807
+- **Overall Score:** 0.8903
+- **Pages:** MiniPdf=16, Reference=16
+- **File Size:** MiniPdf=61053 bytes, Reference=242251 bytes
+
+Text Diff
+
+```diff
+--- minipdf/XlsxIssue81_LayoutOptions.pdf
++++ reference/XlsxIssue81_LayoutOptions.pdf
+@@ -1,122 +1,119 @@
+ Invoice Customer Region Owner
+
+-INV-00001 Customer account with extended legal nam Europe Opera Ɵons owner 2
+
+-INV-00002 Customer account with extended legal nam Asia Pacific Opera Ɵons owner 3
+
+-INV-00003 Customer account with extended legal nam La Ɵn America Opera Ɵons owner 4
+
+-INV-00004 Customer account with extended legal nam North America Opera Ɵons owner 5
+
+-INV-00005 Customer account with extended legal nam Europe Opera Ɵons owner 6
+
+-INV-00006 Customer account with extended legal nam Asia Pacific Opera Ɵons owner 7
+
+-INV-00007 Customer account with extended legal nam La Ɵn America Opera Ɵons owner 8
+
+-INV-00008 Customer account with extended legal nam North America Opera Ɵons owner 9
+
+-INV-00009 Customer account with extended legal nam Europe Opera Ɵons owner 1
+
+-INV-00010 Customer account with extended legal nam Asia Pacific Opera Ɵons owner 2
+
+-INV-00011 Customer account with extended legal nam La Ɵn America Opera Ɵons owner 3
+
+-INV-00012 Customer account with extended legal nam North America Opera Ɵons owner 4
+
+-INV-00013 Customer account with extended legal nam Europe Opera Ɵons owner 5
+
+-INV-00014 Customer account with extended legal nam Asia Pacific Opera Ɵons owner 6
+
+-INV-00015 Customer account with extended legal nam La Ɵn America Opera Ɵons owner 7
+
+-INV-00016 Customer account with extended legal nam North America Opera Ɵons owner 8
+
+-INV-00017 Customer account with extended legal nam Europe Opera Ɵons owner 9
+
+-INV-00018 Customer account with extended legal nam Asia Pacific Opera Ɵons owner 1
+
+-INV-00019 Customer account with extended legal nam La Ɵn America Opera Ɵons owner 2
+
+-INV-00020 Customer account with extended legal nam North America Opera Ɵons owner 3
+
+-INV-00021 Customer account with extended legal nam Europe Opera Ɵons owner 4
+
+-INV-00022 Customer account with extended legal nam Asia Pacific Opera Ɵons owner 5
+
+-INV-00023 Customer account with extended legal nam La Ɵn America Opera Ɵons owner 6
+
+-INV-00024 Customer account with extended legal nam North America Opera Ɵons owner 7
+
+-INV-00025 Customer account with extended legal nam Europe Opera Ɵons owner 8
+
+-INV-00026 Customer account with extended legal nam Asia Pacific Opera Ɵons owner 9
+
+-INV-00027 Customer account with extended legal nam La Ɵn America Opera Ɵons owner 1
+
+-INV-00028 Customer account with extended legal nam North America Opera Ɵons owner 2
+
+-INV-00029 Customer account with extended legal nam Europe Opera Ɵons owner 3
+
+-INV-00030 Customer account with extended legal nam Asia Pacific Opera Ɵons owner 4
+
+-INV-00031 Customer account with extended legal nam La Ɵn America Opera Ɵons owner 5
+
+-INV-00032 Customer account with extended legal nam North America Opera Ɵons owner 6
+
+-INV-00033 Customer account with extended legal nam Europe Opera Ɵons owner 7
+
+-INV-00034 Customer account with extended legal nam Asia Pacific Opera Ɵons owner 8
+
+-INV-00035 Customer
+... (16477 more characters)
+
+```
+
+
+### XlsxIssue82_5mb
+
+- **Case Metadata:** format: xlsx | case: XlsxIssue82_5mb | scope: java-issue-xlsx
+- **Source:** tests/Issue_Files/xlsx/XlsxIssue82_5mb.xlsx
+- **Text Similarity:** 0.6052
+- **Visual Average:** 0.8405
+- **Overall Score:** 0.6783
+- **Pages:** MiniPdf=383, Reference=766
+- **File Size:** MiniPdf=9053125 bytes, Reference=21494385 bytes
+
+Text Diff
+
+```diff
+--- minipdf/XlsxIssue82_5mb.pdf
++++ reference/XlsxIssue82_5mb.pdf
+@@ -1,143 +1,143 @@
+-Name Email Phone Address Company Text Descrip Ɵo Job Title
+
+-Quen Ɵn H oschiller@573.920.9 22808 LueMraz and Labore et Non delenEmergenc
+
+-Lowell Olseve.lind@720.754.6 67029 DecRosenbau Soluta nih Aut iste quFast Food
+
+-Sydnee Cr gunnar.sch13128126 908 Ma Ʃe Strosin, Ki Voluptate Sed aliquidInterac Ɵon
+
+-Tomasa D gerlach.ar +1 (276) 9787 Rey HBalistreri-KProvident Et cupiditaMotorcycl
+
+-Payton Kuherman.ba1-201-33353401 HahWolff-ErdmVero iste l Culpa id a Janitorial S
+
+-Constan Ɵn crist.elme (551) 609-32868 Kul Runolfsso Officia vol Aut non d Pressing M
+
+-Tad Hartmkathryn041-928-43477833 Kle Kunze, FraIpsum pra Facilis undTherapist
+
+-Tris Ɵan Lin li Ʃle.bobb +1.870.92 83843 ReeMitchell-SDignissimoEum beataTechnical
+
+-Miss Tierr gpredovic@912-817-0310 Elliot Ward-WildAb at evenAut voluptCredit Che
+
+-Nicole Ʃe S domenic4 +1-352-6113158 StoKerluke GrCulpa ea aQuos earuPostsecon
+
+-Rosalind Fkimberly.p16786269 700 Hya Ʃ Bode-Swi Ō Est et qui Eveniet teLoan Coun
+
+-Hector Braelarkin@s 1-458-225987 Isom SStrosin-KuLabore ut Quidem p Cement M
+
+-Marjory K brandyn.e1-210-606671 Kaci VMann, McMoles Ɵas Fuga et veBrokerage
+
+-Forrest Tuwilmer93@216.242.5 214 BahrinBlick, O'CoEnim earuAut sequi Musician
+
+-Kennedy Wgutkowski+1.321.40 693 MossiAbshire, RDolor doloRerum aspIndustrial-
+
+-Lysanne Hgebert@y +1.272.47 4137 BergNitzsche LAsperioresAt doloresInterviewe
+
+-Randall Dagreenholt 17024567 90795 Bei Lue Ʃgen, Blandi Ɵis n Et natus q Mixing and
+
+-Chanelle Bsally46@g14438889 8856 AngeYundt-Kirl Voluptas l Dolores mCommunic
+
+-Mr. Gregoudietrich@1-469-314750 Ebert Goye Ʃe In Unde odit Qui aut doClinical La
+
+-Rosalia Vodonna.sim13853465 9022 CletaAbbo Ʃ, Ca Soluta id tAut sit et aMechanica
+
+-Sigmund Tteresa93@+1.937.53 2314 CristAufderharConsectet QuibusdamProducer
+
+-Prof. Janicahe ƫnger 312.745.3 50901 LudSawayn, WSint aut reAlias sed vLoading M
+
+-Mr. Brad Flhickle@ya856-513-791499 MoKeebler, L AssumendAsperioresAircra Ō M
+
+-Christop Gdstrosin@(563) 429-150 BertraKreiger LtdQuas occaCommodi Aircra Ō Bo
+
+-Dr. Toni Merling43@+1-765-386102 AssuJenkins IncLaborum aUt aut et uLog Grade
+
+-Reece Fadekirlin@lo463.613.7 9314 SibylFeeney GrVoluptate Quo exercRecordkee
+
+-Izaiah Skilehgoye Ʃe@ 240-241-28932 BartoDavis-WelQui fuga dEnim quia Biologist
+
+-Mathilde Sromaguer 1-218-29880599 ProCarter-PurAb voluptaSimilique sFence Erec
+
+-Mr. Jarreddimitri.hay279.899.6 6187 ConnKonopelskAutem sit Soluta dol Paralegal
+
+-Kameron Psimone.hy1-510-89134203 KatS Ɵedeman Ipsa ut amPerspicia Ɵ Directory A
+
+-Miss Libbyathena68@+1.937.89 1155 Max D'Amore-WEst dolor eEum volupGrinder O
+
+-Nayeli Bernadia28@1-781-79758562 BotLi Ʃle, Volk Harum sunExercita Ɵo Life Scienc
+
+-Chaz Bogadevan58@+1.870.44 657 Clo Ɵld Stracke In Est animi eIllum cum Health Tec
+
+-Frieda Moemuller@ 1-458-70091308 BarJerde PLC RecusandaEst eos et Rotary Dri
+
+-Jarod Grimqblanda@283-286-9315 O'HarUpton GroAperiam aQuasi repeCrane and
+
+-Mr. Mor
+... (21972 more characters)
+
+```
+
+
+### XlsxIssue82_SampleTestData5mb
+
+- **Case Metadata:** format: xlsx | case: XlsxIssue82_SampleTestData5mb | scope: java-issue-xlsx
+- **Source:** tests/Issue_Files/xlsx/XlsxIssue82_SampleTestData5mb.xlsx
+- **Text Similarity:** 0.6595
+- **Visual Average:** 0.8828
+- **Overall Score:** 0.7169
+- **Pages:** MiniPdf=466, Reference=1668
+- **File Size:** MiniPdf=12343878 bytes, Reference=32924505 bytes
+
+Text Diff
+
+```diff
+--- minipdf/XlsxIssue82_SampleTestData5mb.pdf
++++ reference/XlsxIssue82_SampleTestData5mb.pdf
+@@ -1,131 +1,146 @@
+-ID Name Email City Country DepartmenNotes Value1 Value2 RandomTe
+
+-1 User 1 user1@exaToronto UK IT pwJqdCFm760613 0.6770745 aJ3NulIjekF
+
+-2 User 2 user2@exaDelhi Germany IT S6gI ƩJQrYi 456305 0.8501621 pf092rX59
+
+-3 User 3 user3@exaSydney UK Finance mmp5R2o 802115 0.4416719 FICghVXe4
+
+-4 User 4 user4@exaBerlin Australia HR BpiYtDuC1 929132 0.9823118 Dqy4Y ĬZV
+
+-5 User 5 user5@exaBerlin France HR DXnTIbeTy178492 0.9325545 KXaj1Xiogb
+
+-6 User 6 user6@exaDelhi Australia HR Iw9DkBED 518412 0.1261322 U601Kz3aU
+
+-7 User 7 user7@exaToronto Australia Finance tN5mvZpZ 72218 0.5143867 GuleIeBIYZ
+
+-8 User 8 user8@exaTokyo USA Ops xqmF3Xc2n238623 0.8771951 kEPOh7wm
+
+-9 User 9 user9@exaLondon Australia Ops k099328Ns369743 0.6153598 D5YOUBW
+
+-10 User 10 user10@exDelhi Germany IT 3YvAHvcSG24089 0.9405732 goDwaKqv
+
+-11 User 11 user11@exSydney France Sales r2O9ZtMJy929463 0.4255768 F4rYXgsl2m
+
+-12 User 12 user12@exTokyo Japan Sales y8JVUgTdff777742 0.6389745 wNpAAEw
+
+-13 User 13 user13@exTokyo India Support v5XTbqBU 223784 0.2318513 FlobOTEN9
+
+-14 User 14 user14@exNew York Japan Ops pxwvBMPV187168 0.7562123 cJSx1oYMF
+
+-15 User 15 user15@exSydney Japan Ops NPs68SCLX332785 0.3476629 82hWYSRr
+
+-16 User 16 user16@exDelhi Canada Ops JMgIo6JDv 966595 0.1094971 4BAbUAcF
+
+-17 User 17 user17@exParis Australia Ops LWFef8uCc429423 0.1728704 UQEtbOYiF
+
+-18 User 18 user18@exTokyo Australia Ops 4y2atULBn179954 0.9145142 AKEBEMk7
+
+-19 User 19 user19@exBerlin France Finance MoiyHIdz6416476 0.4178345 yKogEsvtgj
+
+-20 User 20 user20@exLondon India Sales Gg4eeM2f 152083 0.2796520 4bCh4zWg
+
+-21 User 21 user21@exTokyo India Finance hk0tj7hQtj913510 0.5214737 uQ5Qw22c
+
+-22 User 22 user22@exNew York UK IT FexqT7i2Zp959850 0.2004013 6WLsCwBv
+
+-23 User 23 user23@exSydney Japan Ops wZdZL0KlV813108 0.0758993 ovnVvOjCS
+
+-24 User 24 user24@exLondon Germany Support I6go0j9fZK 175461 0.2702658 euHzFEtXjD
+
+-25 User 25 user25@exLondon Canada Ops eE9wvY61e582815 0.8325950 4E725SLTR
+
+-26 User 26 user26@exTokyo Japan Support vTlTmSLZK698910 0.0572326 63fo6sebU
+
+-27 User 27 user27@exDelhi UK Ops 001jLkp56y463742 0.6366096 cPF7y1qrq
+
+-28 User 28 user28@exTokyo India Ops JYMn1HVG185984 0.7516507 aFVmUW0
+
+-29 User 29 user29@exLondon India Sales kDD8aBkfu110478 0.8380068 e8DIRNwL
+
+-30 User 30 user30@exBerlin UK Ops vt3rlC8s2T 165682 0.4784513 cuF6nwLU
+
+-31 User 31 user31@exSydney Canada Ops Sy0TGdVhk300288 0.5455362 17YQUGbp
+
+-32 User 32 user32@exLondon Japan IT nuLK3hv5k932811 0.9327351 RGlzsAMoP
+
+-33 User 33 user33@exTokyo Australia Finance 8QxYNykpz732250 0.0841050 14ZKlRNVj4
+
+-34 User 34 user34@exNew York Germany IT WpY292GK120021 0.2129102 zWJnnfwsk
+
+-35 User 35 user35@exParis India IT Jc9UIcHT95631634 0.3495153 aLR8YGHPO
+
+-36 User 36 user36@exSydney Canada Ops JuxIUrhxzG858909 0.8466705 8LPabTH0o
+
+-37 User 37 user37@exBerlin Germany Ops f3VPwwbQ335553 0.8283657 xevCKmwR
+
+-38 User 38 use
+... (16587 more characters)
+
+```
+
+
+### XlsxIssue82_WideTable
+
+- **Case Metadata:** format: xlsx | case: XlsxIssue82_WideTable | scope: java-issue-xlsx
+- **Source:** tests/Issue_Files/xlsx/XlsxIssue82_WideTable.xlsx
+- **Text Similarity:** 0.9103
+- **Visual Average:** 0.7519
+- **Overall Score:** 0.8649
+- **Pages:** MiniPdf=13, Reference=13
+- **File Size:** MiniPdf=67131 bytes, Reference=467940 bytes
+
+Text Diff
+
+```diff
+--- minipdf/XlsxIssue82_WideTable.pdf
++++ reference/XlsxIssue82_WideTable.pdf
+@@ -1,110 +1,113 @@
+ Record ID First Name Last Name Street Address City Region Postal Code
+
+ ID-00001 Naveen Adhikari 1000 North Evergreen Avenue Suite 200 Kathmandu WA 98000
+
+ ID-00002 Alicia Patel 1001 North Evergreen Avenue Suite 201 Dublin BC 98001
+
+-ID-00003 Marcus Benne Ʃ 1002 North Evergreen Avenue Suite 202 Aus Ɵn WA 98002
+
++ID-00003 Marcus Bennett 1002 North Evergreen Avenue Suite 202 Austin WA 98002
+
+ ID-00004 Priya Olsen 1003 North Evergreen Avenue Suite 203 Berlin BC 98003
+
+ ID-00005 Daniel Chen 1004 North Evergreen Avenue Suite 204 Singapore WA 98004
+
+-ID-00006 Mei Tanaka 1005 North Evergreen Avenue Suite 205 Sea Ʃle BC 98005
+
+-ID-00007 Sofia Kim 1006 North Evergreen Avenue Suite 206 Melbourne WA 98006
+
++ID-00006 Mei Tanaka 1005 North Evergreen Avenue Suite 205 Seattle BC 98005
+
++ID-00007 Sofia Kim 1006 North Evergreen Avenue Suite 206 Melbourne WA 98006
+
+ ID-00008 Owen Morrison 1007 North Evergreen Avenue Suite 207 Toronto BC 98007
+
+ ID-00009 Ibrahim Rodriguez 1008 North Evergreen Avenue Suite 208 Kathmandu WA 98008
+
+ ID-00010 Caroline Singh 1009 North Evergreen Avenue Suite 209 Dublin BC 98009
+
+-ID-00011 Naveen Adhikari 1010 North Evergreen Avenue Suite 210 Aus Ɵn WA 98010
+
++ID-00011 Naveen Adhikari 1010 North Evergreen Avenue Suite 210 Austin WA 98010
+
+ ID-00012 Alicia Patel 1011 North Evergreen Avenue Suite 211 Berlin BC 98011
+
+-ID-00013 Marcus Benne Ʃ 1012 North Evergreen Avenue Suite 212 Singapore WA 98012
+
+-ID-00014 Priya Olsen 1013 North Evergreen Avenue Suite 213 Sea Ʃle BC 98013
+
++ID-00013 Marcus Bennett 1012 North Evergreen Avenue Suite 212 Singapore WA 98012
+
++ID-00014 Priya Olsen 1013 North Evergreen Avenue Suite 213 Seattle BC 98013
+
+ ID-00015 Daniel Chen 1014 North Evergreen Avenue Suite 214 Melbourne WA 98014
+
+ ID-00016 Mei Tanaka 1015 North Evergreen Avenue Suite 215 Toronto BC 98015
+
+-ID-00017 Sofia Kim 1016 North Evergreen Avenue Suite 216 Kathmandu WA 98016
+
++ID-00017 Sofia Kim 1016 North Evergreen Avenue Suite 216 Kathmandu WA 98016
+
+ ID-00018 Owen Morrison 1017 North Evergreen Avenue Suite 217 Dublin BC 98017
+
+-ID-00019 Ibrahim Rodriguez 1018 North Evergreen Avenue Suite 218 Aus Ɵn WA 98018
+
++ID-00019 Ibrahim Rodriguez 1018 North Evergreen Avenue Suite 218 Austin WA 98018
+
+ ID-00020 Caroline Singh 1019 North Evergreen Avenue Suite 219 Berlin BC 98019
+
+ ID-00021 Naveen Adhikari 1020 North Evergreen Avenue Suite 220 Singapore WA 98020
+
+-ID-00022 Alicia Patel 1021 North Evergreen Avenue Suite 221 Sea Ʃle BC 98021
+
+-ID-00023 Marcus Benne Ʃ 1022 North Evergreen Avenue Suite 222 Melbourne WA 98022
+
++ID-00022 Alicia Patel 1021 North Evergreen Avenue Suite 221 Seattle BC 98021
+
++ID-00023 Marcus Bennett 1022 North Evergreen Avenue Suite 222 Melbourne WA 98022
+
+ ID-00024 Priya Olsen 1023 North Evergreen Avenue Suite 223 Toronto BC 98023
+
+ ID-00025 Daniel Chen 1024 North Evergreen Avenue Suite 224 Kathmandu WA 98024
+
+ ID-00026 Mei Tanaka 1025 North
+... (9623 more characters)
+
+```
+
+
+## Improvement Suggestions
+
+### ⚠ Low-Score Test Cases (below 0.8)
+
+1. **Weekly schedule planner1** (score: 0.5007)
+1. **payroll-calculator_f** (score: 0.6288)
+1. **XlsxIssue82_5mb** (score: 0.6783)
+1. **Academic Achievement Summary Table** (score: 0.7143)
+1. **AcademicAchievement_temp** (score: 0.7143)
+1. **XlsxIssue82_SampleTestData5mb** (score: 0.7169)
+1. **Small business cash flow forecast1** (score: 0.7359)
+1. **PO_anonymized** (score: 0.7726)
+1. **Business plan checklist with SWOT analysis1** (score: 0.7761)
+1. **Simple invoice1** (score: 0.781)
+1. **Event budget1** (score: 0.7908)
+1. **Expense report basic1** (score: 0.791)
-All test cases scored 0.8 or above. 🎉
+Review the text diffs and visual comparisons above to identify specific rendering issues.
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Academic Achievement Summary Table_p1_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/Academic Achievement Summary Table_p1_heatmap.png
new file mode 100644
index 00000000..0f042fa0
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Academic Achievement Summary Table_p1_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Academic Achievement Summary Table_p1_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/Academic Achievement Summary Table_p1_libreoffice.png
new file mode 100644
index 00000000..09eeb56a
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Academic Achievement Summary Table_p1_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Academic Achievement Summary Table_p1_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/Academic Achievement Summary Table_p1_minipdf.png
new file mode 100644
index 00000000..c5e9975d
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Academic Achievement Summary Table_p1_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Academic Achievement Summary Table_p1_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/Academic Achievement Summary Table_p1_reference.png
new file mode 100644
index 00000000..258a8575
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Academic Achievement Summary Table_p1_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Academic Achievement Summary Table_p2_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/Academic Achievement Summary Table_p2_heatmap.png
new file mode 100644
index 00000000..fe26ad50
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Academic Achievement Summary Table_p2_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Academic Achievement Summary Table_p2_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/Academic Achievement Summary Table_p2_libreoffice.png
new file mode 100644
index 00000000..82a881d8
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Academic Achievement Summary Table_p2_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Academic Achievement Summary Table_p2_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/Academic Achievement Summary Table_p2_minipdf.png
new file mode 100644
index 00000000..225431a4
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Academic Achievement Summary Table_p2_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Academic Achievement Summary Table_p2_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/Academic Achievement Summary Table_p2_reference.png
new file mode 100644
index 00000000..6a0986f8
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Academic Achievement Summary Table_p2_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Academic Achievement Summary Table_p3_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/Academic Achievement Summary Table_p3_minipdf.png
new file mode 100644
index 00000000..3362e473
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Academic Achievement Summary Table_p3_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/AcademicAchievement_temp_p1_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/AcademicAchievement_temp_p1_heatmap.png
new file mode 100644
index 00000000..0f042fa0
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/AcademicAchievement_temp_p1_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/AcademicAchievement_temp_p1_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/AcademicAchievement_temp_p1_libreoffice.png
new file mode 100644
index 00000000..09eeb56a
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/AcademicAchievement_temp_p1_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/AcademicAchievement_temp_p1_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/AcademicAchievement_temp_p1_minipdf.png
new file mode 100644
index 00000000..c5e9975d
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/AcademicAchievement_temp_p1_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/AcademicAchievement_temp_p1_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/AcademicAchievement_temp_p1_reference.png
new file mode 100644
index 00000000..258a8575
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/AcademicAchievement_temp_p1_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/AcademicAchievement_temp_p2_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/AcademicAchievement_temp_p2_heatmap.png
new file mode 100644
index 00000000..fe26ad50
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/AcademicAchievement_temp_p2_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/AcademicAchievement_temp_p2_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/AcademicAchievement_temp_p2_libreoffice.png
new file mode 100644
index 00000000..82a881d8
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/AcademicAchievement_temp_p2_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/AcademicAchievement_temp_p2_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/AcademicAchievement_temp_p2_minipdf.png
new file mode 100644
index 00000000..225431a4
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/AcademicAchievement_temp_p2_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/AcademicAchievement_temp_p2_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/AcademicAchievement_temp_p2_reference.png
new file mode 100644
index 00000000..6a0986f8
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/AcademicAchievement_temp_p2_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/AcademicAchievement_temp_p3_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/AcademicAchievement_temp_p3_minipdf.png
new file mode 100644
index 00000000..3362e473
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/AcademicAchievement_temp_p3_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Business expense budget1_p1_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/Business expense budget1_p1_heatmap.png
new file mode 100644
index 00000000..47c25675
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Business expense budget1_p1_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Business expense budget1_p1_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/Business expense budget1_p1_libreoffice.png
new file mode 100644
index 00000000..80b47a27
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Business expense budget1_p1_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Business expense budget1_p1_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/Business expense budget1_p1_minipdf.png
new file mode 100644
index 00000000..85df7c9a
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Business expense budget1_p1_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Business expense budget1_p1_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/Business expense budget1_p1_reference.png
new file mode 100644
index 00000000..c39f9932
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Business expense budget1_p1_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Business expense budget1_p2_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/Business expense budget1_p2_heatmap.png
new file mode 100644
index 00000000..e3117f38
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Business expense budget1_p2_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Business expense budget1_p2_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/Business expense budget1_p2_libreoffice.png
new file mode 100644
index 00000000..e5fc8fe7
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Business expense budget1_p2_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Business expense budget1_p2_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/Business expense budget1_p2_minipdf.png
new file mode 100644
index 00000000..5555794a
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Business expense budget1_p2_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Business expense budget1_p2_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/Business expense budget1_p2_reference.png
new file mode 100644
index 00000000..8e6b40f5
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Business expense budget1_p2_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Business expense budget1_p3_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/Business expense budget1_p3_heatmap.png
new file mode 100644
index 00000000..eac684af
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Business expense budget1_p3_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Business expense budget1_p3_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/Business expense budget1_p3_libreoffice.png
new file mode 100644
index 00000000..9bbcd8a3
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Business expense budget1_p3_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Business expense budget1_p3_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/Business expense budget1_p3_minipdf.png
new file mode 100644
index 00000000..f33c48fd
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Business expense budget1_p3_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Business expense budget1_p3_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/Business expense budget1_p3_reference.png
new file mode 100644
index 00000000..eed71412
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Business expense budget1_p3_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Business expenses budget2_p1_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/Business expenses budget2_p1_heatmap.png
new file mode 100644
index 00000000..ed75b6d5
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Business expenses budget2_p1_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Business expenses budget2_p1_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/Business expenses budget2_p1_libreoffice.png
new file mode 100644
index 00000000..9a3f532c
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Business expenses budget2_p1_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Business expenses budget2_p1_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/Business expenses budget2_p1_minipdf.png
new file mode 100644
index 00000000..5710dd59
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Business expenses budget2_p1_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Business expenses budget2_p1_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/Business expenses budget2_p1_reference.png
new file mode 100644
index 00000000..3b0380a7
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Business expenses budget2_p1_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Business expenses budget2_p2_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/Business expenses budget2_p2_heatmap.png
new file mode 100644
index 00000000..0f4fed73
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Business expenses budget2_p2_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Business expenses budget2_p2_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/Business expenses budget2_p2_libreoffice.png
new file mode 100644
index 00000000..e1d26ab2
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Business expenses budget2_p2_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Business expenses budget2_p2_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/Business expenses budget2_p2_minipdf.png
new file mode 100644
index 00000000..1388dabf
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Business expenses budget2_p2_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Business expenses budget2_p2_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/Business expenses budget2_p2_reference.png
new file mode 100644
index 00000000..b6c913c0
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Business expenses budget2_p2_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Business expenses budget2_p3_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/Business expenses budget2_p3_heatmap.png
new file mode 100644
index 00000000..f4d2f72d
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Business expenses budget2_p3_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Business expenses budget2_p3_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/Business expenses budget2_p3_libreoffice.png
new file mode 100644
index 00000000..1f2ad150
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Business expenses budget2_p3_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Business expenses budget2_p3_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/Business expenses budget2_p3_minipdf.png
new file mode 100644
index 00000000..0120044c
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Business expenses budget2_p3_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Business expenses budget2_p3_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/Business expenses budget2_p3_reference.png
new file mode 100644
index 00000000..174fb5f8
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Business expenses budget2_p3_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Business plan checklist with SWOT analysis1_p1_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/Business plan checklist with SWOT analysis1_p1_heatmap.png
new file mode 100644
index 00000000..599223ab
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Business plan checklist with SWOT analysis1_p1_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Business plan checklist with SWOT analysis1_p1_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/Business plan checklist with SWOT analysis1_p1_libreoffice.png
new file mode 100644
index 00000000..ed79fb96
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Business plan checklist with SWOT analysis1_p1_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Business plan checklist with SWOT analysis1_p1_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/Business plan checklist with SWOT analysis1_p1_minipdf.png
new file mode 100644
index 00000000..0bdec1a0
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Business plan checklist with SWOT analysis1_p1_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Business plan checklist with SWOT analysis1_p1_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/Business plan checklist with SWOT analysis1_p1_reference.png
new file mode 100644
index 00000000..deb857d1
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Business plan checklist with SWOT analysis1_p1_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Event budget1_p1_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/Event budget1_p1_heatmap.png
new file mode 100644
index 00000000..73938358
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Event budget1_p1_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Event budget1_p1_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/Event budget1_p1_libreoffice.png
new file mode 100644
index 00000000..1177e230
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Event budget1_p1_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Event budget1_p1_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/Event budget1_p1_minipdf.png
new file mode 100644
index 00000000..cdf5e6ac
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Event budget1_p1_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Event budget1_p1_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/Event budget1_p1_reference.png
new file mode 100644
index 00000000..1177e230
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Event budget1_p1_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Event budget1_p2_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/Event budget1_p2_heatmap.png
new file mode 100644
index 00000000..b7436e37
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Event budget1_p2_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Event budget1_p2_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/Event budget1_p2_libreoffice.png
new file mode 100644
index 00000000..22654d15
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Event budget1_p2_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Event budget1_p2_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/Event budget1_p2_minipdf.png
new file mode 100644
index 00000000..2a748289
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Event budget1_p2_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Event budget1_p2_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/Event budget1_p2_reference.png
new file mode 100644
index 00000000..22654d15
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Event budget1_p2_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Event budget1_p3_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/Event budget1_p3_heatmap.png
new file mode 100644
index 00000000..22ec9f6f
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Event budget1_p3_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Event budget1_p3_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/Event budget1_p3_libreoffice.png
new file mode 100644
index 00000000..5f30bbf8
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Event budget1_p3_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Event budget1_p3_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/Event budget1_p3_minipdf.png
new file mode 100644
index 00000000..ec1df366
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Event budget1_p3_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Event budget1_p3_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/Event budget1_p3_reference.png
new file mode 100644
index 00000000..5f30bbf8
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Event budget1_p3_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Expense report basic1_p1_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/Expense report basic1_p1_heatmap.png
new file mode 100644
index 00000000..3ae2f181
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Expense report basic1_p1_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Expense report basic1_p1_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/Expense report basic1_p1_libreoffice.png
new file mode 100644
index 00000000..53df58b5
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Expense report basic1_p1_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Expense report basic1_p1_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/Expense report basic1_p1_minipdf.png
new file mode 100644
index 00000000..46dfc340
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Expense report basic1_p1_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Expense report basic1_p1_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/Expense report basic1_p1_reference.png
new file mode 100644
index 00000000..53df58b5
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Expense report basic1_p1_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Grocery list1_p1_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/Grocery list1_p1_heatmap.png
new file mode 100644
index 00000000..2833d1f7
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Grocery list1_p1_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Grocery list1_p1_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/Grocery list1_p1_libreoffice.png
new file mode 100644
index 00000000..4304bbfb
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Grocery list1_p1_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Grocery list1_p1_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/Grocery list1_p1_minipdf.png
new file mode 100644
index 00000000..7ea575d9
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Grocery list1_p1_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Grocery list1_p1_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/Grocery list1_p1_reference.png
new file mode 100644
index 00000000..bc75ae22
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Grocery list1_p1_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p1_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p1_heatmap.png
index 49b56d47..a783d3b4 100644
Binary files a/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p1_heatmap.png and b/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p1_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p1_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p1_libreoffice.png
index 8cac54a4..cd07b9fa 100644
Binary files a/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p1_libreoffice.png and b/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p1_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p1_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p1_minipdf.png
index 388de307..c74cf0f1 100644
Binary files a/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p1_minipdf.png and b/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p1_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p2_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p2_heatmap.png
index 2c9d9742..7b9c3fbe 100644
Binary files a/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p2_heatmap.png and b/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p2_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p2_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p2_libreoffice.png
index 532555d4..1060b344 100644
Binary files a/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p2_libreoffice.png and b/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p2_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p2_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p2_minipdf.png
index c1203a23..da21240e 100644
Binary files a/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p2_minipdf.png and b/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p2_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p3_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p3_heatmap.png
index c6e444eb..9c760c47 100644
Binary files a/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p3_heatmap.png and b/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p3_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p3_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p3_libreoffice.png
index 56ad74a8..996d7731 100644
Binary files a/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p3_libreoffice.png and b/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p3_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p3_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p3_minipdf.png
index d00cd427..b7ca2420 100644
Binary files a/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p3_minipdf.png and b/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p3_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p4_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p4_heatmap.png
deleted file mode 100644
index 963a23f5..00000000
Binary files a/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p4_heatmap.png and /dev/null differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p4_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p4_libreoffice.png
deleted file mode 100644
index 1dfdaf12..00000000
Binary files a/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p4_libreoffice.png and /dev/null differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p4_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p4_minipdf.png
deleted file mode 100644
index 8932d4c3..00000000
Binary files a/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p4_minipdf.png and /dev/null differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p4_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p4_reference.png
deleted file mode 100644
index a656ea30..00000000
Binary files a/artifacts/java-benchmark/issue/xlsx/report/images/Issue202609031340_p4_reference.png and /dev/null differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/PO_anonymized_p1_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/PO_anonymized_p1_heatmap.png
new file mode 100644
index 00000000..717cafe5
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/PO_anonymized_p1_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/PO_anonymized_p1_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/PO_anonymized_p1_libreoffice.png
new file mode 100644
index 00000000..6ab97c8d
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/PO_anonymized_p1_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/PO_anonymized_p1_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/PO_anonymized_p1_minipdf.png
new file mode 100644
index 00000000..78053551
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/PO_anonymized_p1_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/PO_anonymized_p1_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/PO_anonymized_p1_reference.png
new file mode 100644
index 00000000..699208b8
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/PO_anonymized_p1_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/PO_anonymized_p2_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/PO_anonymized_p2_heatmap.png
new file mode 100644
index 00000000..cf69d248
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/PO_anonymized_p2_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/PO_anonymized_p2_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/PO_anonymized_p2_libreoffice.png
new file mode 100644
index 00000000..2b74c1c4
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/PO_anonymized_p2_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/PO_anonymized_p2_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/PO_anonymized_p2_minipdf.png
new file mode 100644
index 00000000..b718f3c6
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/PO_anonymized_p2_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/PO_anonymized_p2_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/PO_anonymized_p2_reference.png
new file mode 100644
index 00000000..8f97089f
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/PO_anonymized_p2_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/PO_anonymized_p3_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/PO_anonymized_p3_heatmap.png
new file mode 100644
index 00000000..f7710261
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/PO_anonymized_p3_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/PO_anonymized_p3_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/PO_anonymized_p3_libreoffice.png
new file mode 100644
index 00000000..afcbe979
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/PO_anonymized_p3_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/PO_anonymized_p3_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/PO_anonymized_p3_minipdf.png
new file mode 100644
index 00000000..27df738c
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/PO_anonymized_p3_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/PO_anonymized_p3_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/PO_anonymized_p3_reference.png
new file mode 100644
index 00000000..e80fd724
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/PO_anonymized_p3_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Simple invoice1_p1_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/Simple invoice1_p1_heatmap.png
new file mode 100644
index 00000000..6bfc62e9
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Simple invoice1_p1_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Simple invoice1_p1_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/Simple invoice1_p1_libreoffice.png
new file mode 100644
index 00000000..81082d5b
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Simple invoice1_p1_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Simple invoice1_p1_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/Simple invoice1_p1_minipdf.png
new file mode 100644
index 00000000..ba7987f0
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Simple invoice1_p1_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Simple invoice1_p1_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/Simple invoice1_p1_reference.png
new file mode 100644
index 00000000..c77c31d6
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Simple invoice1_p1_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Small business cash flow forecast1_p1_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/Small business cash flow forecast1_p1_heatmap.png
new file mode 100644
index 00000000..e27d60c6
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Small business cash flow forecast1_p1_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Small business cash flow forecast1_p1_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/Small business cash flow forecast1_p1_libreoffice.png
new file mode 100644
index 00000000..2424d364
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Small business cash flow forecast1_p1_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Small business cash flow forecast1_p1_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/Small business cash flow forecast1_p1_minipdf.png
new file mode 100644
index 00000000..114a7ae3
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Small business cash flow forecast1_p1_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Small business cash flow forecast1_p1_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/Small business cash flow forecast1_p1_reference.png
new file mode 100644
index 00000000..4ddd7b38
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Small business cash flow forecast1_p1_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Small business cash flow forecast1_p2_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/Small business cash flow forecast1_p2_heatmap.png
new file mode 100644
index 00000000..9d82de0e
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Small business cash flow forecast1_p2_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Small business cash flow forecast1_p2_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/Small business cash flow forecast1_p2_libreoffice.png
new file mode 100644
index 00000000..4be00a43
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Small business cash flow forecast1_p2_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Small business cash flow forecast1_p2_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/Small business cash flow forecast1_p2_minipdf.png
new file mode 100644
index 00000000..010641d5
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Small business cash flow forecast1_p2_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Small business cash flow forecast1_p2_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/Small business cash flow forecast1_p2_reference.png
new file mode 100644
index 00000000..61d60588
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Small business cash flow forecast1_p2_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Small business cash flow forecast1_p3_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/Small business cash flow forecast1_p3_heatmap.png
new file mode 100644
index 00000000..d1e7158c
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Small business cash flow forecast1_p3_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Small business cash flow forecast1_p3_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/Small business cash flow forecast1_p3_libreoffice.png
new file mode 100644
index 00000000..23a9ced1
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Small business cash flow forecast1_p3_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Small business cash flow forecast1_p3_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/Small business cash flow forecast1_p3_minipdf.png
new file mode 100644
index 00000000..3362e473
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Small business cash flow forecast1_p3_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Small business cash flow forecast1_p3_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/Small business cash flow forecast1_p3_reference.png
new file mode 100644
index 00000000..4e8cee67
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Small business cash flow forecast1_p3_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Wedding_timeline_planner1_copy_p1_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/Wedding_timeline_planner1_copy_p1_heatmap.png
new file mode 100644
index 00000000..d578a41f
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Wedding_timeline_planner1_copy_p1_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Wedding_timeline_planner1_copy_p1_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/Wedding_timeline_planner1_copy_p1_libreoffice.png
new file mode 100644
index 00000000..e7bac153
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Wedding_timeline_planner1_copy_p1_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Wedding_timeline_planner1_copy_p1_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/Wedding_timeline_planner1_copy_p1_minipdf.png
new file mode 100644
index 00000000..81b8acf4
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Wedding_timeline_planner1_copy_p1_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Wedding_timeline_planner1_copy_p1_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/Wedding_timeline_planner1_copy_p1_reference.png
new file mode 100644
index 00000000..67c50500
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Wedding_timeline_planner1_copy_p1_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Wedding_timeline_planner1_copy_p2_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/Wedding_timeline_planner1_copy_p2_heatmap.png
new file mode 100644
index 00000000..d46a11de
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Wedding_timeline_planner1_copy_p2_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Wedding_timeline_planner1_copy_p2_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/Wedding_timeline_planner1_copy_p2_libreoffice.png
new file mode 100644
index 00000000..ee364ed2
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Wedding_timeline_planner1_copy_p2_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Wedding_timeline_planner1_copy_p2_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/Wedding_timeline_planner1_copy_p2_minipdf.png
new file mode 100644
index 00000000..6b9ef74a
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Wedding_timeline_planner1_copy_p2_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Wedding_timeline_planner1_copy_p2_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/Wedding_timeline_planner1_copy_p2_reference.png
new file mode 100644
index 00000000..c517909d
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Wedding_timeline_planner1_copy_p2_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Wedding_timeline_planner1_copy_p3_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/Wedding_timeline_planner1_copy_p3_heatmap.png
new file mode 100644
index 00000000..ef586d9b
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Wedding_timeline_planner1_copy_p3_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Wedding_timeline_planner1_copy_p3_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/Wedding_timeline_planner1_copy_p3_libreoffice.png
new file mode 100644
index 00000000..b7e9cceb
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Wedding_timeline_planner1_copy_p3_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Wedding_timeline_planner1_copy_p3_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/Wedding_timeline_planner1_copy_p3_minipdf.png
new file mode 100644
index 00000000..2080f43e
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Wedding_timeline_planner1_copy_p3_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Wedding_timeline_planner1_copy_p3_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/Wedding_timeline_planner1_copy_p3_reference.png
new file mode 100644
index 00000000..e73e3abc
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Wedding_timeline_planner1_copy_p3_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Weekly schedule planner1_p1_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/Weekly schedule planner1_p1_heatmap.png
new file mode 100644
index 00000000..15ed573e
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Weekly schedule planner1_p1_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Weekly schedule planner1_p1_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/Weekly schedule planner1_p1_libreoffice.png
new file mode 100644
index 00000000..38ffaa21
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Weekly schedule planner1_p1_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Weekly schedule planner1_p1_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/Weekly schedule planner1_p1_minipdf.png
new file mode 100644
index 00000000..46879d5e
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Weekly schedule planner1_p1_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Weekly schedule planner1_p1_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/Weekly schedule planner1_p1_reference.png
new file mode 100644
index 00000000..25840cb2
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Weekly schedule planner1_p1_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/Weekly schedule planner1_p2_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/Weekly schedule planner1_p2_minipdf.png
new file mode 100644
index 00000000..7bab67ed
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/Weekly schedule planner1_p2_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue75_p1_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue75_p1_heatmap.png
new file mode 100644
index 00000000..89e6d224
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue75_p1_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue75_p1_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue75_p1_libreoffice.png
new file mode 100644
index 00000000..a28aef24
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue75_p1_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue75_p1_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue75_p1_minipdf.png
new file mode 100644
index 00000000..5181b427
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue75_p1_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue75_p1_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue75_p1_reference.png
new file mode 100644
index 00000000..a28aef24
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue75_p1_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue75_p2_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue75_p2_heatmap.png
new file mode 100644
index 00000000..dd6d39c0
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue75_p2_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue75_p2_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue75_p2_libreoffice.png
new file mode 100644
index 00000000..de6558a8
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue75_p2_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue75_p2_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue75_p2_minipdf.png
new file mode 100644
index 00000000..690eeda0
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue75_p2_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue75_p2_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue75_p2_reference.png
new file mode 100644
index 00000000..de6558a8
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue75_p2_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue75_p3_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue75_p3_heatmap.png
new file mode 100644
index 00000000..002e2418
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue75_p3_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue75_p3_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue75_p3_libreoffice.png
new file mode 100644
index 00000000..f0b4814a
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue75_p3_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue75_p3_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue75_p3_minipdf.png
new file mode 100644
index 00000000..53730b73
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue75_p3_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue75_p3_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue75_p3_reference.png
new file mode 100644
index 00000000..f0b4814a
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue75_p3_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p1_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p1_heatmap.png
index dc81532d..6bd491f6 100644
Binary files a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p1_heatmap.png and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p1_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p1_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p1_minipdf.png
index 2d14691a..7fa6fa88 100644
Binary files a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p1_minipdf.png and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p1_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p2_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p2_heatmap.png
index 8fbc5e55..0eb22858 100644
Binary files a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p2_heatmap.png and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p2_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p2_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p2_minipdf.png
index 7a9b1486..eac6bfc9 100644
Binary files a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p2_minipdf.png and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p2_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p3_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p3_heatmap.png
index 0838f913..77b817e6 100644
Binary files a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p3_heatmap.png and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p3_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p3_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p3_minipdf.png
index 92865149..38324135 100644
Binary files a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p3_minipdf.png and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p3_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p4_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p4_heatmap.png
deleted file mode 100644
index da9ee6f5..00000000
Binary files a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p4_heatmap.png and /dev/null differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p4_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p4_libreoffice.png
deleted file mode 100644
index 053de176..00000000
Binary files a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p4_libreoffice.png and /dev/null differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p4_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p4_minipdf.png
deleted file mode 100644
index d5349ca8..00000000
Binary files a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p4_minipdf.png and /dev/null differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p4_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p4_reference.png
deleted file mode 100644
index 5060df90..00000000
Binary files a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p4_reference.png and /dev/null differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p5_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p5_heatmap.png
deleted file mode 100644
index 0aff8bb5..00000000
Binary files a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p5_heatmap.png and /dev/null differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p5_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p5_libreoffice.png
deleted file mode 100644
index 053de176..00000000
Binary files a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p5_libreoffice.png and /dev/null differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p5_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p5_minipdf.png
deleted file mode 100644
index ce8d67e2..00000000
Binary files a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p5_minipdf.png and /dev/null differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p5_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p5_reference.png
deleted file mode 100644
index 5060df90..00000000
Binary files a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p5_reference.png and /dev/null differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p6_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p6_heatmap.png
deleted file mode 100644
index 20375893..00000000
Binary files a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p6_heatmap.png and /dev/null differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p6_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p6_libreoffice.png
deleted file mode 100644
index f3783c5c..00000000
Binary files a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p6_libreoffice.png and /dev/null differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p6_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p6_minipdf.png
deleted file mode 100644
index d1a29fda..00000000
Binary files a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p6_minipdf.png and /dev/null differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p6_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p6_reference.png
deleted file mode 100644
index 4a68440b..00000000
Binary files a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template1_p6_reference.png and /dev/null differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template2_Workaround_p1_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template2_Workaround_p1_heatmap.png
new file mode 100644
index 00000000..1e57f3d2
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template2_Workaround_p1_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template2_Workaround_p1_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template2_Workaround_p1_libreoffice.png
new file mode 100644
index 00000000..2125323f
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template2_Workaround_p1_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template2_Workaround_p1_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template2_Workaround_p1_minipdf.png
new file mode 100644
index 00000000..b9fed297
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template2_Workaround_p1_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template2_Workaround_p1_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template2_Workaround_p1_reference.png
new file mode 100644
index 00000000..fe46b5e2
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template2_Workaround_p1_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template2_Workaround_p2_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template2_Workaround_p2_heatmap.png
new file mode 100644
index 00000000..09b59cca
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template2_Workaround_p2_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template2_Workaround_p2_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template2_Workaround_p2_libreoffice.png
new file mode 100644
index 00000000..123863ac
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template2_Workaround_p2_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template2_Workaround_p2_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template2_Workaround_p2_minipdf.png
new file mode 100644
index 00000000..917a1337
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template2_Workaround_p2_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template2_Workaround_p2_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template2_Workaround_p2_reference.png
new file mode 100644
index 00000000..62ef26af
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template2_Workaround_p2_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template2_Workaround_p3_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template2_Workaround_p3_heatmap.png
new file mode 100644
index 00000000..c82165ab
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template2_Workaround_p3_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template2_Workaround_p3_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template2_Workaround_p3_libreoffice.png
new file mode 100644
index 00000000..123863ac
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template2_Workaround_p3_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template2_Workaround_p3_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template2_Workaround_p3_minipdf.png
new file mode 100644
index 00000000..22295036
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template2_Workaround_p3_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template2_Workaround_p3_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template2_Workaround_p3_reference.png
new file mode 100644
index 00000000..62ef26af
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue77_Template2_Workaround_p3_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue81_LayoutOptions_p1_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue81_LayoutOptions_p1_heatmap.png
new file mode 100644
index 00000000..f0605a81
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue81_LayoutOptions_p1_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue81_LayoutOptions_p1_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue81_LayoutOptions_p1_libreoffice.png
new file mode 100644
index 00000000..3a53cf0c
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue81_LayoutOptions_p1_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue81_LayoutOptions_p1_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue81_LayoutOptions_p1_minipdf.png
new file mode 100644
index 00000000..e903bc59
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue81_LayoutOptions_p1_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue81_LayoutOptions_p1_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue81_LayoutOptions_p1_reference.png
new file mode 100644
index 00000000..936fd1c9
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue81_LayoutOptions_p1_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue81_LayoutOptions_p2_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue81_LayoutOptions_p2_heatmap.png
new file mode 100644
index 00000000..883e7960
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue81_LayoutOptions_p2_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue81_LayoutOptions_p2_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue81_LayoutOptions_p2_libreoffice.png
new file mode 100644
index 00000000..2a16c0be
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue81_LayoutOptions_p2_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue81_LayoutOptions_p2_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue81_LayoutOptions_p2_minipdf.png
new file mode 100644
index 00000000..ba21c8cd
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue81_LayoutOptions_p2_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue81_LayoutOptions_p2_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue81_LayoutOptions_p2_reference.png
new file mode 100644
index 00000000..5fa0264f
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue81_LayoutOptions_p2_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue81_LayoutOptions_p3_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue81_LayoutOptions_p3_heatmap.png
new file mode 100644
index 00000000..fd061d81
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue81_LayoutOptions_p3_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue81_LayoutOptions_p3_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue81_LayoutOptions_p3_libreoffice.png
new file mode 100644
index 00000000..3f26e3c7
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue81_LayoutOptions_p3_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue81_LayoutOptions_p3_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue81_LayoutOptions_p3_minipdf.png
new file mode 100644
index 00000000..8fd9d10c
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue81_LayoutOptions_p3_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue81_LayoutOptions_p3_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue81_LayoutOptions_p3_reference.png
new file mode 100644
index 00000000..bdeb7962
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue81_LayoutOptions_p3_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_5mb_p1_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_5mb_p1_heatmap.png
new file mode 100644
index 00000000..25dfaf1f
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_5mb_p1_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_5mb_p1_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_5mb_p1_libreoffice.png
new file mode 100644
index 00000000..e17d9853
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_5mb_p1_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_5mb_p1_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_5mb_p1_minipdf.png
new file mode 100644
index 00000000..5d90868e
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_5mb_p1_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_5mb_p1_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_5mb_p1_reference.png
new file mode 100644
index 00000000..e17d9853
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_5mb_p1_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_5mb_p2_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_5mb_p2_heatmap.png
new file mode 100644
index 00000000..6436feaa
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_5mb_p2_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_5mb_p2_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_5mb_p2_libreoffice.png
new file mode 100644
index 00000000..fea444df
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_5mb_p2_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_5mb_p2_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_5mb_p2_minipdf.png
new file mode 100644
index 00000000..d18661a7
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_5mb_p2_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_5mb_p2_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_5mb_p2_reference.png
new file mode 100644
index 00000000..fea444df
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_5mb_p2_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_5mb_p3_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_5mb_p3_heatmap.png
new file mode 100644
index 00000000..66a9fb8f
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_5mb_p3_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_5mb_p3_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_5mb_p3_libreoffice.png
new file mode 100644
index 00000000..d3b04f5b
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_5mb_p3_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_5mb_p3_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_5mb_p3_minipdf.png
new file mode 100644
index 00000000..8a091d54
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_5mb_p3_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_5mb_p3_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_5mb_p3_reference.png
new file mode 100644
index 00000000..d3b04f5b
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_5mb_p3_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_SampleTestData5mb_p1_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_SampleTestData5mb_p1_heatmap.png
new file mode 100644
index 00000000..fa3b65f0
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_SampleTestData5mb_p1_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_SampleTestData5mb_p1_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_SampleTestData5mb_p1_libreoffice.png
new file mode 100644
index 00000000..a91828af
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_SampleTestData5mb_p1_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_SampleTestData5mb_p1_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_SampleTestData5mb_p1_minipdf.png
new file mode 100644
index 00000000..428e356d
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_SampleTestData5mb_p1_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_SampleTestData5mb_p1_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_SampleTestData5mb_p1_reference.png
new file mode 100644
index 00000000..a91828af
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_SampleTestData5mb_p1_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_SampleTestData5mb_p2_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_SampleTestData5mb_p2_heatmap.png
new file mode 100644
index 00000000..95efc272
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_SampleTestData5mb_p2_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_SampleTestData5mb_p2_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_SampleTestData5mb_p2_libreoffice.png
new file mode 100644
index 00000000..2d094c51
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_SampleTestData5mb_p2_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_SampleTestData5mb_p2_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_SampleTestData5mb_p2_minipdf.png
new file mode 100644
index 00000000..5528a6c7
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_SampleTestData5mb_p2_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_SampleTestData5mb_p2_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_SampleTestData5mb_p2_reference.png
new file mode 100644
index 00000000..2d094c51
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_SampleTestData5mb_p2_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_SampleTestData5mb_p3_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_SampleTestData5mb_p3_heatmap.png
new file mode 100644
index 00000000..6da738aa
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_SampleTestData5mb_p3_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_SampleTestData5mb_p3_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_SampleTestData5mb_p3_libreoffice.png
new file mode 100644
index 00000000..00dc4e6f
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_SampleTestData5mb_p3_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_SampleTestData5mb_p3_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_SampleTestData5mb_p3_minipdf.png
new file mode 100644
index 00000000..c55c9b2f
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_SampleTestData5mb_p3_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_SampleTestData5mb_p3_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_SampleTestData5mb_p3_reference.png
new file mode 100644
index 00000000..00dc4e6f
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_SampleTestData5mb_p3_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_WideTable_p1_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_WideTable_p1_heatmap.png
new file mode 100644
index 00000000..83e61538
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_WideTable_p1_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_WideTable_p1_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_WideTable_p1_libreoffice.png
new file mode 100644
index 00000000..574b14b6
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_WideTable_p1_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_WideTable_p1_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_WideTable_p1_minipdf.png
new file mode 100644
index 00000000..d8bea8f5
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_WideTable_p1_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_WideTable_p1_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_WideTable_p1_reference.png
new file mode 100644
index 00000000..64a705b6
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_WideTable_p1_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_WideTable_p2_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_WideTable_p2_heatmap.png
new file mode 100644
index 00000000..f4463bb1
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_WideTable_p2_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_WideTable_p2_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_WideTable_p2_libreoffice.png
new file mode 100644
index 00000000..a91bb80b
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_WideTable_p2_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_WideTable_p2_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_WideTable_p2_minipdf.png
new file mode 100644
index 00000000..8d1fbe96
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_WideTable_p2_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_WideTable_p2_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_WideTable_p2_reference.png
new file mode 100644
index 00000000..0ad35071
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_WideTable_p2_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_WideTable_p3_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_WideTable_p3_heatmap.png
new file mode 100644
index 00000000..10a670c8
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_WideTable_p3_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_WideTable_p3_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_WideTable_p3_libreoffice.png
new file mode 100644
index 00000000..459e7f1f
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_WideTable_p3_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_WideTable_p3_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_WideTable_p3_minipdf.png
new file mode 100644
index 00000000..721ae6ce
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_WideTable_p3_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_WideTable_p3_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_WideTable_p3_reference.png
new file mode 100644
index 00000000..79c4fd5f
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/XlsxIssue82_WideTable_p3_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/payroll-calculator_f_p1_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/payroll-calculator_f_p1_heatmap.png
new file mode 100644
index 00000000..8b3b0c26
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/payroll-calculator_f_p1_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/payroll-calculator_f_p1_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/payroll-calculator_f_p1_libreoffice.png
new file mode 100644
index 00000000..cbbb4d4b
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/payroll-calculator_f_p1_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/payroll-calculator_f_p1_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/payroll-calculator_f_p1_minipdf.png
new file mode 100644
index 00000000..9fd0600c
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/payroll-calculator_f_p1_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/payroll-calculator_f_p1_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/payroll-calculator_f_p1_reference.png
new file mode 100644
index 00000000..3f799a25
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/payroll-calculator_f_p1_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/payroll-calculator_f_p2_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/payroll-calculator_f_p2_heatmap.png
new file mode 100644
index 00000000..3f4b0075
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/payroll-calculator_f_p2_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/payroll-calculator_f_p2_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/payroll-calculator_f_p2_libreoffice.png
new file mode 100644
index 00000000..ed5fe577
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/payroll-calculator_f_p2_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/payroll-calculator_f_p2_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/payroll-calculator_f_p2_minipdf.png
new file mode 100644
index 00000000..3f674bc1
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/payroll-calculator_f_p2_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/payroll-calculator_f_p2_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/payroll-calculator_f_p2_reference.png
new file mode 100644
index 00000000..17e30902
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/payroll-calculator_f_p2_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/payroll-calculator_f_p3_heatmap.png b/artifacts/java-benchmark/issue/xlsx/report/images/payroll-calculator_f_p3_heatmap.png
new file mode 100644
index 00000000..2dce61d2
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/payroll-calculator_f_p3_heatmap.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/payroll-calculator_f_p3_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/images/payroll-calculator_f_p3_libreoffice.png
new file mode 100644
index 00000000..ddd27d0b
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/payroll-calculator_f_p3_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/payroll-calculator_f_p3_minipdf.png b/artifacts/java-benchmark/issue/xlsx/report/images/payroll-calculator_f_p3_minipdf.png
new file mode 100644
index 00000000..fc83a2e6
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/payroll-calculator_f_p3_minipdf.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/images/payroll-calculator_f_p3_reference.png b/artifacts/java-benchmark/issue/xlsx/report/images/payroll-calculator_f_p3_reference.png
new file mode 100644
index 00000000..fcda8374
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/images/payroll-calculator_f_p3_reference.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Academic Achievement Summary Table_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Academic Achievement Summary Table_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..693abab9
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Academic Achievement Summary Table_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Academic Achievement Summary Table_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Academic Achievement Summary Table_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..7bcb6e31
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Academic Achievement Summary Table_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/AcademicAchievement_temp_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/AcademicAchievement_temp_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..693abab9
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/AcademicAchievement_temp_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/AcademicAchievement_temp_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/AcademicAchievement_temp_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..7bcb6e31
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/AcademicAchievement_temp_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Business expense budget1_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Business expense budget1_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..05d1776c
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Business expense budget1_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Business expense budget1_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Business expense budget1_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..ab120c1d
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Business expense budget1_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Business expense budget1_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Business expense budget1_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..2472fcdb
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Business expense budget1_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Business expenses budget2_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Business expenses budget2_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..7802f806
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Business expenses budget2_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Business expenses budget2_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Business expenses budget2_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..4989ff05
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Business expenses budget2_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Business expenses budget2_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Business expenses budget2_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..18ba5ab8
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Business expenses budget2_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Business plan checklist with SWOT analysis1_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Business plan checklist with SWOT analysis1_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..2a4eadee
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Business plan checklist with SWOT analysis1_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Event budget1_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Event budget1_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..f8c516e4
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Event budget1_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Event budget1_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Event budget1_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..02f880c4
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Event budget1_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Event budget1_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Event budget1_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..2ab1a44c
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Event budget1_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Expense report basic1_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Expense report basic1_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..174d928d
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Expense report basic1_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Grocery list1_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Grocery list1_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..d5e337c0
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Grocery list1_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Issue202609031340_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Issue202609031340_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
index 273d4c3e..e5f9ca94 100644
Binary files a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Issue202609031340_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Issue202609031340_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Issue202609031340_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Issue202609031340_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
index 66f2e323..550b6c5c 100644
Binary files a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Issue202609031340_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Issue202609031340_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Issue202609031340_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Issue202609031340_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
index c10e2cc6..efae475b 100644
Binary files a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Issue202609031340_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Issue202609031340_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Issue202609031340_p4_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Issue202609031340_p4_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
deleted file mode 100644
index 251fcd62..00000000
Binary files a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Issue202609031340_p4_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png and /dev/null differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/PO_anonymized_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/PO_anonymized_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..7addb121
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/PO_anonymized_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/PO_anonymized_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/PO_anonymized_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..b9de14c9
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/PO_anonymized_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/PO_anonymized_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/PO_anonymized_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..6d00fc3c
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/PO_anonymized_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Simple invoice1_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Simple invoice1_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..9a4978b1
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Simple invoice1_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Small business cash flow forecast1_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Small business cash flow forecast1_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..8de73c6a
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Small business cash flow forecast1_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Small business cash flow forecast1_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Small business cash flow forecast1_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..9a6e8678
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Small business cash flow forecast1_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Small business cash flow forecast1_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Small business cash flow forecast1_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..7508756c
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Small business cash flow forecast1_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Wedding_timeline_planner1_copy_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Wedding_timeline_planner1_copy_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..919989f2
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Wedding_timeline_planner1_copy_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Wedding_timeline_planner1_copy_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Wedding_timeline_planner1_copy_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..168e55b9
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Wedding_timeline_planner1_copy_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Wedding_timeline_planner1_copy_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Wedding_timeline_planner1_copy_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..0233bc13
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Wedding_timeline_planner1_copy_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Weekly schedule planner1_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Weekly schedule planner1_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..69eb0a1d
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/Weekly schedule planner1_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue75_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue75_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..03163996
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue75_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue75_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue75_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..4b209e48
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue75_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue75_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue75_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..3c659042
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue75_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue77_Template1_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue77_Template1_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
index 7eb89464..1f8524cb 100644
Binary files a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue77_Template1_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue77_Template1_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue77_Template1_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue77_Template1_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
index 1e9d0b6b..8b2788aa 100644
Binary files a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue77_Template1_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue77_Template1_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue77_Template1_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue77_Template1_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
index 52103f1c..ffc057f7 100644
Binary files a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue77_Template1_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue77_Template1_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue77_Template1_p4_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue77_Template1_p4_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
deleted file mode 100644
index 732e37ed..00000000
Binary files a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue77_Template1_p4_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png and /dev/null differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue77_Template1_p5_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue77_Template1_p5_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
deleted file mode 100644
index fe8d328c..00000000
Binary files a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue77_Template1_p5_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png and /dev/null differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue77_Template1_p6_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue77_Template1_p6_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
deleted file mode 100644
index 66c2e3ac..00000000
Binary files a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue77_Template1_p6_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png and /dev/null differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue77_Template2_Workaround_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue77_Template2_Workaround_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..11cf9f7c
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue77_Template2_Workaround_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue77_Template2_Workaround_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue77_Template2_Workaround_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..dc7fdb4f
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue77_Template2_Workaround_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue77_Template2_Workaround_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue77_Template2_Workaround_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..b0197b2c
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue77_Template2_Workaround_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue81_LayoutOptions_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue81_LayoutOptions_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..a7d63fef
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue81_LayoutOptions_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue81_LayoutOptions_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue81_LayoutOptions_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..3f010707
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue81_LayoutOptions_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue81_LayoutOptions_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue81_LayoutOptions_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..42308269
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue81_LayoutOptions_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue82_5mb_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue82_5mb_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..a53cfe11
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue82_5mb_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue82_5mb_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue82_5mb_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..e49a9acc
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue82_5mb_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue82_5mb_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue82_5mb_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..caa77473
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue82_5mb_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue82_SampleTestData5mb_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue82_SampleTestData5mb_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..f1706b4f
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue82_SampleTestData5mb_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue82_SampleTestData5mb_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue82_SampleTestData5mb_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..587de530
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue82_SampleTestData5mb_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue82_SampleTestData5mb_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue82_SampleTestData5mb_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..dd65e8bc
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue82_SampleTestData5mb_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue82_WideTable_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue82_WideTable_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..f668c73a
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue82_WideTable_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue82_WideTable_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue82_WideTable_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..f6c87f43
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue82_WideTable_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue82_WideTable_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue82_WideTable_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..8f19f749
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/XlsxIssue82_WideTable_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/payroll-calculator_f_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/payroll-calculator_f_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..54e45656
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/payroll-calculator_f_p1_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/payroll-calculator_f_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/payroll-calculator_f_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..7f08d5f0
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/payroll-calculator_f_p2_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/artifacts/java-benchmark/issue/xlsx/report/side-by-side/payroll-calculator_f_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/payroll-calculator_f_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png
new file mode 100644
index 00000000..0fb7b2f5
Binary files /dev/null and b/artifacts/java-benchmark/issue/xlsx/report/side-by-side/payroll-calculator_f_p3_java_minipdf_vs_microsoft_365_excel_reference_vs_libreoffice.png differ
diff --git a/documents/README.fr.md b/documents/README.fr.md
index 80a53988..af49f22e 100644
--- a/documents/README.fr.md
+++ b/documents/README.fr.md
@@ -85,7 +85,7 @@ Le [guide Rust](../minipdf-rs/README.md) décrit l'API du crate, la CLI, les fon
io.github.mini-software
minipdf
- 0.1.4
+ 0.1.5
```
diff --git a/documents/README.it.md b/documents/README.it.md
index fe0a9325..31b32c85 100644
--- a/documents/README.it.md
+++ b/documents/README.it.md
@@ -85,7 +85,7 @@ La [guida Rust](../minipdf-rs/README.md) descrive API del crate, CLI, funzionali
io.github.mini-software
minipdf
- 0.1.4
+ 0.1.5
```
diff --git a/documents/README.ja.md b/documents/README.ja.md
index 68d78a4c..8456377e 100644
--- a/documents/README.ja.md
+++ b/documents/README.ja.md
@@ -85,7 +85,7 @@ minipdf report.docx -o report.pdf
io.github.mini-software
minipdf
- 0.1.4
+ 0.1.5
```
diff --git a/documents/README.ko.md b/documents/README.ko.md
index 1548c213..33fece3c 100644
--- a/documents/README.ko.md
+++ b/documents/README.ko.md
@@ -85,7 +85,7 @@ minipdf report.docx -o report.pdf
io.github.mini-software
minipdf
- 0.1.4
+ 0.1.5
```
diff --git a/documents/README.zh-CN.md b/documents/README.zh-CN.md
index 6867845b..51991c87 100644
--- a/documents/README.zh-CN.md
+++ b/documents/README.zh-CN.md
@@ -85,7 +85,7 @@ minipdf report.docx -o report.pdf
io.github.mini-software
minipdf
- 0.1.4
+ 0.1.5
```
diff --git a/documents/README.zh-TW.md b/documents/README.zh-TW.md
index 0bb2a872..25c9df3e 100644
--- a/documents/README.zh-TW.md
+++ b/documents/README.zh-TW.md
@@ -85,7 +85,7 @@ minipdf report.docx -o report.pdf
io.github.mini-software
minipdf
- 0.1.4
+ 0.1.5
```
diff --git a/minipdf-java/README.md b/minipdf-java/README.md
index 233a5c49..1b83b6f1 100644
--- a/minipdf-java/README.md
+++ b/minipdf-java/README.md
@@ -11,7 +11,7 @@ The library is available from Maven Central:
io.github.mini-software
minipdf
- 0.1.4
+ 0.1.5
```
@@ -40,14 +40,14 @@ Download the executable JAR with Maven:
```powershell
mvn dependency:copy `
- -Dartifact=io.github.mini-software:minipdf-cli:0.1.4 `
+ -Dartifact=io.github.mini-software:minipdf-cli:0.1.5 `
-DoutputDirectory=.
```
Convert a document:
```powershell
-java -jar minipdf-cli-0.1.4.jar input.pptx -o output.pdf
+java -jar minipdf-cli-0.1.5.jar input.pptx -o output.pdf
```
The CLI accepts `.docx`, `.xlsx`, and `.pptx` files. Run it with `--help` for
diff --git a/minipdf-java/minipdf-cli/pom.xml b/minipdf-java/minipdf-cli/pom.xml
index a6a4ade3..27b5bed1 100644
--- a/minipdf-java/minipdf-cli/pom.xml
+++ b/minipdf-java/minipdf-cli/pom.xml
@@ -7,7 +7,7 @@
io.github.mini-software
minipdf-java-parent
- 0.1.4
+ 0.1.5
minipdf-cli
diff --git a/minipdf-java/minipdf-cli/src/main/java/io/github/minisoftware/minipdf/cli/MiniPdfCommand.java b/minipdf-java/minipdf-cli/src/main/java/io/github/minisoftware/minipdf/cli/MiniPdfCommand.java
index f515651a..d5041d8e 100644
--- a/minipdf-java/minipdf-cli/src/main/java/io/github/minisoftware/minipdf/cli/MiniPdfCommand.java
+++ b/minipdf-java/minipdf-cli/src/main/java/io/github/minisoftware/minipdf/cli/MiniPdfCommand.java
@@ -20,7 +20,7 @@
@Command(
name = "minipdf",
- version = "minipdf-java 0.1.4",
+ version = "minipdf-java 0.1.5",
description = "Convert XLSX, DOCX, and PPTX files to PDF with the Java MiniPdf engine.",
mixinStandardHelpOptions = true,
subcommands = MiniPdfCommand.ConvertCommand.class)
diff --git a/minipdf-java/minipdf/pom.xml b/minipdf-java/minipdf/pom.xml
index 9e8ff2a8..4ccbb6e8 100644
--- a/minipdf-java/minipdf/pom.xml
+++ b/minipdf-java/minipdf/pom.xml
@@ -7,7 +7,7 @@
io.github.mini-software
minipdf-java-parent
- 0.1.4
+ 0.1.5
minipdf
diff --git a/minipdf-java/minipdf/src/main/java/io/github/minisoftware/minipdf/internal/xlsx/PoiXlsxRenderer.java b/minipdf-java/minipdf/src/main/java/io/github/minisoftware/minipdf/internal/xlsx/PoiXlsxRenderer.java
index 0550265d..cc2bac6a 100644
--- a/minipdf-java/minipdf/src/main/java/io/github/minisoftware/minipdf/internal/xlsx/PoiXlsxRenderer.java
+++ b/minipdf-java/minipdf/src/main/java/io/github/minisoftware/minipdf/internal/xlsx/PoiXlsxRenderer.java
@@ -16,6 +16,7 @@
import org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject;
import org.apache.pdfbox.pdmodel.font.Standard14Fonts;
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
+import org.apache.pdfbox.pdmodel.graphics.state.PDExtendedGraphicsState;
import org.apache.pdfbox.util.Matrix;
import org.apache.poi.hemf.usermodel.HemfPicture;
import org.apache.pdfbox.pdmodel.graphics.state.RenderingMode;
@@ -26,16 +27,21 @@
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.DataFormatter;
+import org.apache.poi.ss.usermodel.DifferentialStyleProvider;
import org.apache.poi.ss.usermodel.FillPatternType;
import org.apache.poi.ss.usermodel.FormulaEvaluator;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.Name;
import org.apache.poi.ss.usermodel.PageMargin;
+import org.apache.poi.ss.usermodel.PatternFormatting;
import org.apache.poi.ss.usermodel.PrintSetup;
import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.TableStyleInfo;
+import org.apache.poi.ss.usermodel.TableStyleType;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.apache.poi.ss.util.AreaReference;
import org.apache.poi.ss.util.CellRangeAddress;
+import org.apache.poi.ss.util.CellRangeAddressBase;
import org.apache.poi.ss.util.CellReference;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
@@ -45,8 +51,23 @@
import org.apache.poi.xssf.usermodel.XSSFPicture;
import org.apache.poi.xssf.usermodel.XSSFPrintSetup;
import org.apache.poi.xssf.usermodel.XSSFShape;
+import org.apache.poi.xssf.usermodel.XSSFShapeGroup;
+import org.apache.poi.xssf.usermodel.XSSFSimpleShape;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.apache.xmlbeans.XmlCursor;
+import org.apache.xmlbeans.XmlObject;
+import org.openxmlformats.schemas.drawingml.x2006.main.CTAdjPoint2D;
+import org.openxmlformats.schemas.drawingml.x2006.main.CTGroupTransform2D;
+import org.openxmlformats.schemas.drawingml.x2006.main.CTPath2D;
+import org.openxmlformats.schemas.drawingml.x2006.main.CTPath2DClose;
+import org.openxmlformats.schemas.drawingml.x2006.main.CTPath2DCubicBezierTo;
+import org.openxmlformats.schemas.drawingml.x2006.main.CTPath2DLineTo;
+import org.openxmlformats.schemas.drawingml.x2006.main.CTPath2DMoveTo;
+import org.openxmlformats.schemas.drawingml.x2006.main.CTPath2DQuadBezierTo;
+import org.openxmlformats.schemas.drawingml.x2006.main.CTShapeProperties;
+import org.openxmlformats.schemas.drawingml.x2006.main.CTSRgbColor;
+import org.openxmlformats.schemas.drawingml.x2006.main.CTTransform2D;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTDefinedName;
import java.awt.Color;
@@ -258,6 +279,7 @@ private static void renderPage(
drawCell(
content,
style,
+ tableFill(sheet, rowIndex, column),
x,
cellTop - textHeight,
textWidth,
@@ -269,6 +291,7 @@ private static void renderPage(
sheet,
merge,
style,
+ tableFill(sheet, rowIndex, column),
x,
cellTop - textHeight,
textWidth,
@@ -347,18 +370,20 @@ private static void renderPage(
private static void drawCell(
PDPageContentStream content,
XSSFCellStyle style,
+ Color tableFill,
float x,
float y,
float width,
float height,
float borderScale) throws IOException {
+ Color fill = tableFill;
if (style != null && style.getFillPattern() == FillPatternType.SOLID_FOREGROUND) {
- Color fill = color(style.getFillForegroundXSSFColor(), null);
- if (fill != null) {
- content.setNonStrokingColor(fill);
- content.addRect(x, y, width, height);
- content.fill();
- }
+ fill = color(style.getFillForegroundXSSFColor(), fill);
+ }
+ if (fill != null) {
+ content.setNonStrokingColor(fill);
+ content.addRect(x, y, width, height);
+ content.fill();
}
if (style == null) {
return;
@@ -374,18 +399,20 @@ private static void drawMergedCell(
XSSFSheet sheet,
CellRangeAddress merge,
XSSFCellStyle style,
+ Color tableFill,
float x,
float y,
float width,
float height,
float borderScale) throws IOException {
+ Color fill = tableFill;
if (style != null && style.getFillPattern() == FillPatternType.SOLID_FOREGROUND) {
- Color fill = color(style.getFillForegroundXSSFColor(), null);
- if (fill != null) {
- content.setNonStrokingColor(fill);
- content.addRect(x, y, width, height);
- content.fill();
- }
+ fill = color(style.getFillForegroundXSSFColor(), fill);
+ }
+ if (fill != null) {
+ content.setNonStrokingColor(fill);
+ content.addRect(x, y, width, height);
+ content.fill();
}
BorderEdge top = mergedBorder(sheet, merge, BorderSide.TOP);
BorderEdge bottom = mergedBorder(sheet, merge, BorderSide.BOTTOM);
@@ -397,6 +424,47 @@ private static void drawMergedCell(
drawBorder(content, right.style(), right.color(), x + width, y, x + width, y + height, borderScale);
}
+ private static Color tableFill(XSSFSheet sheet, int rowIndex, int columnIndex) {
+ CellReference cell = new CellReference(sheet.getSheetName(), rowIndex, columnIndex, true, true);
+ Color fill = null;
+ for (var table : sheet.getTables()) {
+ if (!table.contains(cell)) {
+ continue;
+ }
+ TableStyleInfo styleInfo = table.getStyle();
+ if (styleInfo == null || styleInfo.getStyle() == null) {
+ continue;
+ }
+ for (TableStyleType type : TableStyleType.values()) {
+ DifferentialStyleProvider style = styleInfo.getStyle().getStyle(type);
+ CellRangeAddressBase range = type.getRange(table, cell);
+ if (style == null || range == null || !range.isInRange(rowIndex, columnIndex)) {
+ continue;
+ }
+ PatternFormatting pattern = style.getPatternFormatting();
+ if (pattern == null) {
+ continue;
+ }
+ org.apache.poi.ss.usermodel.Color background = pattern.getFillBackgroundColorColor();
+ org.apache.poi.ss.usermodel.Color foreground = pattern.getFillForegroundColorColor();
+ if (background instanceof XSSFColor xssfColor) {
+ resolveThemeColor(sheet.getWorkbook(), xssfColor);
+ fill = color(xssfColor, fill);
+ } else if (foreground instanceof XSSFColor xssfColor) {
+ resolveThemeColor(sheet.getWorkbook(), xssfColor);
+ fill = color(xssfColor, fill);
+ }
+ }
+ }
+ return fill;
+ }
+
+ private static void resolveThemeColor(XSSFWorkbook workbook, XSSFColor color) {
+ if (workbook.getStylesSource().getTheme() != null) {
+ workbook.getStylesSource().getTheme().inheritFromThemeAsRequired(color);
+ }
+ }
+
private static BorderEdge mergedBorder(
XSSFSheet sheet,
CellRangeAddress merge,
@@ -549,33 +617,38 @@ private static void drawPictures(
XSSFDrawing drawing = sheet.getDrawingPatriarch();
if (drawing != null) {
for (XSSFShape shape : drawing.getShapes()) {
- if (!(shape instanceof XSSFPicture picture)) {
- continue;
- }
- XSSFClientAnchor anchor = picture.getClientAnchor();
- if (anchor == null || anchor.getRow1() < startRow || anchor.getRow1() > endRow) {
- continue;
- }
- try {
- PDImageXObject image = PDImageXObject.createFromByteArray(
- document,
- picture.getPictureData().getData(),
- picture.getShapeName());
- float x = geometry.marginLeft() + horizontalOffset
- + columnsBefore(columnWidths, area.getFirstColumn(), anchor.getCol1()) * horizontalScale
- + anchor.getDx1() / EMU_PER_POINT * horizontalScale;
- float top = geometry.layoutHeight() - geometry.marginTop() - centerOffset
- - rowsBefore(sheet, startRow, anchor.getRow1()) * scale
- - anchor.getDy1() / EMU_PER_POINT * scale;
- float width = (columnsBefore(columnWidths, area.getFirstColumn(), anchor.getCol2())
- - columnsBefore(columnWidths, area.getFirstColumn(), anchor.getCol1())) * horizontalScale
- + (anchor.getDx2() - anchor.getDx1()) / EMU_PER_POINT * horizontalScale;
- float height = rowsBefore(sheet, anchor.getRow1(), anchor.getRow2()) * scale
- + (anchor.getDy2() - anchor.getDy1()) / EMU_PER_POINT * scale;
- if (width > 0.0f && height > 0.0f) {
- content.drawImage(image, x, top - height, width, height);
+ if (shape instanceof XSSFPicture picture) {
+ XSSFClientAnchor anchor = picture.getClientAnchor();
+ if (anchor == null || anchor.getRow1() < startRow || anchor.getRow1() > endRow) {
+ continue;
}
- } catch (IllegalArgumentException ignored) {
+ drawPicture(document, content, picture, pictureBounds(
+ sheet,
+ area,
+ columnWidths,
+ startRow,
+ scale,
+ horizontalScale,
+ geometry,
+ horizontalOffset,
+ centerOffset,
+ anchor));
+ } else if (shape instanceof XSSFShapeGroup group) {
+ drawShapeGroup(
+ document,
+ content,
+ drawing,
+ group,
+ sheet,
+ area,
+ columnWidths,
+ startRow,
+ endRow,
+ scale,
+ horizontalScale,
+ geometry,
+ horizontalOffset,
+ centerOffset);
}
}
}
@@ -642,6 +715,224 @@ private static void drawLegacyPicture(
}
}
+ private static void drawShapeGroup(
+ PDDocument document,
+ PDPageContentStream content,
+ XSSFDrawing drawing,
+ XSSFShapeGroup group,
+ XSSFSheet sheet,
+ CellRangeAddress area,
+ float[] columnWidths,
+ int startRow,
+ int endRow,
+ float scale,
+ float horizontalScale,
+ PageGeometry geometry,
+ float horizontalOffset,
+ float centerOffset) throws IOException {
+ if (!(group.getAnchor() instanceof XSSFClientAnchor anchor)
+ || anchor.getRow1() < startRow
+ || anchor.getRow1() > endRow) {
+ return;
+ }
+ ShapeBounds groupBounds = pictureBounds(
+ sheet,
+ area,
+ columnWidths,
+ startRow,
+ scale,
+ horizontalScale,
+ geometry,
+ horizontalOffset,
+ centerOffset,
+ anchor);
+ CTGroupTransform2D groupTransform = group.getCTGroupShape().getGrpSpPr().getXfrm();
+ if (groupTransform == null
+ || groupTransform.getChExt().getCx() == 0
+ || groupTransform.getChExt().getCy() == 0) {
+ return;
+ }
+ for (XSSFShape child : drawing.getShapes(group)) {
+ CTTransform2D childTransform;
+ if (child instanceof XSSFPicture picture && picture.getCTPicture().getSpPr().isSetXfrm()) {
+ childTransform = picture.getCTPicture().getSpPr().getXfrm();
+ } else if (child instanceof XSSFSimpleShape simpleShape
+ && simpleShape.getCTShape().getSpPr().isSetXfrm()) {
+ childTransform = simpleShape.getCTShape().getSpPr().getXfrm();
+ } else {
+ continue;
+ }
+ float relativeX = (coordinate(childTransform.getOff().getX())
+ - coordinate(groupTransform.getChOff().getX()))
+ / groupTransform.getChExt().getCx();
+ float relativeY = (coordinate(childTransform.getOff().getY())
+ - coordinate(groupTransform.getChOff().getY()))
+ / groupTransform.getChExt().getCy();
+ ShapeBounds childBounds = new ShapeBounds(
+ groupBounds.x() + relativeX * groupBounds.width(),
+ groupBounds.top() - relativeY * groupBounds.height(),
+ (float) childTransform.getExt().getCx() / groupTransform.getChExt().getCx() * groupBounds.width(),
+ (float) childTransform.getExt().getCy() / groupTransform.getChExt().getCy() * groupBounds.height());
+ if (child instanceof XSSFPicture picture) {
+ drawPicture(document, content, picture, childBounds);
+ } else if (child instanceof XSSFSimpleShape simpleShape) {
+ drawCustomShape(content, simpleShape, childBounds);
+ }
+ }
+ }
+
+ private static float coordinate(Object value) {
+ return value instanceof Number number
+ ? number.floatValue()
+ : Float.parseFloat(value.toString());
+ }
+
+ private static void drawCustomShape(
+ PDPageContentStream content,
+ XSSFSimpleShape shape,
+ ShapeBounds bounds) throws IOException {
+ CTShapeProperties properties = shape.getCTShape().getSpPr();
+ if (!properties.isSetCustGeom() || !properties.isSetSolidFill()
+ || !properties.getSolidFill().isSetSrgbClr()) {
+ return;
+ }
+ CTSRgbColor rgb = properties.getSolidFill().getSrgbClr();
+ byte[] value = rgb.getVal();
+ if (value == null || value.length < 3) {
+ return;
+ }
+ float alpha = rgb.sizeOfAlphaArray() == 0
+ ? 1.0f
+ : coordinate(rgb.getAlphaArray(0).getVal()) / 100_000.0f;
+ content.saveGraphicsState();
+ try {
+ content.setNonStrokingColor(new Color(
+ Byte.toUnsignedInt(value[0]),
+ Byte.toUnsignedInt(value[1]),
+ Byte.toUnsignedInt(value[2])));
+ PDExtendedGraphicsState graphicsState = new PDExtendedGraphicsState();
+ graphicsState.setNonStrokingAlphaConstant(alpha);
+ content.setGraphicsStateParameters(graphicsState);
+ for (CTPath2D path : properties.getCustGeom().getPathLst().getPathArray()) {
+ float pathWidth = path.getW() > 0 ? path.getW() : 1.0f;
+ float pathHeight = path.getH() > 0 ? path.getH() : 1.0f;
+ boolean hasSegments = false;
+ try (XmlCursor cursor = path.newCursor()) {
+ if (cursor.toFirstChild()) {
+ do {
+ XmlObject segment = cursor.getObject();
+ if (segment instanceof CTPath2DMoveTo move) {
+ moveTo(content, move.getPt(), bounds, pathWidth, pathHeight);
+ hasSegments = true;
+ } else if (segment instanceof CTPath2DLineTo line) {
+ lineTo(content, line.getPt(), bounds, pathWidth, pathHeight);
+ } else if (segment instanceof CTPath2DQuadBezierTo quadratic) {
+ CTAdjPoint2D control = quadratic.getPtArray(0);
+ CTAdjPoint2D end = quadratic.getPtArray(1);
+ float currentX = shapeX(bounds, coordinate(control.getX()), pathWidth);
+ float currentY = shapeY(bounds, coordinate(control.getY()), pathHeight);
+ float endX = shapeX(bounds, coordinate(end.getX()), pathWidth);
+ float endY = shapeY(bounds, coordinate(end.getY()), pathHeight);
+ content.curveTo1(currentX, currentY, endX, endY);
+ } else if (segment instanceof CTPath2DCubicBezierTo cubic) {
+ CTAdjPoint2D first = cubic.getPtArray(0);
+ CTAdjPoint2D second = cubic.getPtArray(1);
+ CTAdjPoint2D end = cubic.getPtArray(2);
+ content.curveTo(
+ shapeX(bounds, coordinate(first.getX()), pathWidth),
+ shapeY(bounds, coordinate(first.getY()), pathHeight),
+ shapeX(bounds, coordinate(second.getX()), pathWidth),
+ shapeY(bounds, coordinate(second.getY()), pathHeight),
+ shapeX(bounds, coordinate(end.getX()), pathWidth),
+ shapeY(bounds, coordinate(end.getY()), pathHeight));
+ } else if (segment instanceof CTPath2DClose) {
+ content.closePath();
+ }
+ } while (cursor.toNextSibling());
+ }
+ }
+ if (hasSegments) {
+ content.fill();
+ }
+ }
+ } finally {
+ content.restoreGraphicsState();
+ }
+ }
+
+ private static void moveTo(
+ PDPageContentStream content,
+ CTAdjPoint2D point,
+ ShapeBounds bounds,
+ float pathWidth,
+ float pathHeight) throws IOException {
+ content.moveTo(
+ shapeX(bounds, coordinate(point.getX()), pathWidth),
+ shapeY(bounds, coordinate(point.getY()), pathHeight));
+ }
+
+ private static void lineTo(
+ PDPageContentStream content,
+ CTAdjPoint2D point,
+ ShapeBounds bounds,
+ float pathWidth,
+ float pathHeight) throws IOException {
+ content.lineTo(
+ shapeX(bounds, coordinate(point.getX()), pathWidth),
+ shapeY(bounds, coordinate(point.getY()), pathHeight));
+ }
+
+ private static float shapeX(ShapeBounds bounds, float value, float pathWidth) {
+ return bounds.x() + value / pathWidth * bounds.width();
+ }
+
+ private static float shapeY(ShapeBounds bounds, float value, float pathHeight) {
+ return bounds.top() - value / pathHeight * bounds.height();
+ }
+
+ private static ShapeBounds pictureBounds(
+ XSSFSheet sheet,
+ CellRangeAddress area,
+ float[] columnWidths,
+ int startRow,
+ float scale,
+ float horizontalScale,
+ PageGeometry geometry,
+ float horizontalOffset,
+ float centerOffset,
+ XSSFClientAnchor anchor) {
+ float x = geometry.marginLeft() + horizontalOffset
+ + columnsBefore(columnWidths, area.getFirstColumn(), anchor.getCol1()) * horizontalScale
+ + anchor.getDx1() / EMU_PER_POINT * horizontalScale;
+ float top = geometry.layoutHeight() - geometry.marginTop() - centerOffset
+ - rowsBefore(sheet, startRow, anchor.getRow1()) * scale
+ - anchor.getDy1() / EMU_PER_POINT * scale;
+ float width = (columnsBefore(columnWidths, area.getFirstColumn(), anchor.getCol2())
+ - columnsBefore(columnWidths, area.getFirstColumn(), anchor.getCol1())) * horizontalScale
+ + (anchor.getDx2() - anchor.getDx1()) / EMU_PER_POINT * horizontalScale;
+ float height = rowsBefore(sheet, anchor.getRow1(), anchor.getRow2()) * scale
+ + (anchor.getDy2() - anchor.getDy1()) / EMU_PER_POINT * scale;
+ return new ShapeBounds(x, top, width, height);
+ }
+
+ private static void drawPicture(
+ PDDocument document,
+ PDPageContentStream content,
+ XSSFPicture picture,
+ ShapeBounds bounds) throws IOException {
+ if (bounds.width() <= 0.0f || bounds.height() <= 0.0f || picture.getPictureData() == null) {
+ return;
+ }
+ try {
+ PDImageXObject image = PDImageXObject.createFromByteArray(
+ document,
+ picture.getPictureData().getData(),
+ picture.getShapeName());
+ content.drawImage(image, bounds.x(), bounds.top() - bounds.height(), bounds.width(), bounds.height());
+ } catch (IllegalArgumentException ignored) {
+ }
+ }
+
private static boolean drawVectorEmf(
PDDocument document,
PDPageContentStream content,
@@ -745,11 +1036,14 @@ private static PageGeometry pageGeometry(XSSFSheet sheet, ConversionOptions opti
PrintSetup setup = sheet.getPrintSetup();
boolean explicitPaperSize = sheet.getCTWorksheet().isSetPageSetup()
&& sheet.getCTWorksheet().getPageSetup().isSetPaperSize();
- boolean letter = setup.getPaperSize() == PrintSetup.LETTER_PAPERSIZE;
+ boolean scaledDefaultPaper = !explicitPaperSize
+ && explicitScale(sheet)
+ && !sheet.getCTWorksheet().getPageSetup().isSetFitToHeight();
+ boolean letter = !scaledDefaultPaper && setup.getPaperSize() == PrintSetup.LETTER_PAPERSIZE;
layoutWidth = letter ? PageSize.LETTER.width() : PageSize.A4.width();
layoutHeight = letter ? PageSize.LETTER.height() : PageSize.A4.height();
- mediaWidth = explicitPaperSize ? layoutWidth : PageSize.A4.width();
- mediaHeight = explicitPaperSize ? layoutHeight : PageSize.A4.height();
+ mediaWidth = explicitPaperSize ? layoutWidth : PageSize.A4.width();
+ mediaHeight = explicitPaperSize ? layoutHeight : PageSize.A4.height();
if (setup.getLandscape()) {
float layoutSwap = layoutWidth;
layoutWidth = layoutHeight;
@@ -819,16 +1113,26 @@ private static List columnGroups(
float verticalScaleLimit) {
float[] allWidths = columnWidths(sheet, area);
float naturalWidth = sum(allWidths, 0, allWidths.length);
- boolean fitOnePageWide = hasPrintArea || (sheet.getFitToPage() && setup.getFitWidth() == 1);
- if (fitOnePageWide || naturalWidth <= geometry.usableWidth()) {
- float scale = naturalWidth > 0.0f
+ boolean explicitFitWidth = sheet.getCTWorksheet().isSetPageSetup()
+ && sheet.getCTWorksheet().getPageSetup().isSetFitToWidth();
+ boolean unlimitedFitHeight = sheet.getCTWorksheet().isSetPageSetup()
+ && sheet.getCTWorksheet().getPageSetup().isSetFitToHeight()
+ && setup.getFitHeight() == 0;
+ boolean fitOnePageWide = hasPrintArea
+ || (sheet.getFitToPage()
+ && (explicitFitWidth || !explicitScale(sheet) || unlimitedFitHeight)
+ && setup.getFitWidth() == 1);
+ float scale = setup.getScale() > 0 ? setup.getScale() / 100.0f : 1.0f;
+ if (fitOnePageWide || naturalWidth * scale <= geometry.usableWidth()) {
+ if (fitOnePageWide) {
+ scale = naturalWidth > 0.0f
? Math.min(1.0f, geometry.usableWidth() / naturalWidth)
: 1.0f;
+ }
scale = Math.min(scale, verticalScaleLimit);
return List.of(new ColumnGroup(area.getFirstColumn(), area.getLastColumn(), allWidths, scale));
}
- float scale = setup.getScale() > 0 ? setup.getScale() / 100.0f : 1.0f;
scale = Math.min(scale, verticalScaleLimit);
List groups = new ArrayList<>();
int groupStart = 0;
@@ -902,7 +1206,10 @@ private static int pageEndRow(XSSFSheet sheet, int startRow, int lastRow, float
private static float rowHeight(XSSFSheet sheet, int rowIndex) {
Row row = sheet.getRow(rowIndex);
- float height = row == null || row.getZeroHeight()
+ if (row != null && row.getZeroHeight()) {
+ return 0.0f;
+ }
+ float height = row == null
? sheet.getDefaultRowHeightInPoints()
: row.getHeightInPoints();
if (row != null) {
@@ -1129,6 +1436,9 @@ private record PendingText(
float padding) {
}
+ private record ShapeBounds(float x, float top, float width, float height) {
+ }
+
private enum BorderSide {
TOP,
BOTTOM,
@@ -1148,6 +1458,10 @@ private static final class FontSet {
private final PDFont verdanaBoldItalic;
private final PDFont calibri;
private final PDFont calibriBold;
+ private final PDFont palatino;
+ private final PDFont palatinoBold;
+ private final PDFont corbel;
+ private final PDFont corbelBold;
private final PDFont times;
private final PDFont timesBold;
private final PDFont cjk;
@@ -1165,6 +1479,10 @@ private FontSet(
PDFont verdanaBoldItalic,
PDFont calibri,
PDFont calibriBold,
+ PDFont palatino,
+ PDFont palatinoBold,
+ PDFont corbel,
+ PDFont corbelBold,
PDFont times,
PDFont timesBold,
PDFont cjk,
@@ -1180,6 +1498,10 @@ private FontSet(
this.verdanaBoldItalic = verdanaBoldItalic;
this.calibri = calibri;
this.calibriBold = calibriBold;
+ this.palatino = palatino;
+ this.palatinoBold = palatinoBold;
+ this.corbel = corbel;
+ this.corbelBold = corbelBold;
this.times = times;
this.timesBold = timesBold;
this.cjk = cjk;
@@ -1210,6 +1532,14 @@ static FontSet load(PDDocument document) throws IOException {
registered,
List.of("calibrib"),
systemFonts("calibrib.ttf"));
+ PDFont palatino = load(document, registered, List.of("palatino linotype", "pala"), systemFonts("pala.ttf"));
+ PDFont palatinoBold = load(
+ document,
+ registered,
+ List.of("palatino linotype bold", "palab"),
+ systemFonts("palab.ttf"));
+ PDFont corbel = load(document, registered, List.of("corbel"), systemFonts("corbel.ttf"));
+ PDFont corbelBold = load(document, registered, List.of("corbel bold", "corbelb"), systemFonts("corbelb.ttf"));
PDFont times = load(document, registered, List.of("times"), systemFonts("times.ttf"));
PDFont timesBold = load(document, registered, List.of("timesbd"), systemFonts("timesbd.ttf"));
PDFont cjk = load(
@@ -1252,6 +1582,18 @@ static FontSet load(PDDocument document) throws IOException {
if (timesBold == null) {
timesBold = latinBold;
}
+ if (palatino == null) {
+ palatino = times;
+ }
+ if (palatinoBold == null) {
+ palatinoBold = timesBold;
+ }
+ if (corbel == null) {
+ corbel = latin;
+ }
+ if (corbelBold == null) {
+ corbelBold = latinBold;
+ }
if (cjk == null) {
cjk = latin;
}
@@ -1274,6 +1616,10 @@ static FontSet load(PDDocument document) throws IOException {
verdanaBoldItalic,
calibri,
calibriBold,
+ palatino,
+ palatinoBold,
+ corbel,
+ corbelBold,
times,
timesBold,
cjk,
@@ -1309,6 +1655,12 @@ PDFont resolve(String requested, String text, boolean bold, boolean italic) {
if (name.contains("calibri")) {
return bold ? calibriBold : calibri;
}
+ if (name.contains("palatino")) {
+ return bold ? palatinoBold : palatino;
+ }
+ if (name.contains("corbel")) {
+ return bold ? corbelBold : corbel;
+ }
if (name.contains("times")) {
return bold ? timesBold : times;
}
diff --git a/minipdf-java/minipdf/src/test/java/io/github/minisoftware/minipdf/ClassicFixtureSmokeTest.java b/minipdf-java/minipdf/src/test/java/io/github/minisoftware/minipdf/ClassicFixtureSmokeTest.java
index f80d59f7..56c53702 100644
--- a/minipdf-java/minipdf/src/test/java/io/github/minisoftware/minipdf/ClassicFixtureSmokeTest.java
+++ b/minipdf-java/minipdf/src/test/java/io/github/minisoftware/minipdf/ClassicFixtureSmokeTest.java
@@ -90,6 +90,57 @@ void preservesMergedCellColumnWidths() throws Exception {
}
}
+ @Test
+ void rendersScaledTablesAndGroupedArtwork() throws Exception {
+ Path fixture = REPOSITORY_ROOT.resolve("tests/Issue_Files/xlsx/Business expenses budget2.xlsx");
+
+ try (PDDocument document = Loader.loadPDF(MiniPdf.convertToPdfBytes(fixture))) {
+ assertEquals(4, document.getNumberOfPages());
+ PDFTextStripper stripper = new PDFTextStripper();
+ stripper.setStartPage(1);
+ stripper.setEndPage(1);
+ String firstPage = stripper.getText(document);
+ assertEquals(1, firstPage.split("EMPLOYEE COSTS", -1).length - 1, firstPage);
+
+ long imageCount = 0;
+ for (var name : document.getPage(0).getResources().getXObjectNames()) {
+ if (document.getPage(0).getResources().getXObject(name) instanceof PDImageXObject) {
+ imageCount++;
+ }
+ }
+ assertTrue(imageCount >= 2, "imageCount=" + imageCount);
+
+ var page = new PDFRenderer(document).renderImageWithDPI(0, 150.0f);
+ long stripedPixels = 0;
+ long translucentShapePixels = 0;
+ for (int y = 0; y < page.getHeight(); y++) {
+ for (int x = 0; x < page.getWidth(); x++) {
+ int rgb = page.getRGB(x, y);
+ int red = (rgb >> 16) & 0xff;
+ int green = (rgb >> 8) & 0xff;
+ int blue = rgb & 0xff;
+ if (red >= 210 && red <= 220 && green >= 210 && green <= 220 && blue >= 210 && blue <= 220) {
+ stripedPixels++;
+ }
+ if (red >= 110 && red <= 125 && green >= 78 && green <= 92 && blue >= 70 && blue <= 84) {
+ translucentShapePixels++;
+ }
+ }
+ }
+ assertTrue(stripedPixels > 100_000, "stripedPixels=" + stripedPixels);
+ assertTrue(translucentShapePixels > 5_000, "translucentShapePixels=" + translucentShapePixels);
+ }
+ }
+
+ @Test
+ void fitsWidthWhenFitHeightIsUnlimited() throws Exception {
+ Path fixture = REPOSITORY_ROOT.resolve("tests/Issue_Files/xlsx/Expense report basic1.xlsx");
+
+ try (PDDocument document = Loader.loadPDF(MiniPdf.convertToPdfBytes(fixture))) {
+ assertEquals(1, document.getNumberOfPages());
+ }
+ }
+
@Test
void convertsIssueXlsxWithCjkText() throws Exception {
Path fixture = REPOSITORY_ROOT.resolve("tests/Issue_Files/xlsx/Issue202609031340.xlsx");
diff --git a/minipdf-java/pom.xml b/minipdf-java/pom.xml
index ae49cda9..121f12e4 100644
--- a/minipdf-java/pom.xml
+++ b/minipdf-java/pom.xml
@@ -6,7 +6,7 @@
io.github.mini-software
minipdf-java-parent
- 0.1.4
+ 0.1.5
pom
MiniPdf for Java
diff --git a/tests/Issue_Files/office_xlsx/Issue202609031340.pdf b/tests/Issue_Files/office_xlsx/Issue202609031340.pdf
new file mode 100644
index 00000000..21e04e1d
Binary files /dev/null and b/tests/Issue_Files/office_xlsx/Issue202609031340.pdf differ
diff --git a/tests/Issue_Files/office_xlsx/XlsxIssue82_WideTable.pdf b/tests/Issue_Files/office_xlsx/XlsxIssue82_WideTable.pdf
new file mode 100644
index 00000000..76df6461
Binary files /dev/null and b/tests/Issue_Files/office_xlsx/XlsxIssue82_WideTable.pdf differ
diff --git a/tests/Issue_Files/xlsx/XlsxIssue82_WideTable.xlsx b/tests/Issue_Files/xlsx/XlsxIssue82_WideTable.xlsx
index 5172cf0c..4a419b02 100644
Binary files a/tests/Issue_Files/xlsx/XlsxIssue82_WideTable.xlsx and b/tests/Issue_Files/xlsx/XlsxIssue82_WideTable.xlsx differ