为什么同一个excel转成pdf和svg显示内容有差异

test.7z (16.8 KB)

@jishangyang,

我尝试下载您附加的压缩档案“test.7z”,但我的防病毒软件检测到病毒。您能否提供一个包含示例文件和其他资源文件的干净档案?请重新上传一个干净的压缩档案。我们会尽快检查您的问题。

test.zip (17.7 KB)

没有特殊处理,就是正常的excel转svg,excel转pdf

@jishangyang,

感谢您提供包含模板 Excel 文件、PDF 文件和 SVG 文件的新压缩包。

我已经使用您的模板 Excel 文件评估了您的问题。请尝试在您的代码段中添加几行代码,尤其是在渲染为 SVG 时,这将为您提供更好的输出。

Worksheet worksheet = workbook.getWorksheets().get(0);
AutoFitterOptions options = new AutoFitterOptions();
options.setAutoFitMergedCells(true);
worksheet.autoFitColumns(options);
SvgSaveOptions svgSaveOptions = new SvgSaveOptions();
svgSaveOptions.getImageOrPrintOptions().setOptimized(true);
svgSaveOptions.setSheetIndex(0);
workbook.save("d:\\files\\out1.svg");

如果您仍然发现任何问题,请告诉我们。

虽然加了options.setAutoFitMergedCells(true);属性后,能把给定的模板中压线不显示问题解决,但是这个属性改变了单元格的长度属性,我们有业务需求,execl单元格长度是固定的,模板多长就显示多长

@jishangyang
通过使用样例文件和以下样例代码在最新版本v24.11上进行测试,我们可以复现问题。发现转换相同的文件到pdf和svg后,结果文件内容显示不同。请查看附件。out_java.zip (23.6 KB)

样例代码如下:

Workbook workbook = new Workbook(filePath + "test.xlsx");
workbook.save(filePath + "out_java.pdf");
SvgSaveOptions svgSaveOptions = new SvgSaveOptions();
svgSaveOptions.getImageOrPrintOptions().setOptimized(true);
svgSaveOptions.setSheetIndex(0);
workbook.save(filePath + "out_java.svg", svgSaveOptions);	

我们已经在内部问题跟踪系统中打开了以下新问题单,并将根据Free Support Policies中提到的条款提供修复。

问题单号:CELLSJAVA-46189

你好,麻烦问下,有结果了么?

@jishangyang ,

字符在Svg中显示的宽度和我们度量出来的字符宽度或者在pdf中字符的显示宽度不一致,很抱歉,我们目前无法修复此问题。

如果后续有进展,我将在第一时间通知您。