We're sorry Aspose doesn't work properply without JavaScript enabled.

Free Support Forum - aspose.com

get_Text耗时超过20秒甚至更长的时间

测试文本.zip (40.3 KB)
我这个pptx文件,通过上面PrintText接口,有些时候调System::String paragraphText = paragraph->get_Text();耗时超过20秒甚至更长的时间,此功能是否可优化的

@101ppt,
感谢您联系支持。

不幸的是,我无法重现您在从 PowerPoint 演示文稿中检索文本时遇到的问题。 我使用了以下测量:

auto begin = std::chrono::steady_clock::now();
System::String paragraphText = paragraph->get_Text();
auto end = std::chrono::steady_clock::now();

auto ellapsed = std::chrono::duration_cast<std::chrono::milliseconds>(end - begin).count();
std::cout << paragraphText << std::endl;
std::cout << "Ellapsed: " << ellapsed << " ms" << std::endl << std::endl;

这工作得非常快。请更详细地描述环境以及如何重现问题。

不好意思,我弄错了,是调System::Drawing::RectangleF paragraphRect = paragraph->GetRect();这个接口耗时

@101ppt,
感谢您提供更多信息。我已经重现了计算段落边界的问题,并在我们的问题跟踪系统中添加了 ID 为 SLIDESCPP-3559 的票证。 很抱歉给您带来不便。 我们的开发团队将调查此案。 当带有修复的 Aspose.Slides 新版本发布时,您会收到通知。

Aspose::Slides::TextVerticalType type = textFrame->get_TextFrameFormat()->GetEffective()->get_TextVerticalType();
能否确认下是否文字方向为横屏的(type == Aspose::Slides::TextVerticalType::Horizontal)没问题,其他方向的是有问题?是的话我根据type类型先避规此问题。

@101ppt,
对于您在上面提供的 PowerPoint 演示文稿,我得到以下值:
On slide 1: EastAsianVertical
On slide 2: Vertical
On slide 3: Vertical270
On slide 4: WordArtVerticalRightToLeft
也许您的意思是另一个演示文稿?

test.zip (37.6 KB)
是的这个文档,类型为Horizontal

@101ppt,
如我所见,所有文本框中的文本方向都是水平的。 horizontal.png (78.5 KB)
Aspose.Slides 返回相同的值。 你能澄清一下到底是什么问题吗?

@Andrey_Potapov
我是问System::Drawing::RectangleF paragraphRect = paragraph->GetRect();耗时的问题是和文字方向Aspose::Slides::TextVerticalType type = textFrame->get_TextFrameFormat()->GetEffective()->get_TextVerticalType();这个相关的吗?
从我目前提供的2个ppt文件中发现,文本方向是Horizontal的ppt文件中调用GetRect()接口不会耗时基本上100毫秒内都能返回,而文本方向EastAsianVertical,Vertical,Vertical270,WordArtVerticalRightToLeft的ppt文件调GetRect()就比较耗时,多的是会超过20秒。
所以结论是不是GetRect()耗时是文本方向不是Horizontal的才会出现

@101ppt,
很可能这些是相关的事情。 无论如何,我们的开发人员需要时间来处理这个问题。 我已将您的建议转发给开发人员。 感谢您帮助使 Aspose.Slides 变得更好。