Skip to content

Commit 3d4590c

Browse files
committed
fix(pdf): preview error in background layer
1 parent 8b6fa24 commit 3d4590c

File tree

7 files changed

+46
-22
lines changed

7 files changed

+46
-22
lines changed

src/components/editor/pdf/PDFPreview.vue

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,25 @@
1313
/>
1414
</svg>
1515
</HeroIcon>
16-
<div ref="preview" class="w-1/2 h-1/2"></div>
16+
<div ref="preview" class="h-1/2"></div>
1717
</template>
1818

1919
<script setup lang="ts">
2020
import { usePDF } from '@/use/pdf'
2121
import { ref, onMounted } from 'vue'
2222
import { useStore } from 'vuex'
23+
import { useI18n } from 'vue-i18n'
24+
import { useToast } from 'vue-toastification'
2325
2426
const preview = ref<HTMLElement | null>(null)
2527
const store = useStore()
28+
const { t } = useI18n()
29+
const toast = useToast()
2630
2731
onMounted(() => {
2832
usePDF().external(store).onPreviewPDF(preview.value)
33+
34+
toast.error(t('toast.pdf.previewProblems'))
2935
})
3036
3137
const onClick = () => {

src/lang/br/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import editor from './editor'
2+
import toast from './toast'
23

34
export default {
45
editor,
6+
toast,
57
generics: {
68
input: {
79
image: 'Inserir Imagem',

src/lang/br/toast.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
export default {
2+
pdf: {
3+
previewProblems:
4+
'Certas features não irão aparecer no preview para evitar problemas de desempenho.',
5+
},
6+
}

src/lang/en/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import editor from './editor'
2+
import toast from './toast'
23

34
export default {
45
editor,
6+
toast,
57
generics: {
68
input: {
79
image: 'Insert Image',

src/lang/en/toast.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
export default {
2+
pdf: {
3+
previewProblems:
4+
'Certain features will not appear in the preview to avoid performance issues.',
5+
},
6+
}

src/main.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ app.use(i18n)
2020
app.use(vfmPlugin)
2121
app.use(Toast, {
2222
position: POSITION.TOP_CENTER,
23-
timeout: 2000,
23+
timeout: 4000,
2424
maxToasts: 3,
2525
})
2626

src/use/pdf.ts

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -377,7 +377,7 @@ export const usePDF: Callback<any> = () => {
377377
return { content, styles, base }
378378
}
379379

380-
const doc = (store: Store<any>) => {
380+
const doc = (store: Store<any>, options: Record<any, any>) => {
381381
return {
382382
pageSize: generate().base(store).pageSize,
383383
pageOrientation: generate().base(store).pageOrientation,
@@ -400,23 +400,25 @@ export const usePDF: Callback<any> = () => {
400400
'heading-one': generate().styles(store).headingOne(),
401401
paragraph: generate().styles(store).paragraph(),
402402
},
403-
background: function (currentPage: number) {
404-
return store.state.pdf.styles.switcher.main &&
405-
store.state.pdf.styles.base.background.main &&
406-
currentPage >= 3
407-
? [
408-
{
409-
image: store.state.pdf.styles.base.background.main,
410-
width: useDefines().pdf().base().pageSizeFixes()[
411-
store.state.pdf.styles.base.pageSize
412-
][0],
413-
height: useDefines().pdf().base().pageSizeFixes()[
414-
store.state.pdf.styles.base.pageSize
415-
][1],
416-
},
417-
]
418-
: undefined
419-
},
403+
background: options.final
404+
? function (currentPage: number) {
405+
return currentPage >= 3 &&
406+
store.state.pdf.styles.base.background.main &&
407+
store.state.pdf.styles.switcher.main
408+
? [
409+
{
410+
image: store.state.pdf.styles.base.background.main,
411+
width: useDefines().pdf().base().pageSizeFixes()[
412+
store.state.pdf.styles.base.pageSize
413+
][0],
414+
height: useDefines().pdf().base().pageSizeFixes()[
415+
store.state.pdf.styles.base.pageSize
416+
][1],
417+
},
418+
]
419+
: undefined
420+
}
421+
: undefined,
420422
footer: function (
421423
currentPage: number,
422424
pageCount: number,
@@ -479,7 +481,7 @@ export const usePDF: Callback<any> = () => {
479481
const create: Callback<any> = (store: Store<any>): void => {
480482
setVfsFonts(store)
481483

482-
const pdf = pdfMake.createPdf(doc(store))
484+
const pdf = pdfMake.createPdf(doc(store, { final: true }))
483485

484486
pdf.download(`${store.state.project.nameRaw}.pdf`, () => {
485487
store.commit('absolute/load', false)
@@ -492,7 +494,7 @@ export const usePDF: Callback<any> = () => {
492494
): void => {
493495
setVfsFonts(store)
494496

495-
const generator = pdfMake.createPdf(doc(store))
497+
const generator = pdfMake.createPdf(doc(store, { final: false }))
496498

497499
generator.getDataUrl((dataUrl: any) => {
498500
const iframe = document.createElement('iframe')

0 commit comments

Comments
 (0)