为有中文需求的客户提供多渠道中文技术支持.

Wed Jul 13, 2022 4:50 am

PDF转SVG时,可以使用
Code: Select all
doc.getConvertOptions().setOutputToOneSvg(true);

让所有页面打印在一个SVG之中
Code: Select all
doc.saveToFile(tmpFile.getAbsolutePath(),0,4, FileFormat.SVG);

也可以用startIndex和endIndex指定范围,非常好用。

但是,docx文件和pptx文件以及xlsx文件
是否有类似功能
目前来看,根据sample里的toSVG操作
docx文件只输出了第一页(原因未知),
pptx和xlsx只输出了最后一页(因为循环输出多个文件,但是我的tmpFile只使用了一个,所以前面的被覆盖了)
我希望可以只输出一个SVG文件 贴在网页上。

要如何才能让docx文件和pptx文件以及xlsx文件
转换成SVG的时候,可以把所有信息集合在一个SVG文件中呢
特别是xlsx有多个sheet的时候

docx文件和pptx文件
目前我的做法是把它们先转换成PDF,
再从PDF转成SVG
我感觉好像太过冗余
希望可以得到优化

ryuu_dogo
 
Posts: 1
Joined: Fri Jul 08, 2022 12:11 am

Wed Jul 13, 2022 7:52 am

您好,

感谢您的咨询。

对于docx和pptx输出为单个svg文件,目前还无法直接做到。但我们会考虑后续添加这两个功能以满足您的需求。我已将这两个问题提交给研发团队处理,问题编号分别是SPIREDOC-8171和SPIREPPT-1996。如有进展,我会及时通知您相关信息。
另外,对于xlsx输出为单个svg文件,可以考虑如下思路:
1. 将所有工作表的内容按顺序全部拷贝到第一张工作表中。
2. 将第一张工作表转为svg即得到包含所有内容的单个svg。

以下代码供参考:
Code: Select all
        Workbook workbook=new Workbook();
        workbook.loadFromFile("test.xlsx");

        Worksheet sheet1=workbook.getWorksheets().get(0);
        //把后续所有工作表的内容依次拷贝到第一个工作表中
        for(int i=1;i<workbook.getWorksheets().getCount();i++){
            Worksheet sheet2=workbook.getWorksheets().get(i);
            sheet1.copy(sheet2.getAllocatedRange(),sheet1,sheet1.getLastRow()+1,sheet2.getFirstColumn(),true);
        }
        //将第一个工作表转出svg
        FileOutputStream fileOutputStream=new FileOutputStream("output.svg");
        sheet1.toSVGStream(fileOutputStream,sheet1.getFirstRow(),sheet1.getFirstColumn(),sheet1.getLastRow(),sheet1.getLastColumn());
        fileOutputStream.close();
Sincerely,
Andy
E-iceblue support team
User avatar

Andy.Zhou
 
Posts: 483
Joined: Mon Mar 29, 2021 3:03 am

Return to 中文技术支持

cron