@@ -14,7 +14,6 @@ import { useProject } from './project'
1414import { useProjectStore } from '@/store/project'
1515import { usePDFStore } from '@/store/pdf'
1616import { useAbsoluteStore } from '@/store/absolute'
17- import { EntityType } from '../types/context'
1817import { useStorage } from './storage/storage'
1918
2019export const usePDF = ( ) => {
@@ -532,6 +531,44 @@ export const usePDF = () => {
532531 : { }
533532 }
534533
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+
535572 const footer = ( ) => {
536573 const text = (
537574 currentPage : number ,
@@ -607,99 +644,94 @@ export const usePDF = () => {
607644 return { alignment, text }
608645 }
609646
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+
610729 return {
611730 ...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 ( ) ,
703735 }
704736 }
705737
0 commit comments