基于UNO API实现自定义全表导出保留PDF超链接是否可行?
LibreOffice Calc UNO API实现自定义PDF导出保留超链接方案可行性分析
该方案完全可以通过UNO API实现,各步骤的具体实现逻辑如下:
遍历所有工作表
通过UNO API获取Calc文档的Sheets集合,直接循环遍历集合内的每个XSpreadsheet对象,即可完成全工作表的遍历操作。计算工作表总宽度与高度
针对每个工作表,先通过XSpreadsheet.getUsedRange()获取已使用单元格区域;随后遍历该区域的所有列,累加每列的ColumnWidth值得到总宽度;同理遍历所有行,累加每行的RowHeight值得到总高度。若需排除隐藏行列,可通过XColumnRowRange.isColumnHidden()和isRowHidden()判断后跳过对应行列的尺寸累加。设置自定义纸张大小
通过工作表的XPageStyleSupplier获取页面样式,再通过XPageStyle.setPaperSize()设置自定义纸张尺寸。需要注意单位转换:LibreOffice内部以1/100毫米为单位,需将计算出的行列总尺寸转换为对应单位后传入。自定义参数导出PDF
使用XStorable.storeToURL()方法执行PDF导出,在导出参数中设置:- 禁用
ExportWholeSheet参数(设为false) - 启用
ExportLinks参数(设为true),确保超链接原URL被保留 - 同时指定自定义纸张尺寸对应的页面设置,完成导出。
- 禁用
内容的提问来源于stack exchange,提问作者Cui Pengfei 崔鹏飞
相关产品推荐
相关产品推荐

