@@ -14,7 +14,6 @@ import { useProject } from './project'
14
14
import { useProjectStore } from '@/store/project'
15
15
import { usePDFStore } from '@/store/pdf'
16
16
import { useAbsoluteStore } from '@/store/absolute'
17
- import { EntityType } from '../types/context'
18
17
import { useStorage } from './storage/storage'
19
18
20
19
export const usePDF = ( ) => {
@@ -532,6 +531,44 @@ export const usePDF = () => {
532
531
: { }
533
532
}
534
533
534
+ const page = ( ) => {
535
+ return {
536
+ pageSize : generate ( ) . base ( ) . pageSize ,
537
+ pageOrientation : generate ( ) . base ( ) . pageOrientation ,
538
+ pageMargins : {
539
+ left : 0 ,
540
+ top : generate ( ) . base ( ) . pageMargins [ 1 ] ,
541
+ right : 0 ,
542
+ bottom : generate ( ) . base ( ) . pageMargins [ 3 ] ,
543
+ } ,
544
+ }
545
+ }
546
+
547
+ const info = ( ) => {
548
+ return {
549
+ info : {
550
+ title : PROJECT . name ,
551
+ author : PROJECT . creator ,
552
+ subject : PROJECT . subject ,
553
+ producer : PROJECT . producer ,
554
+ keywords : PROJECT . keywords ,
555
+ } ,
556
+ }
557
+ }
558
+
559
+ const content = ( ) => {
560
+ return {
561
+ content : generate ( ) . content ( ) ,
562
+ styles : {
563
+ 'heading-three' : generate ( ) . styles ( ) . headingThree ( ) ,
564
+ 'heading-two' : generate ( ) . styles ( ) . headingTwo ( ) ,
565
+ 'heading-one' : generate ( ) . styles ( ) . headingOne ( ) ,
566
+ 'summary-default' : generate ( ) . styles ( ) . summaryDefault ( ) ,
567
+ paragraph : generate ( ) . styles ( ) . paragraph ( ) ,
568
+ } ,
569
+ }
570
+ }
571
+
535
572
const footer = ( ) => {
536
573
const text = (
537
574
currentPage : number ,
@@ -607,99 +644,94 @@ export const usePDF = () => {
607
644
return { alignment, text }
608
645
}
609
646
647
+ const addons = ( ) => {
648
+ return {
649
+ background : options . final
650
+ ? function ( currentPage : number ) {
651
+ return currentPage >= 3 &&
652
+ PDF . styles . base . background . main &&
653
+ PDF . styles . switcher . main
654
+ ? [
655
+ {
656
+ image : PDF . styles . base . background . main ,
657
+ width : useDefines ( ) . pdf ( ) . base ( ) . pageSizeFixes ( ) [
658
+ PDF . styles . base . pageSize
659
+ ] [ 0 ] ,
660
+ height : useDefines ( ) . pdf ( ) . base ( ) . pageSizeFixes ( ) [
661
+ PDF . styles . base . pageSize
662
+ ] [ 1 ] ,
663
+ } ,
664
+ ]
665
+ : undefined
666
+ }
667
+ : undefined ,
668
+ footer : PDF . styles . switcher . footer
669
+ ? function (
670
+ currentPage : number ,
671
+ pageCount : number ,
672
+ pageSize : number
673
+ ) {
674
+ return [
675
+ {
676
+ text : footer ( ) . text ( currentPage , pageCount , pageSize ) ,
677
+ margin : [ 15 , 0 ] ,
678
+ fontSize : PDF . styles . base . footer . textSize ,
679
+ font : PDF . styles . base . footer . fontFamily ,
680
+ alignment : footer ( ) . alignment (
681
+ currentPage ,
682
+ pageCount ,
683
+ pageSize
684
+ ) ,
685
+ } ,
686
+ ]
687
+ }
688
+ : undefined ,
689
+ header : PDF . styles . switcher . header
690
+ ? function ( currentPage : number , pageCount : number , pageSize : any ) {
691
+ return [
692
+ {
693
+ text : header ( ) . text ( currentPage , pageCount , pageSize ) ,
694
+ fontSize : PDF . styles . base . header . textSize ,
695
+ font : PDF . styles . base . header . fontFamily ,
696
+ decoration : 'underline' ,
697
+ alignment : header ( ) . alignment (
698
+ currentPage ,
699
+ pageCount ,
700
+ pageSize
701
+ ) ,
702
+ } ,
703
+ ]
704
+ }
705
+ : undefined ,
706
+ pageBreakBefore : function (
707
+ currentNode : any ,
708
+ followingNodesOnPage : any ,
709
+ nodesOnNextPage : any ,
710
+ previousNodesOnPage : any
711
+ ) {
712
+ if (
713
+ currentNode . id === 'signature' &&
714
+ ( currentNode . pageNumbers . length != 1 ||
715
+ currentNode . pageNumbers [ 0 ] != currentNode . pages )
716
+ ) {
717
+ return true
718
+ } else if (
719
+ currentNode . id === 'closingParagraph' &&
720
+ currentNode . pageNumbers . length != 1
721
+ ) {
722
+ return true
723
+ }
724
+ return false
725
+ } ,
726
+ }
727
+ }
728
+
610
729
return {
611
730
...encrypt ( ) ,
612
- pageSize : generate ( ) . base ( ) . pageSize ,
613
- pageOrientation : generate ( ) . base ( ) . pageOrientation ,
614
- pageMargins : {
615
- left : 0 ,
616
- top : generate ( ) . base ( ) . pageMargins [ 1 ] ,
617
- right : 0 ,
618
- bottom : generate ( ) . base ( ) . pageMargins [ 3 ] ,
619
- } ,
620
- info : {
621
- title : PROJECT . name ,
622
- author : PROJECT . creator ,
623
- subject : PROJECT . subject ,
624
- producer : PROJECT . producer ,
625
- keywords : PROJECT . keywords ,
626
- } ,
627
- content : generate ( ) . content ( ) ,
628
- styles : {
629
- 'heading-three' : generate ( ) . styles ( ) . headingThree ( ) ,
630
- 'heading-two' : generate ( ) . styles ( ) . headingTwo ( ) ,
631
- 'heading-one' : generate ( ) . styles ( ) . headingOne ( ) ,
632
- 'summary-default' : generate ( ) . styles ( ) . summaryDefault ( ) ,
633
- paragraph : generate ( ) . styles ( ) . paragraph ( ) ,
634
- } ,
635
- background : options . final
636
- ? function ( currentPage : number ) {
637
- return currentPage >= 3 &&
638
- PDF . styles . base . background . main &&
639
- PDF . styles . switcher . main
640
- ? [
641
- {
642
- image : PDF . styles . base . background . main ,
643
- width : useDefines ( ) . pdf ( ) . base ( ) . pageSizeFixes ( ) [
644
- PDF . styles . base . pageSize
645
- ] [ 0 ] ,
646
- height : useDefines ( ) . pdf ( ) . base ( ) . pageSizeFixes ( ) [
647
- PDF . styles . base . pageSize
648
- ] [ 1 ] ,
649
- } ,
650
- ]
651
- : undefined
652
- }
653
- : undefined ,
654
- footer : PDF . styles . switcher . footer
655
- ? function ( currentPage : number , pageCount : number , pageSize : number ) {
656
- return [
657
- {
658
- text : footer ( ) . text ( currentPage , pageCount , pageSize ) ,
659
- margin : [ 15 , 0 ] ,
660
- fontSize : PDF . styles . base . footer . textSize ,
661
- font : PDF . styles . base . footer . fontFamily ,
662
- alignment : footer ( ) . alignment ( currentPage , pageCount , pageSize ) ,
663
- } ,
664
- ]
665
- }
666
- : undefined ,
667
- header : PDF . styles . switcher . header
668
- ? function ( currentPage : number , pageCount : number , pageSize : any ) {
669
- return [
670
- {
671
- text : header ( ) . text ( currentPage , pageCount , pageSize ) ,
672
- fontSize : PDF . styles . base . header . textSize ,
673
- font : PDF . styles . base . header . fontFamily ,
674
- decoration : 'underline' ,
675
- alignment : header ( ) . alignment ( currentPage , pageCount , pageSize ) ,
676
- } ,
677
- ]
678
- }
679
- : undefined ,
680
- pageBreakBefore : function (
681
- currentNode : any ,
682
- followingNodesOnPage : any ,
683
- nodesOnNextPage : any ,
684
- previousNodesOnPage : any
685
- ) {
686
- //check if signature part is completely on the last page, add pagebreak if not
687
- if (
688
- currentNode . id === 'signature' &&
689
- ( currentNode . pageNumbers . length != 1 ||
690
- currentNode . pageNumbers [ 0 ] != currentNode . pages )
691
- ) {
692
- return true
693
- }
694
- //check if last paragraph is entirely on a single page, add pagebreak if not
695
- else if (
696
- currentNode . id === 'closingParagraph' &&
697
- currentNode . pageNumbers . length != 1
698
- ) {
699
- return true
700
- }
701
- return false
702
- } ,
731
+ ...page ( ) ,
732
+ ...info ( ) ,
733
+ ...content ( ) ,
734
+ ...addons ( ) ,
703
735
}
704
736
}
705
737
0 commit comments