excel转pdf问题.zip (34.0 KB)
在使用25.4版本的apose.cells去打印一个excel文档,打印完成后发现有线条的缺失。虚拟打印机Foxit以及实际打印的都存在这个问题。后尝试将excel转pdf,发现同样是有问题。这里提供了转pdf的代码以及相关输入和输出的文件,请帮忙复现排查一下是什么问题。
excel转pdf问题.zip (34.0 KB)
在使用25.4版本的apose.cells去打印一个excel文档,打印完成后发现有线条的缺失。虚拟打印机Foxit以及实际打印的都存在这个问题。后尝试将excel转pdf,发现同样是有问题。这里提供了转pdf的代码以及相关输入和输出的文件,请帮忙复现排查一下是什么问题。
概要
在使用 Aspose.Cells 25.4 将 Excel 工作簿打印或保存为 PDF 时,部分线条(尤其是手绘线条、文本框等 Shape)可能在输出中缺失。这是该版本渲染某些绘图对象时的已知缺陷。
出现原因
解决步骤
Worksheet.Shapes 集合。// 加载工作簿
var workbook = new Aspose.Cells.Workbook(inputPath);
// 遍历所有工作表的 Shape,针对 TextBox 做预处理(示例)
foreach (var sheet in workbook.Worksheets)
{
foreach (Aspose.Cells.Drawing.Shape shape in sheet.Shapes)
{
if (shape.MsoDrawingType == Aspose.Cells.Drawing.MsoDrawingType.TextBox)
{
// 开启文字换行,防止渲染时被忽略
shape.IsTextWrapped = true;
// 根据所在行的高度动态调整 Shape 高度(可选)
int rowIdx = shape.UpperLeftRow;
shape.Height = sheet.Cells.GetRowHeightPixel(rowIdx) * 3;
}
}
}
// 保存为 PDF(或直接打印)
var pdfOptions = new Aspose.Cells.PdfSaveOptions();
workbook.Save(outputPdfPath, pdfOptions);
// 若要直接打印:
// workbook.Print();
上述代码来源于 Aspose 官方论坛的解决方案,能够让大多数 TextBox/线条在 PDF 中正确显示。
var printOptions = new Aspose.Cells.PrintOptions { PrintGridlines = true };
workbook.Print(printOptions);
此步骤并非导致当前缺失的根本原因,但可确保网格线在需要时被渲染。
总结
缺失的线条大概率是因为 Aspose.Cells 25.4 在渲染 Shape 时的缺陷。通过在保存前对 TextBox 等 Shape 设置 IsTextWrapped 并适当调整尺寸,或直接升级到更高版本,通常可以解决该问题。
感谢提供模板文件和截图。
根据您提到的情况,我通过将您的模板Excel文件转换为PDF复现了该问题。在Excel打印输出或Aspose.Cells的PDF渲染中,我发现了一些丢失的线条。我使用了最新版本/修复版(Aspose.Cells for Java 25.11),但问题仍然存在。
我们需要对该问题进行深入评估。我们已在内部问题跟踪系统中创建了以下新工单,并将在Free Support Policies中提到的条款下交付问题的修复。
问题ID:CELLSJAVA-46554
如果您需要优先支持以及直接与我们的付费支持管理团队联系,可以访问Paid Support Services。