mirror of
https://github.com/pipipi-pikachu/PPTist.git
synced 2025-04-15 02:20:00 +08:00
perf: 导出相关优化
This commit is contained in:
parent
6536114ef5
commit
dfee3f8f4b
@ -331,7 +331,7 @@ export default () => {
|
||||
}
|
||||
|
||||
// 导出PPTX文件
|
||||
const exportPPTX = (_slides: Slide[] = slides.value) => {
|
||||
const exportPPTX = (_slides: Slide[], masterOverwrite: boolean) => {
|
||||
exporting.value = true
|
||||
const pptx = new pptxgen()
|
||||
|
||||
@ -339,11 +339,13 @@ export default () => {
|
||||
else if (viewportRatio.value === 0.75) pptx.layout = 'LAYOUT_4x3'
|
||||
else pptx.layout = 'LAYOUT_16x9'
|
||||
|
||||
const { color: bgColor, alpha: bgAlpha } = formatColor(theme.value.backgroundColor)
|
||||
pptx.defineSlideMaster({
|
||||
title: 'PPTIST_MASTER',
|
||||
background: { color: bgColor, transparency: (1 - bgAlpha) * 100 },
|
||||
})
|
||||
if (masterOverwrite) {
|
||||
const { color: bgColor, alpha: bgAlpha } = formatColor(theme.value.backgroundColor)
|
||||
pptx.defineSlideMaster({
|
||||
title: 'PPTIST_MASTER',
|
||||
background: { color: bgColor, transparency: (1 - bgAlpha) * 100 },
|
||||
})
|
||||
}
|
||||
|
||||
for (const slide of _slides) {
|
||||
const pptxSlide = pptx.addSlide()
|
||||
|
@ -97,7 +97,6 @@ import {
|
||||
ListView,
|
||||
Magic,
|
||||
HighLight,
|
||||
Printer,
|
||||
Share,
|
||||
} from '@icon-park/vue-next'
|
||||
|
||||
@ -197,7 +196,6 @@ const icons = {
|
||||
ListView,
|
||||
Magic,
|
||||
HighLight,
|
||||
Printer,
|
||||
Share,
|
||||
}
|
||||
|
||||
|
@ -47,9 +47,14 @@
|
||||
</div>
|
||||
|
||||
<div class="right">
|
||||
<Tooltip :mouseLeaveDelay="0" title="导出">
|
||||
<div class="menu-item" @click="setDialogForExport('pptx')">
|
||||
<IconShare size="18" fill="#666" />
|
||||
</div>
|
||||
</Tooltip>
|
||||
<Tooltip :mouseLeaveDelay="0" title="幻灯片放映">
|
||||
<div class="menu-item" @click="enterScreening()">
|
||||
<IconPpt size="18" fill="#666" style="margin-top: 2px;" />
|
||||
<IconPpt size="19" fill="#666" style="margin-top: 1px;" />
|
||||
</div>
|
||||
</Tooltip>
|
||||
<a href="https://github.com/pipipi-pikachu/PPTist" target="_blank">
|
||||
@ -75,7 +80,6 @@ import { useMainStore } from '@/store'
|
||||
import useScreening from '@/hooks/useScreening'
|
||||
import useSlideHandler from '@/hooks/useSlideHandler'
|
||||
import useHistorySnapshot from '@/hooks/useHistorySnapshot'
|
||||
import useExport from '@/hooks/useExport'
|
||||
|
||||
import HotkeyDoc from './HotkeyDoc.vue'
|
||||
|
||||
@ -91,7 +95,6 @@ export default defineComponent({
|
||||
const { enterScreening, enterScreeningFromStart } = useScreening()
|
||||
const { createSlide, deleteSlide, resetSlides } = useSlideHandler()
|
||||
const { redo, undo } = useHistorySnapshot()
|
||||
const { exporting, exportJSON, exportPPTX } = useExport()
|
||||
|
||||
const setDialogForExport = mainStore.setDialogForExport
|
||||
|
||||
@ -115,7 +118,6 @@ export default defineComponent({
|
||||
showGridLines,
|
||||
showRuler,
|
||||
hotkeyDrawerVisible,
|
||||
exporting,
|
||||
setDialogForExport,
|
||||
enterScreening,
|
||||
enterScreeningFromStart,
|
||||
@ -124,8 +126,6 @@ export default defineComponent({
|
||||
toggleGridLines,
|
||||
toggleRuler,
|
||||
resetSlides,
|
||||
exportJSON,
|
||||
exportPPTX,
|
||||
goIssues,
|
||||
}
|
||||
},
|
||||
|
@ -23,9 +23,15 @@
|
||||
v-model:value="range"
|
||||
/>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="title">覆盖默认母版:</div>
|
||||
<div class="config-item">
|
||||
<Switch v-model:checked="masterOverwrite" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="btns">
|
||||
<Button class="btn export" type="primary" @click="exportPPTX(selectedSlides)">导出 PPTX</Button>
|
||||
<Button class="btn export" type="primary" @click="exportPPTX(selectedSlides, masterOverwrite)">导出 PPTX</Button>
|
||||
<Button class="btn close" @click="close()">关闭</Button>
|
||||
</div>
|
||||
|
||||
@ -46,6 +52,7 @@ export default defineComponent({
|
||||
|
||||
const rangeType = ref<'all' | 'current' | 'custom'>('all')
|
||||
const range = ref<[number, number]>([1, slides.value.length])
|
||||
const masterOverwrite = ref(true)
|
||||
|
||||
const selectedSlides = computed(() => {
|
||||
if (rangeType.value === 'all') return slides.value
|
||||
@ -64,6 +71,7 @@ export default defineComponent({
|
||||
slides,
|
||||
rangeType,
|
||||
range,
|
||||
masterOverwrite,
|
||||
exporting,
|
||||
selectedSlides,
|
||||
exportPPTX,
|
||||
|
@ -99,7 +99,7 @@ export default defineComponent({
|
||||
}
|
||||
}
|
||||
.content {
|
||||
height: 500px;
|
||||
height: 460px;
|
||||
padding: 12px;
|
||||
font-size: 13px;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user