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