word文件转换PDF前校验和拦截

版本:23.8
编程语言:java

有一些word文件本身很小 , 因为都是文字,所以页数很多, 导致转换宕机

是否有方法能在转换前进行校验,来拦截这种文件,避免服务宕机

@ZhonghaoSun 请您在此处附上有问题的输入文档以供测试,我们会检查该问题并向您提供更多信息。

在将 MS Word 文档转换为 PDF 等固定页面格式时,最消耗内存和 CPU 的操作是页面布局。在 Aspose.Words 中,您可以使用 IPageLayoutCallback 来在达到某个限制后跳过后续页面的布局。例如,以下代码仅构建前两页的布局:

int pagesToRender = 2;
Document doc = new Document("C:\\Temp\\in.docx");
doc.getLayoutOptions().setCallback(new PageLayoutCallback(pagesToRender));
try
{
    doc.updatePageLayout();
}
catch (PageLimitReachedException ex)
{
    PdfSaveOptions opt = new PdfSaveOptions();
    opt.setPageSet(new PageSet(new PageRange(0, pagesToRender - 1)));
    doc.save("C:\\Temp\\out.pdf", opt);
}
private static class PageLayoutCallback implements IPageLayoutCallback
{
    public PageLayoutCallback(int maxPageCount)
    {
        mMaxPageCount = maxPageCount;
    }

    @Override
    public void notify(PageLayoutCallbackArgs args) throws Exception
    {
        if (args.getEvent() == PageLayoutEvent.PART_REFLOW_STARTED &&
                args.getPageIndex() >= mMaxPageCount)
            throw new PageLimitReachedException();
    }

    private int mMaxPageCount;
}
private static class PageLimitReachedException extends Exception { }