47 lines
135 KiB
Go
Raw Normal View History

2021-04-23 20:00:00 +00:00
//
// Copyright 2020 FoxyUtils ehf. All rights reserved.
//
// This is a commercial product and requires a license to operate.
// A trial license can be obtained at https://unidoc.io
//
// DO NOT EDIT: generated by unitwist Go source code obfuscator.
//
// Use of this source code is governed by the UniDoc End User License Agreement
// terms that can be accessed at https://unidoc.io/eula/
2022-09-02 11:46:53 +00:00
package convert ;import (_cb "bytes";_g "errors";_fa "github.com/unidoc/unioffice/common/logger";_cbg "github.com/unidoc/unioffice/common/tempstorage";_d "github.com/unidoc/unioffice/document";_ad "github.com/unidoc/unioffice/internal/convertutils";_df "github.com/unidoc/unioffice/internal/formatutils";_da "github.com/unidoc/unioffice/measurement";_ed "github.com/unidoc/unioffice/schema/soo/dml";_fc "github.com/unidoc/unioffice/schema/soo/dml/chart";_ede "github.com/unidoc/unioffice/schema/soo/dml/picture";_ef "github.com/unidoc/unioffice/schema/soo/ofc/sharedTypes";_bb "github.com/unidoc/unioffice/schema/soo/wml";_ea "github.com/unidoc/unioffice/schema/urn/schemas_microsoft_com/vml";_gg "github.com/unidoc/unioffice/vmldrawing";_ae "github.com/unidoc/unipdf/v3/creator";_bc "github.com/unidoc/unipdf/v3/model";_c "io/ioutil";_e "regexp";_f "strconv";_a "strings";);
// ConvertToPdfWithOptions convert the document to PDF with file given options.
func ConvertToPdfWithOptions (d *_d .Document ,opts *Options )*_ae .Creator {var _ecde map[string ]string ;if opts !=nil {if opts .ProcessFields {_ecde =_aaeg (d );};if len (opts .FontFiles )> 0{_acee :=_ad .RegisterFontsFromFiles (opts .FontFiles );if _acee !=nil {_fa .Log .Debug ("\u0046\u0061\u0069\u006c t\u006f\u0020\u006c\u006f\u0061\u0064\u0020\u0066\u006f\u006e\u0074\u0073\u003a\u0020%\u0076",opts .FontDirectory );};};if opts .FontDirectory !=""{_aafg :=_ad .RegisterFontsFromDirectory (opts .FontDirectory );if _aafg !=nil {_fa .Log .Debug ("\u0046\u0061\u0069l\u0020\u0074\u006f\u0020l\u006f\u0061\u0064\u0020\u0066\u006f\u006et\u0020\u0064\u0069\u0072\u0065\u0063\u0074\u006f\u0072\u0079\u003a\u0020\u0025\u0076",_aafg .Error ());};};};var _cbcc *_bb .CT_PPrGeneral ;var _eba *_bb .CT_RPr ;if _dceg :=d .Styles .X ().DocDefaults ;_dceg !=nil {if _cgff :=_dceg .PPrDefault ;_cgff !=nil {_cbcc =_cgff .PPr ;};if _ceba :=_dceg .RPrDefault ;_ceba !=nil {_eba =_ceba .RPr ;};};_feb ,_fddf :=_fadg (210),_fadg (297);_egbe :=float64 (_da .Inch *1);_abca ,_gbca ,_bab ,_eceb :=_egbe ,_egbe ,_egbe ,_egbe ;var (_egcg ,_abde float64 ;_aeea []*headerFooterRef ;);if _abac :=d .BodySection ().X ();_abac !=nil {if _dadg :=_abac .PgMar ;_dadg !=nil {if _dadg .LeftAttr .ST_UnsignedDecimalNumber !=nil {_abca =_ad .PointsFromTwips (int64 (*_dadg .LeftAttr .ST_UnsignedDecimalNumber ));};if _dadg .LeftAttr .ST_UnsignedDecimalNumber !=nil {_gbca =_ad .PointsFromTwips (int64 (*_dadg .RightAttr .ST_UnsignedDecimalNumber ));};if _dadg .TopAttr .Int64 !=nil {_bab =_ad .PointsFromTwips (*_dadg .TopAttr .Int64 );};if _dadg .BottomAttr .Int64 !=nil {_eceb =_ad .PointsFromTwips (*_dadg .BottomAttr .Int64 );};if _dadg .HeaderAttr .ST_UnsignedDecimalNumber !=nil {_egcg =_ad .PointsFromTwips (int64 (*_dadg .HeaderAttr .ST_UnsignedDecimalNumber ));};if _dadg .FooterAttr .ST_UnsignedDecimalNumber !=nil {_abde =_eceb -_ad .PointsFromTwips (int64 (*_dadg .FooterAttr .ST_UnsignedDecimalNumber ));};};if _abbea :=_abac .PgSz ;_abbea !=nil {if _abbea .WAttr !=nil {_feb =_ad .PointsFromTwips (int64 (*_abbea .WAttr .ST_UnsignedDecimalNumber ));};if _abbea .HAttr !=nil {_fddf =_ad .PointsFromTwips (int64 (*_abbea .HAttr .ST_UnsignedDecimalNumber ));};};for _ ,_adcg :=range _abac .EG_HdrFtrReferences {if _aebf :=_adcg .HeaderReference ;_aebf !=nil {_efbc :=&headerFooterRef {_acdb :true ,_bfab :_aebf .IdAttr ,_baag :_aebf .TypeAttr };_aeea =append (_aeea ,_efbc );};if _ccda :=_adcg .FooterReference ;_ccda !=nil {_bfcc :=&headerFooterRef {_dfdb :true ,_bfab :_ccda .IdAttr ,_baag :_ccda .TypeAttr };_aeea =append (_aeea ,_bfcc );};};};if d .Settings .X ().DefaultTabStop ==nil {_agbg =_fadg (12.7);}else {_agbg =_ad .PointsFromTwips (int64 (*d .Settings .X ().DefaultTabStop .ValAttr .ST_UnsignedDecimalNumber ));};_bdbd :=_ae .New ();_bdbd .SetPageSize (_ae .PageSize {_feb ,_fddf });_bdbd .SetPageMargins (_abca ,_gbca ,_bab ,_eceb );_ccab :=&convertContext {_dgaad :_bdbd ,_bbba :d ,_eacd :_cbcc ,_aefg :_eba ,_fae :&_ad .Rectangle {Top :_bab ,Bottom :_fddf -_eceb ,Left :_abca ,Right :_feb -_gbca },_fege :[]note {},_aaaa :map[int64 ]map[int64 ]int64 {},_dag :_ecde ,_ccad :opts ,_efagc :_aeea ,_ffda :_egcg ,_dcfb :_abde ,_agfd :_abca };for _bgad ,_bdaf :=range d .X ().Body .EG_BlockLevelElts {var _gebg []*_bb .EG_ContentBlockContent ;if _bgad < len (d .X ().Body .EG_BlockLevelElts )-1{_eeff :=d .X ().Body .EG_BlockLevelElts [_bgad +1];_gebg =_eeff .EG_ContentBlockContent ;};_ccab .addAbsoluteCBCs (_bdaf .EG_ContentBlockContent ,_gebg );};_ccab .addEndnotes ();_ccab .alignSymbolsVertically ();_ccab .drawPages ();_ccab .drawHeaderFooter ();return _bdbd ;};func (_fbfc *convertContext )newPage (){_bfbe :=&page {};_bfbe ._fd =_fbfc ._fae ;_bfbe ._fcg =_bfbe ._fd .Top ;if _fbfc ._aegc {_bfbe ._cf =true ;_bfbe ._fcg +=_dfea ;};_fbfc ._gfbc =append (_fbfc ._gfbc ,_bfbe );_fbfc ._bebb =_bfbe ;};func (_bda *convertContext )addInlineSymbol (_eafb *symbol ){if len (_bda ._adcc ._be )> 0{_dadb :=_bda ._adcc ._be [len (_bda ._adcc ._be )-1]._edf ;if _dadb =="\u0020"{_bda .addCurrentWordToPa
// ConvertToPdf converts document to PDF file. This package is beta, breaking changes can take place.
func ConvertToPdf (d *_d .Document )*_ae .Creator {return ConvertToPdfWithOptions (d ,nil )};func _aaeg (_aaaad *_d .Document )map[string ]string {_eaga :=map[string ]string {};for _ ,_bcgga :=range _aaaad .Paragraphs (){for _ ,_bafg :=range _bcgga .Runs (){for _ ,_bdff :=range _bafg .X ().EG_RunInnerContent {if _acc :=_bdff .InstrText ;_acc !=nil {_aaab ,_dagd :=_bcaff (_acc .Content );if _aaab !=""&&_dagd !=""{_eaga [_aaab ]=_dagd ;};};};};};return _eaga ;};func _dfaf (_bgcf *_d .Document ,_dbbfb string )[]*_bb .CT_TblStylePr {_efdg :=_bgcf .GetStyleByID (_dbbfb );var _gcbdg []*_bb .CT_TblStylePr ;if _ddcgeb :=_efdg .X ();_ddcgeb !=nil {if _fbbb :=_ddcgeb .BasedOn ;_fbbb !=nil {_dfaf (_bgcf ,_fbbb .ValAttr );};if len (_ddcgeb .TblStylePr )> 0{_gcbdg =_ddcgeb .TblStylePr ;};};return _gcbdg ;};func (_gecad *convertContext )adjustRightBoundOfLastSpan (){_eafc :=_gecad ._dbca ._cd ;_agbbd :=_gecad ._adcf ._fb +_gecad ._ebcb ._cc ;_dbg :=_agbbd +_gecad ._adcf ._bgf ;for _ ,_gfag :=range _gecad ._bebb ._bf {if ((_agbbd > _gfag ._ebb .Top &&_agbbd < _gfag ._ebb .Bottom )||(_dbg > _gfag ._ebb .Top &&_agbbd < _gfag ._ebb .Bottom ))&&(_eafc > _gfag ._ebb .Left ){_eafc =_gfag ._ebb .Left ;};};_gecad ._dbca ._cd =_eafc ;};func (_cdcg *convertContext )addTextSymbol (_ccc *symbol ){_ffbg :=_ae .New ();_cead :=_ffbg .NewStyledParagraph ();_cead .SetMargins (0,0,0,0);_gfac :=_cead .Append (_ccc ._edf );_gcg :=0.0;if _ccc ._ag !=nil {_gfac .Style =*_ccc ._ag ;if _ccc ._ag .CharSpacing !=0{_gcg =_ccc ._ag .CharSpacing ;};};if _ccc ._aagg ==nil &&_ccc ._ggd ==nil {_ccc ._gf =_cead .Height ()*_ff ;_ccc ._dga =_cead .Height ();};if _ccc ._bea ==0{_ccc ._bea =_cead .Width ()+_gcg ;};if _ccc ._gf < _cdcg ._ebcb ._cbb {_ccc ._gf =_cdcg ._ebcb ._cbb ;};if len (_cdcg ._adcc ._be )> 0{_gdfa :=_cdcg ._adcc ._be [len (_cdcg ._adcc ._be )-1]._edf ;if _ad .IsNoSpaceLanguage (_gdfa )||(_gdfa =="\u0020")!=(_ccc ._edf =="\u0020"){_cdcg .addCurrentWordToParagraph ();_cdcg .newWord ();};};_cdcg ._adcc ._be =append (_cdcg ._adcc ._be ,_ccc );_ccc ._daa =_cdcg ._adcc ._fg ;_cdcg ._adcc ._fg +=_ccc ._bea ;if _ccc ._edf !="\u0020"{_cdcg ._adcc ._aad =false ;};if _ccc ._edf =="\u000d"{_cdcg .adjustHeights (_ccc ._gf *1.13);_cdcg .adjustHeights (_ccc ._gf );};};func _ededg (_fccef *_bb .EG_RunInnerContent )bool {if _adag :=_fccef .Br ;_adag !=nil {return _adag .TypeAttr ==_bb .ST_BrTypePage ;};return false ;};func (_def *convertContext )addAbsoluteEGPC (_bed []*_bb .EG_PContent ,_bbcb *_bb .CT_PPr )bool {_gec :=len (_bed );for _ ,_bec :=range _bed {for _ ,_gac :=range _bec .FldSimple {if _gac !=nil {_def .addAbsoluteEGPC (_gac .EG_PContent ,_bbcb );};};if _fff :=_bec .Hyperlink ;_fff !=nil {_def ._bbed =_fff ;_def .addAbsoluteCRC (_fff .EG_ContentRunContent ,_bbcb );};_def ._bbed =nil ;if _def .addAbsoluteCRC (_bec .EG_ContentRunContent ,_bbcb ){if _gec > 1{_def .moveCurrentParagraphToNewPage ();continue ;}else {return true ;};};_gec --;};return false ;};func (_bebg *convertContext )addSeparator (){_bebg .newParagraph ();_bebg ._ebcb ._fecc =true ;_bebg ._ebcb ._gc =_dfea ;if _bebg .currentParagraphOverflowsCurrentPage (){_bebg .moveCurrentParagraphToNewPage ();};_bebg .addCurrentParagraphToCurrentPage ();};func _decc (_dafea string )uint16 {_baega ,_fafd :=_bddc [_dafea ];if !_fafd {return 0;};return _baega ;};func (_gbae *convertContext )addAbsoluteTable (_adaf *_bb .CT_Tbl ){_abcd :=_adaf .TblGrid ;if _abcd ==nil {return ;};_ffeb :=len (_abcd .GridCol );if _ffeb ==0{return ;};_fadc :=[]float64 {};_fdcc :=[]float64 {};_cebd :=0.0;for _ ,_gfbbf :=range _abcd .GridCol {_adaff :=0.0;if _gfbbf .WAttr .ST_UnsignedDecimalNumber !=nil {_adaff =_ad .PointsFromTwips (int64 (*_gfbbf .WAttr .ST_UnsignedDecimalNumber ));};_fadc =append (_fadc ,_adaff );_cebd +=_adaff ;};for _gegd :=0;_gegd < _ffeb ;_gegd ++{_fdcc =append (_fdcc ,_fadc [_gegd ]/_cebd );};_bcee :=_gbae ._dgaad .NewTable (_ffeb );_bcee .SetColumnWidths (_fdcc ...);_fdb :=_gbae ._dgaad .NewTable (_ffeb );_fdb .SetColumnWidths (_fdcc ...);_ceg ,_ddfe ,_fgafc :=_fffb (_gbae ._bbba ,_adaf .TblPr );var _afb []
2021-07-30 17:03:26 +00:00
2022-01-15 21:17:38 +00:00
// Options contains the options for convert process -
// e.g ProcessFields is when document contains fields
// and the value need to be processed also.
type Options struct{
2021-07-30 17:03:26 +00:00
2022-02-25 19:20:45 +00:00
// ProcessFields process the document fields if set to true, default is `false`.
ProcessFields bool ;
// EnableFontSubsetting process document with subsetting font to reduce size result.
// Default value is `true`.
EnableFontSubsetting bool ;
// FontFiles location of fonts for convert process.
FontFiles []string ;
// FontDirectory location of font directory for convert process.
// This will load all font files inside directoy if set
// we recommend to use FontFiles for better performance.
2022-09-02 11:46:53 +00:00
FontDirectory string ;};func _faf (_befc *_bb .CT_PPr ,_gbg *_bb .CT_PPrGeneral ,_dadbd *_bb .CT_RPr )*_bb .CT_PPr {if _befc ==nil {_befc =_bb .NewCT_PPr ();};if _gbg !=nil {if _befc .Jc ==nil &&_gbg .Jc !=nil {_befc .Jc =_gbg .Jc ;};if _befc .Spacing ==nil {_befc .Spacing =_gbg .Spacing ;}else if _abgc :=_gbg .Spacing ;_abgc !=nil {if _befc .Spacing .BeforeAttr ==nil {_befc .Spacing .BeforeAttr =_abgc .BeforeAttr ;};if _befc .Spacing .AfterAttr ==nil {_befc .Spacing .AfterAttr =_abgc .AfterAttr ;};if _befc .Spacing .LineAttr ==nil {_befc .Spacing .LineAttr =_abgc .LineAttr ;};};if _gbg .ContextualSpacing !=nil {_befc .ContextualSpacing =_gbg .ContextualSpacing ;};if _gbg .Ind !=nil {if _befc .Ind ==nil {_befc .Ind =_gbg .Ind ;}else {_cdbc ,_ffbf :=_befc .Ind .FirstLineAttr ==nil ,_befc .Ind .HangingAttr ==nil ;if _cdbc &&_ffbf &&_gbg .Ind .FirstLineAttr !=nil {_befc .Ind .FirstLineAttr =_gbg .Ind .FirstLineAttr ;_cdbc =false ;};if _cdbc &&_ffbf &&_gbg .Ind .HangingAttr !=nil {_befc .Ind .HangingAttr =_gbg .Ind .HangingAttr ;};if _befc .Ind .LeftAttr ==nil {_befc .Ind .LeftAttr =_gbg .Ind .LeftAttr ;};if _befc .Ind .RightAttr ==nil {_befc .Ind .RightAttr =_gbg .Ind .RightAttr ;};};};if _befc .Tabs ==nil &&_gbg .Tabs !=nil {_befc .Tabs =_gbg .Tabs ;};if _gbg .PBdr !=nil {_befc .PBdr =_gbg .PBdr ;};};if _dadbd !=nil {var _aec _bb .CT_ParaRPr ;if _befc .RPr ==nil {_aec =*_bb .NewCT_ParaRPr ();}else {_aec =*_befc .RPr ;};if _aec .Color ==nil &&_dadbd .Color !=nil {_aec .Color =_dadbd .Color ;};if _aec .Spacing ==nil &&_dadbd .Spacing !=nil {_aec .Spacing =_dadbd .Spacing ;};if _aec .Sz ==nil &&_dadbd .Sz !=nil {_aec .Sz =_dadbd .Sz ;};if _aec .SzCs ==nil &&_dadbd .SzCs !=nil {_aec .SzCs =_dadbd .SzCs ;};if _aec .B ==nil &&_dadbd .B !=nil {_aec .B =_dadbd .B ;};if _aec .I ==nil &&_dadbd .I !=nil {_aec .I =_dadbd .I ;};if _aec .RFonts ==nil &&_dadbd .RFonts !=nil {_aec .RFonts =_dadbd .RFonts ;};if _aec .VertAlign ==nil &&_dadbd .VertAlign !=nil {_aec .VertAlign =_dadbd .VertAlign ;};if _aec .Bdr ==nil &&_dadbd .Bdr !=nil {_aec .Bdr =_dadbd .Bdr ;};if _aec .Caps ==nil &&_dadbd .Caps !=nil {_aec .Caps =_dadbd .Caps ;};if _aec .SmallCaps ==nil &&_dadbd .SmallCaps !=nil {_aec .SmallCaps =_dadbd .SmallCaps ;};_befc .RPr =&_aec ;};return _befc ;};type block struct{_ceb *_ae .Block ;_ec float64 ;_cbea float64 ;_ba bool ;_gb float64 ;_ecg _ae .Color ;};var _agbg float64 ;func (_dbcb *convertContext )addEmptyLine (){_dbcb .addTextSymbol (&symbol {_edf :"\u000d",_bea :0,_gf :_dbcb ._ebcb ._cbb });};var _cbcf =map[int32 ]int32 {61623:8226,61607:8226,61558:9830,61656:8594,61692:8730};func (_gdg *convertContext )addAbsoluteCBCs (_dbda []*_bb .EG_ContentBlockContent ,_ecge []*_bb .EG_ContentBlockContent ){_gag :="";_dfa :=false ;for _ ,_dbe :=range _ecge {for _ ,_fbd :=range _dbe .P {if len (_fbd .EG_PContent )==0{_dfa =true ;break ;};if _fbd .PPr !=nil &&_fbd .PPr .PStyle !=nil {_gag =_fbd .PPr .PStyle .ValAttr ;break ;};};};for _ ,_dgb :=range _dbda {for _ ,_aea :=range _dgb .P {_gdg .newParagraph ();if _aea .PPr !=nil &&_aea .PPr .PStyle ==nil {_fbda :=_gdg ._bbba .Styles .ParagraphStyles ();for _ ,_ggde :=range _fbda {if _cgc :=_ggde .X ().DefaultAttr ;_cgc !=nil {if _efe :=_cgc .Bool ;_efe !=nil &&*_efe {_aea .PPr =_faf (_aea .PPr ,_ggde .X ().PPr ,_ggde .X ().RPr );};if _bfa :=_cgc .ST_OnOff1 ;_bfa ==_ef .ST_OnOff1On {_aea .PPr =_faf (_aea .PPr ,_ggde .X ().PPr ,_ggde .X ().RPr );};break ;};};};_bcg ,_dda :=_gdg .combinePPrWithStyles (_aea .PPr );if _dda !=nil {_gdg ._fdcd =_dda ;};if _aea .PPr !=nil &&_aea .PPr .PStyle !=nil {if _aea .PPr .PStyle .ValAttr !=_gag {_aea .PPr .ContextualSpacing =nil ;};};if _bcg !=nil &&_bcg .SectPr !=nil {for _ ,_bga :=range _bcg .SectPr .EG_HdrFtrReferences {if _bce :=_bga .HeaderReference ;_bce !=nil {_gfg :=&headerFooterRef {_acdb :true ,_bfab :_bce .IdAttr ,_baag :_bce .TypeAttr };_gdg ._bebb ._fe =append (_gdg ._bebb ._fe ,_gfg );};if _gce :=_bga .FooterReference ;_gce !=nil {_bcc :=&headerFooterRef {_dfdb :true ,_bfab :_gce .IdAttr ,_baag :_gce .TypeAttr };_gdg ._bebb ._fe =append (_gdg ._bebb
2022-06-27 19:44:23 +00:00
// FontStyle represents a kind of font styling. It can be FontStyle_Regular, FontStyle_Bold, FontStyle_Italic and FontStyle_BoldItalic.
2022-09-02 11:46:53 +00:00
type FontStyle =_ad .FontStyle ;func (_begc *convertContext )makePdfBlockFromChart (_eae *_fc .Chart ,_gfd ,_fbde float64 )(*_ae .Block ,error ){_acaa :=_eae .CT_RelId .IdAttr ;_ccea :=_begc ._bbba .GetChartSpaceByRelId (_acaa );if _ccea ==nil {return nil ,_g .New ("\u004e\u006f\u0020\u0063\u0068\u0061\u0072\u0074\u0073\u0070\u0061\u0063\u0065");};var _debc *_ed .Theme ;_faad :=_begc ._bbba .Themes ();if len (_faad )> 0{_debc =_faad [0];};return _ad .MakeBlockFromChartSpace (_ccea ,_gfd ,_fbde ,_debc );};func (_eef *convertContext )alignParagraph (){_bbf :=_eef ._ebcb ;if _bbf ._bfe ==_ae .TextAlignmentLeft {return ;};_aegf :=len (_bbf ._aef )-1;for _dbc ,_feca :=range _bbf ._aef {_cbeb :=len (_feca ._ce )-1;for _egde ,_eeg :=range _feca ._ce {_cgb :=true ;_cade :=len (_eeg ._de );_geca :=0.0;for _aba :=len (_eeg ._de )-1;_aba >=0;_aba --{_gece :=_eeg ._de [_aba ];if _cgb &&_gece ._aad {_cade =_aba ;}else {_cgb =false ;for _ ,_eded :=range _gece ._be {_geca +=_eded ._bea ;};};};_eeg ._de =_eeg ._de [:_cade ];_dbb :=_eeg ._cd -_eeg ._bca -_geca ;switch _bbf ._bfe {case _ae .TextAlignmentRight :_eeg .moveRight (_dbb );case _ae .TextAlignmentCenter :_eeg .moveRight (_dbb /2);case _ae .TextAlignmentJustify :if _dbc !=_aegf ||_egde !=_cbeb {_fgf :=[]*word {};for _ ,_dafg :=range _eeg ._de {if _dafg ._aad {_fgf =append (_fgf ,_dafg );};};_bgd :=_dbb /float64 (len (_fgf ));for _ ,_dfdg :=range _fgf {_dfdg ._fg +=_bgd ;};var _bfea *word ;for _ ,_ggfg :=range _eeg ._de {if _bfea !=nil {_ggfg ._eg =_bfea ._eg +_bfea ._fg ;};_bfea =_ggfg ;};};};};};};func (_eefgf *convertContext )makePdfBlockFromCBCs (_gcceg [][]*_bb .EG_ContentBlockContent ,_bgde ,_ggcd float64 ,_efgbg *_ad .Rectangle ,_cecf bool ,_efcb *prefix )(*_ae .Block ,error ){if _efgbg ==nil {_efgbg =&_ad .Rectangle {};};_gcge :=&_ad .Rectangle {Top :_efgbg .Top ,Bottom :_ggcd -_efgbg .Bottom ,Left :_efgbg .Left ,Right :_bgde -_efgbg .Right };_defe :=_ad .MakeTempCreator (_bgde ,_ggcd );_aeedd :=&convertContext {_dgaad :_defe ,_bbba :_eefgf ._bbba ,_fae :_gcge ,_fdcd :_efcb };for _ ,_gab :=range _gcceg {_aeedd .addAbsoluteCBCs (_gab ,nil );};if _cecf {_dffb :=0.0;for _ ,_ccfc :=range _aeedd ._gfbc {for _ ,_ecbf :=range _ccfc ._fce {_dffb +=(_ecbf ._gc +_ecbf ._aag .Top +_ecbf ._aag .Bottom );};};_gcge .Bottom =_dffb -_efgbg .Bottom ;_defe =_ad .MakeTempCreator (_bgde ,_dffb );_aeedd =&convertContext {_dgaad :_defe ,_bbba :_eefgf ._bbba ,_fae :_gcge ,_fdcd :_efcb };for _ ,_dccef :=range _gcceg {_aeedd .addAbsoluteCBCs (_dccef ,nil );};};_aeedd .alignSymbolsVertically ();_aeedd ._dgaad .NewPage ();_aeedd .drawPage (_aeedd ._gfbc [len (_aeedd ._gfbc )-1]);return _ad .MakeBlockFromCreator (_defe );};func _fadg (_cbca float64 )float64 {return _cbca *_da .Millimeter };type convertContext struct{_dgaad *_ae .Creator ;_bbba *_d .Document ;_eacd *_bb .CT_PPrGeneral ;_aefg *_bb .CT_RPr ;_fdge *_ae .StyledParagraph ;_gfbc []*page ;_bebb *page ;_fae *_ad .Rectangle ;_ebcb *paragraph ;_adcf *line ;_dbca *span ;_adcc *word ;_bbed *_bb .CT_Hyperlink ;_bcbb *_bb .CT_ParaRPr ;_ffdd *_bb .CT_PPr ;_fege []note ;_fdcd *prefix ;_abcdg bool ;_gggc bool ;_gbc bool ;_agfd float64 ;_ffda float64 ;_dcfb float64 ;_bggd float64 ;_aegc bool ;_aaaa map[int64 ]map[int64 ]int64 ;_dag map[string ]string ;_ccad *Options ;_efagc []*headerFooterRef ;_cdbf []*paragraph ;_dbcd []*paragraph ;};
2022-02-25 19:20:45 +00:00
2022-09-02 11:46:53 +00:00
// RegisterFont makes a PdfFont accessible for using in converting to PDF.
func RegisterFont (name string ,style FontStyle ,font *_bc .PdfFont ){_ad .RegisterFont (name ,style ,font );};func init (){_gdcd =_e .MustCompile ("\u0053E\u0054 \u0028\u002e\u002b\u0029\u0020\u0022\u0028\u002e\u002b\u0029\u0022");_febe =_e .MustCompile ("\u0052\u0045\u0046\u0020\u0028\u002e\u002b\u003f\u0029\u0020");};func (_gdbb *convertContext )addAnchorBlocks (_ecfa []*_bb .EG_PContent ){for _ ,_edg :=range _ecfa {for _ ,_dcff :=range _edg .EG_ContentRunContent {if _cbed :=_dcff .R ;_cbed !=nil {for _ ,_dfca :=range _cbed .EG_RunInnerContent {if _efeb :=_dfca .Drawing ;_efeb !=nil {for _ ,_bccc :=range _efeb .Anchor {var _cdad ,_dcad ,_bad ,_gbfd float64 ;_gaeb ,_bcf :=_bccc .PositionH ,_bccc .PositionV ;if _eafe :=_gaeb .Choice ;_eafe !=nil {if _eafe .PosOffset !=nil {_cdad =_da .FromEMU (int64 (*_eafe .PosOffset ));};};if _dad :=_bcf .Choice ;_dad !=nil {if _dad .PosOffset !=nil {_dcad =_da .FromEMU (int64 (*_dad .PosOffset ));};};if _gdbg :=_bccc .Extent ;_gdbg !=nil {_gbfd =_da .FromEMU (_gdbg .CxAttr );_bad =_da .FromEMU (_gdbg .CyAttr );};_gba :=_gdbb ._ebcb ._cc +_dcad ;_eag :=_gba +_bad ;_fegb :=_gdbb ._ebcb ._bg +_cdad ;_eagf :=_fegb +_gbfd ;_gecb :=_dcad +_bad ;if _gecb > _gdbb ._ebcb ._aeb {_gdbb ._ebcb ._aeb =_gecb ;};if _bccc .Choice !=nil &&_bccc .Choice .WrapNone ==nil {_gdbb ._ebcb ._ga =append (_gdbb ._ebcb ._ga ,&zoneToSkip {_ebb :&_ad .Rectangle {Top :_gba ,Bottom :_eag ,Left :_fegb ,Right :_eagf },_fec :_bccc .Choice });};if _efa :=_bccc .Graphic ;_efa !=nil {if _cdf :=_efa .GraphicData ;_cdf !=nil {for _ ,_fdc :=range _cdf .Any {if _beba ,_agc :=_fdc .(*_ede .Pic );_agc {_gfab ,_adee :=_gdbb .makePdfImageFromGraphics (_beba );if _adee !=nil {_fa .Log .Debug ("C\u0061\u006e\u006e\u006ft \u0072e\u0061\u0064\u0020\u0069\u006da\u0067\u0065\u003a\u0020\u0025\u0073",_adee );};if _gfab !=nil {_gfab .Scale (_gbfd /_gfab .Width (),_bad /_gfab .Height ());_abc :=&image {_aac :_gfab ,_fda :_fegb ,_fgaf :_gba };if _bccc .BehindDocAttr {_gdbb ._ebcb ._bgc =append (_gdbb ._ebcb ._bgc ,_abc );}else {_gdbb ._ebcb ._gd =append (_gdbb ._ebcb ._gd ,_abc );};};}else if _ecgbg ,_beg :=_fdc .(*_fc .Chart );_beg {_aae ,_acg :=_gdbb .makePdfBlockFromChart (_ecgbg ,_gbfd ,_bad );if _acg !=nil {_fa .Log .Debug ("C\u0061\u006e\u006e\u006ft \u0072e\u0061\u0064\u0020\u0062\u006co\u0063\u006b\u003a\u0020\u0025\u0073",_acg );};if _aae !=nil {_aab :=&block {_ceb :_aae ,_ec :_fegb ,_cbea :_gba };if _bccc .BehindDocAttr {_gdbb ._ebcb ._bbc =append (_gdbb ._ebcb ._bbc ,_aab );}else {_gdbb ._ebcb ._fea =append (_gdbb ._ebcb ._fea ,_aab );};};};};};};};};};};};};};func _deea (_adgg *_bb .CT_TblWidth ,_gcgg ,_eccb float64 )float64 {if _adgg !=nil {if _agef :=_adgg .WAttr ;_agef !=nil {if _ffeg :=_agef .ST_DecimalNumberOrPercent ;_ffeg !=nil {if _fgcg :=_ffeg .ST_UnqualifiedPercentage ;_fgcg !=nil {switch _adgg .TypeAttr {case _bb .ST_TblWidthDxa :return float64 (*_fgcg )/20;case _bb .ST_TblWidthPct :return float64 (*_fgcg )/100*_gcgg ;default:return _eccb ;};};};};};return _eccb ;};func (_caf *convertContext )drawPage (_daad *page ){if _daad ._cf {_deg :=_daad ._fd .Top +_dfea *_ca ;_caa :=_daad ._fd .Left ;_dgaa :=_daad ._fd .Right ;_ad .DrawLine (_caf ._dgaad ,_caa ,_deg ,_dgaa ,_deg ,_ffd ,_ae .ColorBlack );};for _ ,_cdc :=range _daad ._dd {_dac (_caf ._dgaad ,_cdc );};for _ ,_cg :=range _daad ._fab {_beb (_caf ._dgaad ,_cg );};for _ ,_fbc :=range _daad ._fce {if _fbc ._fecc {_gfa :=_fbc ._cc +_dfea *_ca ;_eca :=_daad ._fd .Left ;_cafd :=_eca +_fadg (50);_ad .DrawLine (_caf ._dgaad ,_eca ,_gfa ,_cafd ,_gfa ,_ffd ,_ae .ColorBlack );}else {for _ ,_gga :=range _fbc ._aef {for _ ,_fdg :=range _gga ._ce {for _ ,_bae :=range _fdg ._de {for _ ,_dba :=range _bae ._be {if _dba ._ggd !=nil {_dba ._ggd .SetPos (_bae ._eg +_dba ._daa ,_fbc ._cc +_gga ._fb );_caf ._dgaad .Draw (_dba ._ggd );}else if _dba ._aagg !=nil {_dba ._aagg ._ec =_bae ._eg +_dba ._daa ;_dba ._aagg ._cbea =_fbc ._cc +_gga ._fb ;_beb (_caf ._dgaad ,_dba ._aagg );}else {_dgfa :=_caf ._dgaad .NewStyledParagraph ();if _dba ._bbd {_dba ._cdb =0;}else if _dba ._eec {_dba ._cd
2022-06-27 19:44:23 +00:00
2022-09-02 11:46:53 +00:00
// RegisterFontsFromDirectory registers all fonts from the given directory automatically detecting font families and styles. For composite fonts use RegisterCompositeFontsFromDirectory.
func RegisterFontsFromDirectory (dirName string )error {return _ad .RegisterFontsFromDirectory (dirName )};func _bcgc (_fdded uint16 )string {switch _fdded {case 0x429,0x401,0x801,0xc01,0x1001,0x1401,0x1801,0x1c01,0x2001,0x2401,0x2801,0x2c01,0x3001,0x3401,0x3801,0x3c01,0x4001,0x420,0x846,0x859,0x45f,0x460,0x463,0x48c:return "\u0041\u0072\u0061\u0062";case 0x42b:return "\u0041\u0072\u006d\u006e";case 0x445,0x845,0x44d,0x458:return "\u0042\u0065\u006e\u0067";case 0x45d:return "\u0043\u0061\u006e\u0073";case 0x45c:return "\u0043\u0068\u0065\u0072";case 0x419,0x402,0x281a,0x422,0x819,0xc1a,0x1c1a,0x201a,0x301a,0x423,0x428,0x82c,0x42f,0x43f,0x440,0x843,0x444,0x450,0x46d,0x485:return "\u0043\u0072\u0079\u006c";case 0x439,0x44e,0x44f,0x457,0x459,0x860,0x461,0x861:return "\u0044\u0065\u0076\u0061";case 0x45e,0x473,0x873:return "\u0045\u0074\u0068\u0069";case 0x437:return "\u0047\u0065\u006f\u0072";case 0x408:return "\u0047\u0072\u0065\u006b";case 0x447:return "\u0047\u0075\u006a\u0072";case 0x446:return "\u0047\u0075\u0072\u0075";case 0x412:return "\u0048\u0061\u006e\u0067";case 0x804,0x1004:return "\u0048\u0061\u006e\u0073";case 0x404,0xc04,0x1404:return "\u0048\u0061\u006e\u0074";case 0x40d,0x43d:return "\u0048\u0065\u0062\u0072";case 0x411:return "\u004a\u0070\u0061\u006e";case 0x453:return "\u004b\u0068\u006d\u0072";case 0x44b:return "\u004b\u006e\u0064\u0061";case 0x454:return "\u004c\u0061\u006f\u006f";case 0x409,0xc09,0x809,0x1009,0x403,0x406,0x413,0x813,0x479,0x40b,0x40c,0xc0c,0x407,0x807,0xc07,0x1007,0x1407,0x410,0x414,0x814,0x416,0x816,0x40a,0x41d,0x405,0x40e,0x415,0x41f,0x42d,0x424,0x426,0x427,0x418,0x818,0x241a,0x41a,0x491,0x83c,0x430,0x431,0x432,0x433,0x434,0x435,0x436,0x425,0x456,0x41b,0x1409,0x1809,0x1c09,0x2009,0x2409,0x2809,0x2c09,0x3009,0x3409,0x3809,0x3c09,0x4009,0x4409,0x4809,0x80a,0xc0a,0x100a,0x140a,0x180a,0x1c0a,0x200a,0x240a,0x280a,0x2c0a,0x300a,0x340a,0x380a,0x3c0a,0x400a,0x440a,0x480a,0x4c0a,0x500a,0x540a,0x80c,0x100c,0x140c,0x180c,0x1c0c,0x200c,0x240c,0x280c,0x2c0c,0x300c,0x340c,0x3c0c,0x380c,0x40f,0x810,0x417,0x81a,0x101a,0x141a,0x181a,0x2c1a,0x41c,0x81d,0x421,0x42c,0x42e,0x82e,0x438,0x43a,0x43b,0x83b,0xc3b,0x103b,0x143b,0x183b,0x1c3b,0x203b,0x243b,0x43e,0x83e,0x441,0x442,0x443,0x452,0x85d,0x85f,0x462,0x464,0x466,0x467,0x468,0x469,0x46a,0x46b,0x86b,0xc6b,0x46c,0x46e,0x46f,0x470,0x471,0x472,0x474,0x475,0x476,0x477,0x47a,0x47c,0x47e,0x481,0x482,0x483,0x484,0x486,0x487,0x488:return "\u004c\u0061\u0074\u006e";case 0x44c:return "\u004d\u006c\u0079\u006d";case 0x850:return "\u004d\u006f\u006e\u0067";case 0x455:return "\u004d\u0079\u006d\u0072";case 0x448:return "\u004f\u0072\u0079\u0061";case 0x45b:return "\u0053\u0069\u006e\u0068";case 0x45a:return "\u0053\u0079\u0072\u0063";case 0x449:return "\u0054\u0061\u006d\u006c";case 0x44a:return "\u0054\u0065\u006c\u0075";case 0x465:return "\u0054\u0068\u0061\u0061";case 0x41e:return "\u0054\u0068\u0061\u0069";case 0x851,0x451:return "\u0054\u0069\u0062\u0074";case 0x480:return "\u0055\u0069\u0067\u0068";case 0x42a:return "\u0056\u0069\u0065\u0074";case 0x478:return "\u0059\u0069\u0069\u0069";};return "";};func _fffb (_fdbf *_d .Document ,_ecca *_bb .CT_TblPr )(*_bb .CT_TblPr ,*_bb .CT_PPrGeneral ,*_bb .CT_RPr ){_abaa :=_bb .NewCT_PPrGeneral ();_eceg :=_bb .NewCT_RPr ();if _ecca ==nil {_ecca =_bb .NewCT_TblPr ();}else {if _ecca .TblStyle !=nil {_ecca ,_abaa ,_eceg =_aecg (_fdbf ,_ecca .TblStyle .ValAttr ,_ecca ,_abaa ,_eceg );};};return _ecca ,_abaa ,_eceg ;};func (_ddcf *convertContext )addCurrentWordToParagraph (){for {_gaag :=_ddcf ._adcf ._bfd ;_bbcg :=_gaag +_ddcf ._adcc ._fg ;if _bbcg > _ddcf ._adcf ._dcc {_ddcf .newLine ();};_bfc :=_ddcf ._ebcb ._cc +_ddcf ._adcf ._fb ;_cefa :=_bfc +_ddcf ._adcf ._bgf ;_acb :=false ;_efea :=append (_ddcf ._bebb ._bf ,_ddcf ._ebcb ._ga ...);for _ ,_eafa :=range _efea {_fabdb :=_eafa ._ebb ;if ((_bfc > _fabdb .Top &&_bfc < _fabdb .Bottom )||(_cefa > _fabdb .Top &&_cefa < _fabdb .Bottom ))&&((_gaag > _fabdb .Left &&_gaag < _fabdb .Right )||(_bbcg > _fabdb .Left &&_bbcg < _fabdb .Right )){_acb =true ;if _ddcf ._adcf ._bfd < _fa