24 lines
65 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/
2021-11-10 11:45:21 +00:00
package convert ;import (_gg "bytes";_ff "errors";_b "github.com/unidoc/unioffice/common/logger";_d "github.com/unidoc/unioffice/common/tempstorage";_ag "github.com/unidoc/unioffice/document";_eb "github.com/unidoc/unioffice/internal/convertutils";_ef "github.com/unidoc/unioffice/measurement";_fd "github.com/unidoc/unioffice/schema/soo/dml";_ac "github.com/unidoc/unioffice/schema/soo/dml/chart";_cc "github.com/unidoc/unioffice/schema/soo/dml/picture";_de "github.com/unidoc/unioffice/schema/soo/ofc/sharedTypes";_db "github.com/unidoc/unioffice/schema/soo/wml";_c "github.com/unidoc/unipdf/v3/creator";_cg "github.com/unidoc/unipdf/v3/model";_a "io/ioutil";_e "strconv";_f "strings";);func (_cfeg *convertContext )addRelativeRIC (_aade *_db .EG_RunInnerContent ,_babf *_db .CT_RPr ){var _bdf *_c .TextChunk ;var _edead ,_cgcee bool ;_cegd :=false ;if _aade ==nil {if _cfeg ._dgfg !=nil {_edead =true ;_bdf =_cfeg ._bgda .Append (_cfeg ._dgfg ._bbea );};}else {if _aade .T !=nil &&_aade .T .Content !=""{_cedd :=_aade .T .Content ;if _eeeaf :=_cfeg ._fbac ;_eeeaf !=nil &&_eeeaf .IdAttr !=nil {_cegd =true ;_bdf =_cfeg ._bgda .AddExternalLink (_cedd ,_cfeg ._abea .GetTargetByRelId (*_eeeaf .IdAttr ));}else {_bdf =_cfeg ._bgda .Append (_cedd );};}else if _gagd :=_aade .EndnoteReference ;_gagd !=nil {_eeee :=_cfeg ._abea .BodySection ().X ();_edead =true ;_eccf :=_gagd .IdAttr ;_edgde :=_eccf ;_gdac :=_db .ST_NumberFormatLowerRoman ;if _faef :=_eeee .EndnotePr ;_faef !=nil {if _ddea :=_faef .NumFmt ;_ddea !=nil {_gdac =_ddea .ValAttr ;};if _bba :=_faef .NumStart ;_bba !=nil {_edgde +=_bba .ValAttr -1;};};_gdbe :=_fegg (_edgde ,_gdac );_dcc :=_cfeg ._abea .Endnote (_eccf ).X ();if _dcc !=nil {_cfeg ._fdde =append (_cfeg ._fdde ,note {_fc :_gdbe ,_efb :_dcc .EG_BlockLevelElts });_bdf =_cfeg ._bgda .Append (_gdbe );};}else if _fcfc :=_aade .FootnoteReference ;_fcfc !=nil {_beda :=_cfeg ._abea .BodySection ().X ();_edead =true ;_bafg :=_fcfc .IdAttr ;_dae :=_bafg ;_dfgg :=_db .ST_NumberFormatDecimal ;if _bgdf :=_beda .FootnotePr ;_bgdf !=nil {if _bdag :=_bgdf .NumFmt ;_bdag !=nil {_dfgg =_bdag .ValAttr ;};if _eagg :=_bgdf .NumStart ;_eagg !=nil {_dae +=_eagg .ValAttr -1;};};_gbgc :=_fegg (_dae ,_dfgg );_bdf =_cfeg ._bgda .Append (_gbgc );};};if _bdf !=nil {_bdf .Style ,_ ,_ ,_ =_cfeg .makeRunStyle (_babf ,_edead ,_cgcee ,true ,false ,_cegd );};};func _dfaa (_ebag float64 )float64 {return _ebag *_ef .Millimeter };func _dddd (_febc *_db .CT_Border )(_c .CellBorderStyle ,*_c .Color ,float64 ){if _febc ==nil {return _c .CellBorderStyleNone ,nil ,0;};var _bfdf _c .CellBorderStyle ;switch _febc .ValAttr {case _db .ST_BorderSingle :_bfdf =_c .CellBorderStyleSingle ;case _db .ST_BorderDouble :_bfdf =_c .CellBorderStyleDouble ;default:_bfdf =_c .CellBorderStyleNone ;};var _bgga _c .Color ;if _bacd :=_febc .ColorAttr ;_bacd !=nil {if _adcb :=_bacd .ST_HexColorRGB ;_adcb !=nil {_bgga =_c .ColorRGBFromHex ("\u0023"+*_adcb );};};_efbf :=0.0;if _dffb :=_febc .SzAttr ;_dffb !=nil {_efbf =float64 (*_dffb )/8;};return _bfdf ,&_bgga ,_efbf ;};func (_dfeb *convertContext )addSeparator (){_dfeb .newParagraph ();_dfeb ._fecf ._edf =true ;_dfeb ._fecf ._gc =_efg ;if _dfeb .currentParagraphOverflowsCurrentPage (){_dfeb .moveCurrentParagraphToNewPage ();};_dfeb .addCurrentParagraphToCurrentPage ();};var _efg =_dfaa (6);type word struct{_aee []*symbol ;_bbf float64 ;_agc float64 ;_aga bool ;};
2021-08-23 20:44:48 +00:00
2021-11-10 11:45:21 +00:00
// RegisterFont makes a PdfFont accessible for using in converting to PDF.
func RegisterFont (name string ,style FontStyle ,font *_cg .PdfFont ){_eb .RegisterFont (name ,style ,font );};func _add (_gfe *_c .Creator ,_gfc *image ){_gfc ._fe .SetPos (_gfc ._afc ,_gfc ._bge );_gfe .Draw (_gfc ._fe )};func (_eed *convertContext )addCurrentWordToParagraph (){for {_gcfg :=_eed ._edgdg ._fcf ;_beae :=_gcfg +_eed ._beaa ._agc ;if _beae > _eed ._edgdg ._dce {_eed .newLine ();};_gced :=_eed ._fecf ._bb +_eed ._edgdg ._da ;_cag :=_gced +_eed ._edgdg ._gb ;_fdfg :=false ;_addg :=append (_eed ._bage ._aag ,_eed ._fecf ._fdd ...);for _ ,_eeab :=range _addg {_ada :=_eeab ._dg ;if ((_gced > _ada .Top &&_gced < _ada .Bottom )||(_cag > _ada .Top &&_cag < _ada .Bottom ))&&((_gcfg > _ada .Left &&_gcfg < _ada .Right )||(_beae > _ada .Left &&_beae < _ada .Right )){_fdfg =true ;if _eed ._edgdg ._fcf < _ada .Right {_eed ._ebac ._acg =_ada .Left ;_eed ._edgdg ._fcf =_ada .Right ;_eed .newSpan ();};};};if !_fdfg {break ;};};if !_eed ._beaa ._aga ||len (_eed ._ebac ._aeg )> 0{_eed ._beaa ._bbf =_eed ._edgdg ._fcf ;_eed ._ebac ._aeg =append (_eed ._ebac ._aeg ,_eed ._beaa );_eed ._edgdg ._fcf +=_eed ._beaa ._agc ;for _ ,_egca :=range _eed ._beaa ._aee {_eed .adjustHeights (_egca ._edgf );};};};const _aa =0.67;func (_cdfa *convertContext )makePdfBlockFromChart (_ege *_ac .Chart ,_babg ,_ccce float64 )(*_c .Block ,error ){_bgfg :=_ege .CT_RelId .IdAttr ;_dffg :=_cdfa ._abea .GetChartSpaceByRelId (_bgfg );if _dffg ==nil {return nil ,_ff .New ("\u004e\u006f\u0020\u0063\u0068\u0061\u0072\u0074\u0073\u0070\u0061\u0063\u0065");};var _gadc *_fd .Theme ;_egbg :=_cdfa ._abea .Themes ();if len (_egbg )> 0{_gadc =_egbg [0];};return _eb .MakeBlockFromChartSpace (_dffg ,_babg ,_ccce ,_gadc );};func (_ggg *convertContext )addRelativeCRC (_accg []*_db .EG_ContentRunContent ,_deec *_db .CT_PPr ){for _ ,_bedb :=range _accg {if _agece :=_bedb .R ;_agece !=nil {_cdca :=_ecb (_ggg ._abea ,_agece .RPr ,_deec );if _ggg ._dgfg !=nil {_ggg .addRelativeRIC (nil ,_cdca );_ggg ._dgfg =nil ;};for _ ,_bgac :=range _agece .EG_RunInnerContent {_ggg .addRelativeRIC (_bgac ,_cdca );};};};};func _febb (_feae ,_bbga *_db .CT_PPrGeneral )*_db .CT_PPrGeneral {if _feae ==nil {return _feae ;};if _bbga ==nil {return _feae ;};if _feae .PStyle ==nil {_feae .PStyle =_bbga .PStyle ;};if _feae .KeepNext ==nil {_feae .KeepNext =_bbga .KeepNext ;};if _feae .KeepLines ==nil {_feae .KeepLines =_bbga .KeepLines ;};if _feae .PageBreakBefore ==nil {_feae .PageBreakBefore =_bbga .PageBreakBefore ;};if _feae .FramePr ==nil {_feae .FramePr =_bbga .FramePr ;};if _feae .WidowControl ==nil {_feae .WidowControl =_bbga .WidowControl ;};if _feae .NumPr ==nil {_feae .NumPr =_bbga .NumPr ;};if _feae .SuppressLineNumbers ==nil {_feae .SuppressLineNumbers =_bbga .SuppressLineNumbers ;};if _feae .PBdr ==nil {_feae .PBdr =_bbga .PBdr ;};if _feae .Shd ==nil {_feae .Shd =_bbga .Shd ;};if _feae .Tabs ==nil {_feae .Tabs =_bbga .Tabs ;};if _feae .SuppressAutoHyphens ==nil {_feae .SuppressAutoHyphens =_bbga .SuppressAutoHyphens ;};if _feae .Kinsoku ==nil {_feae .Kinsoku =_bbga .Kinsoku ;};if _feae .WordWrap ==nil {_feae .WordWrap =_bbga .WordWrap ;};if _feae .OverflowPunct ==nil {_feae .OverflowPunct =_bbga .OverflowPunct ;};if _feae .TopLinePunct ==nil {_feae .TopLinePunct =_bbga .TopLinePunct ;};if _feae .AutoSpaceDE ==nil {_feae .AutoSpaceDE =_bbga .AutoSpaceDE ;};if _feae .AutoSpaceDN ==nil {_feae .AutoSpaceDN =_bbga .AutoSpaceDN ;};if _feae .Bidi ==nil {_feae .Bidi =_bbga .Bidi ;};if _feae .AdjustRightInd ==nil {_feae .AdjustRightInd =_bbga .AdjustRightInd ;};if _feae .SnapToGrid ==nil {_feae .SnapToGrid =_bbga .SnapToGrid ;};if _feae .Spacing ==nil {_feae .Spacing =_bbga .Spacing ;};if _feae .Ind ==nil {_feae .Ind =_bbga .Ind ;};if _feae .ContextualSpacing ==nil {_feae .ContextualSpacing =_bbga .ContextualSpacing ;};if _feae .MirrorIndents ==nil {_feae .MirrorIndents =_bbga .MirrorIndents ;};if _feae .SuppressOverlap ==nil {_feae .SuppressOverlap =_bbga .SuppressOverlap ;};if _feae .Jc ==nil {_feae .Jc =_bbga .Jc ;};if _feae .TextDirection ==nil {_feae .TextDirection =_bbga .TextDirectio
2021-07-30 17:03:26 +00:00
2021-08-23 20:44:48 +00:00
// RegisterFontsFromDirectory registers all fonts from the given directory automatically detecting font families and styles. For composite fonts use RegisterCompositeFontsFromDirectory.
2021-11-10 11:45:21 +00:00
func RegisterFontsFromDirectory (dirName string )error {return _eb .RegisterFontsFromDirectory (dirName )};func (_bcc *convertContext )alignSymbolsVertically (){for _ ,_aea :=range _bcc ._acab {for _ ,_gfd :=range _aea ._ad {for _ ,_cgd :=range _gfd ._ga {_cccf :=0.0;for _ ,_bac :=range _cgd ._afgb {for _ ,_faf :=range _bac ._aeg {for _ ,_ggbd :=range _faf ._aee {if _ggbd ._edgf > _cccf {_cccf =_ggbd ._edgf ;};};};};for _ ,_cec :=range _cgd ._afgb {for _ ,_acc :=range _cec ._aeg {for _ ,_dda :=range _acc ._aee {if _dda ._ca < _cccf {_dda ._bc =_cccf -_dda ._ca ;};};};};};};};};type convertContext struct{_bcba *_c .Creator ;_abea *_ag .Document ;_fdea *_db .CT_PPrGeneral ;_aagf *_db .CT_RPr ;_bgda *_c .StyledParagraph ;_acab []*page ;_bage *page ;_cabc *_eb .Rectangle ;_fecf *paragraph ;_edgdg *line ;_ebac *span ;_beaa *word ;_fbac *_db .CT_Hyperlink ;_aacd *_db .CT_ParaRPr ;_fdde []note ;_dgfg *prefix ;_dafd bool ;_gabdg bool ;_aagc bool ;_dafcd float64 ;_cbbb float64 ;_gbgb float64 ;_baca float64 ;_eacg bool ;_dafa map[int64 ]map[int64 ]int ;};func (_fbea *convertContext )combinePPrWithStyles (_bcfc *_db .CT_PPr )(*_db .CT_PPr ,*prefix ){if _bcfc ==nil {return nil ,nil ;};var _bggg *prefix ;if _bcfc !=nil &&_bcfc .NumPr !=nil {if _fggc ,_fbcb :=_bcfc .NumPr .Ilvl ,_bcfc .NumPr .NumId ;_fggc !=nil &&_fbcb !=nil {_dceg :=_fbea ._abea .GetNumberingLevelByIds (_fbcb .ValAttr ,_fggc .ValAttr ).X ();_bcfc =_aafc (_bcfc ,_dceg .PPr ,_dceg .RPr );if _abca :=_dceg .NumFmt ;_abca !=nil {if _ggeb :=_abca .ValAttr ;_ggeb ==_db .ST_NumberFormatBullet ||_ggeb ==_db .ST_NumberFormatDecimal {var _cca []float64 ;if _cfad :=_bcfc .Tabs ;_cfad !=nil &&len (_cfad .Tab )!=0{for _ ,_fcgb :=range _cfad .Tab {_cca =append (_cca ,_eb .PointsFromTwips (*_fcgb .PosAttr .Int64 ));};};_bggg =&prefix {_geab :_cca ,_eacc :true };if _ggeb ==_db .ST_NumberFormatBullet {if _cgeac :=_dceg .LvlText ;_cgeac !=nil {if _bdeb :=_cgeac .ValAttr ;_bdeb !=nil &&*_bdeb !=""{_bggg ._bbea =*_bdeb ;_bggg ._ggfc =true ;};};}else {_aegf ,_aabe :=_fbcb .ValAttr ,_fggc .ValAttr ;if _ ,_ggac :=_fbea ._dafa [_aegf ];!_ggac {_fbea ._dafa [_aegf ]=map[int64 ]int {};};if _ ,_cbd :=_fbea ._dafa [_aegf ][_aabe ];!_cbd {_fbea ._dafa [_aegf ][_aabe ]=1;};_aedc :=_fbea ._dafa [_aegf ][_aabe ];_fbea ._dafa [_aegf ][_aabe ]++;_bggg ._bbea =_e .Itoa (_aedc )+"\u002e";};};};};};if _bcfc !=nil &&_bcfc .PStyle !=nil {_cbbbb ,_fgd :=_fbea .getStyleProps (_bcfc .PStyle .ValAttr );_bcfc =_aafc (_bcfc ,_cbbbb ,_fgd );};return _bcfc ,_bggg ;};type page struct{_ec *_eb .Rectangle ;_ad []*paragraph ;_ee float64 ;_aag []*zoneToSkip ;_ffc []*image ;_ce []*image ;_edc []*block ;_edg []*block ;_aaa []*note ;_bg bool ;};const (FontStyle_Regular FontStyle =0;FontStyle_Bold FontStyle =1;FontStyle_Italic FontStyle =2;FontStyle_BoldItalic FontStyle =3;);func _dgce (_ccdgc *_db .EG_RunInnerContent )bool {if _dedd :=_ccdgc .Br ;_dedd !=nil {return _dedd .TypeAttr ==_db .ST_BrTypePage ;};return false ;};var _dab =[]romanMatch {romanMatch {1000,"\u006d"},romanMatch {900,"\u0063\u006d"},romanMatch {500,"\u0064"},romanMatch {400,"\u0063\u0064"},romanMatch {100,"\u0063"},romanMatch {90,"\u0078\u0063"},romanMatch {50,"\u006c"},romanMatch {40,"\u0078\u006c"},romanMatch {10,"\u0078"},romanMatch {9,"\u0069\u0078"},romanMatch {5,"\u0076"},romanMatch {4,"\u0069\u0076"},romanMatch {1,"\u0069"}};func (_cdd *convertContext )addAbsoluteCBCs (_agb []*_db .EG_ContentBlockContent ){for _ ,_ccc :=range _agb {for _ ,_aged :=range _ccc .P {_cdd .newParagraph ();_aagb ,_fca :=_cdd .combinePPrWithStyles (_aged .PPr );if _fca !=nil {_cdd ._dgfg =_fca ;};_cdd .assignPropsToAbsoluteParagraph (_aagb ,_cdd ._fecf );_cdd .determineParagraphBounds ();_cdd .newLine ();_cdd .newWord ();_ceb :=_aged .EG_PContent ;if len (_ceb )==0{_cdd .addEmptyLine ();}else {_cdd .addAnchorBlocks (_ceb );_cdd .addAnchorExtra (_ceb );if _cdd .addAbsoluteEGPC (_ceb ,_aagb ){_cdd .newPage ();continue ;};if _cdd .currentParagraphOverflowsCurrentPage (){_cdd .moveCurrentParagraphToNewPage ();_cdd .addAbsoluteEGPC (_ceb ,_aagb );};_cdd .addCurrentWordToPar
2021-07-30 17:03:26 +00:00
2021-11-10 11:45:21 +00:00
// FontStyle represents a kind of font styling. It can be FontStyle_Regular, FontStyle_Bold, FontStyle_Italic and FontStyle_BoldItalic.
type FontStyle =_eb .FontStyle ;func (_gdc *convertContext )addRelativeCBCs (_egdf []*_db .EG_ContentBlockContent ){for _ ,_egeb :=range _egdf {_gdc .addHdrFtr (_egeb .P );};};func _dcad (_gffc *_db .CT_TblWidth ,_adcg ,_gadf float64 )float64 {if _gffc !=nil {if _dafe :=_gffc .WAttr ;_dafe !=nil {if _gbeb :=_dafe .ST_DecimalNumberOrPercent ;_gbeb !=nil {if _gdfae :=_gbeb .ST_UnqualifiedPercentage ;_gdfae !=nil {switch _gffc .TypeAttr {case _db .ST_TblWidthDxa :return float64 (*_gdfae )/56.7;case _db .ST_TblWidthPct :return float64 (*_gdfae )/100*_adcg ;default:return _gadf ;};};};};};return _gadf ;};func _cdac (_eaad int ,_gaeaf bool )string {_fcdc :=(_eaad -1)/26+1;_efcf :=byte ((_eaad -1)%26);if _gaeaf {_efcf +=byte (65);}else {_efcf +=byte (97);};_cggbf :=_gg .NewBuffer ([]byte {});for _deca :=0;_deca < _fcdc ;_deca ++{_cggbf .Write ([]byte {_efcf });};return _cggbf .String ();};func (_gccgf *convertContext )makeRunStyle (_adgg *_db .CT_RPr ,_fecb ,_dgfc ,_dgad ,_eddc ,_cgdfg bool )(_c .TextStyle ,bool ,bool ,*_c .Color ){var _eedc *_c .Color ;_fbee :=_gccgf ._bcba .NewTextStyle ();if _adgg !=nil {_bbcc :=_eb .FontStyle_Regular ;_efcb :=_gcfgg (_adgg .B );_cfdg :=_gcfgg (_adgg .I );if _efcb &&_cfdg {_bbcc =_eb .FontStyle_BoldItalic ;}else if _efcb {_bbcc =_eb .FontStyle_Bold ;}else if _cfdg {_bbcc =_eb .FontStyle_Italic ;};if _eddc {_fbee .Font =_eb .AssignStdFontByName (_fbee ,"\u0053\u0079\u006d\u0062\u006f\u006c");}else {_ddeb :="\u0064e\u0066\u0061\u0075\u006c\u0074";if _deeg :=_adgg .RFonts ;_deeg !=nil {if _ecddc :=_deeg .AsciiAttr ;_ecddc !=nil {_ddeb =*_ecddc ;}else if _fbef :=_deeg .HAnsiAttr ;_fbef !=nil {_ddeb =*_fbef ;}else {_baad :=_gccgf ._aagf ;if _baad !=nil {if _fcbaa :=_baad .RFonts ;_fcbaa !=nil {if _gedb :=_deeg .HintAttr ;_gedb ==_db .ST_HintEastAsia {if _fcbaa .EastAsiaAttr !=nil {_ddeb =*_baad .RFonts .EastAsiaAttr ;};}else {if _fdffe :=_fcbaa .AsciiAttr ;_fdffe !=nil {_ddeb =*_fdffe ;}else if _geae :=_fcbaa .HAnsiAttr ;_geae !=nil {_ddeb =*_geae ;};};};};};};if _fcbe ,_dgfgf :=_eb .StdFontsMap [_ddeb ];_dgfgf {_fbee .Font =_eb .AssignStdFontByName (_fbee ,_fcbe [_bbcc ]);}else if _bedf :=_eb .GetRegisteredFont (_ddeb ,_bbcc );_bedf !=nil {_fbee .Font =_bedf ;}else {_b .Log .Debug ("\u0046\u006f\u006e\u0074\u0020\u0025\u0073\u0020\u0077\u0069\u0074h\u0020\u0073\u0074\u0079\u006c\u0065\u0020\u0025s\u0020i\u0073\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u002c\u0020\u0072\u0065\u0073\u0065\u0074 \u0074\u006f\u0020\u0064\u0065\u0066\u0061\u0075\u006c\u0074\u002e",_ddeb ,_bbcc );_fbee .Font =_eb .AssignStdFontByName (_fbee ,_eb .StdFontsMap ["\u0064e\u0066\u0061\u0075\u006c\u0074"][_bbcc ]);};};_egbga :=_cbba (_adgg .Sz ,_adgg .SzCs );if _bbff :=_adgg .VertAlign ;_bbff !=nil {_aeaf :=_bbff .ValAttr ;_fecb =_aeaf ==_de .ST_VerticalAlignRunSuperscript ;_dgfc =_aeaf ==_de .ST_VerticalAlignRunSubscript ;};if _egbga > _gccgf ._baca {_gccgf ._baca =_egbga ;};if _fecb ||_dgfc {_egbga *=0.64;};if _dgad {if _fecb {_fbee .TextRise =1.5;};if _dgfc {_fbee .TextRise =-1.5;};};_fbee .FontSize =_egbga ;_ffgc :=0.0;if _cgdd :=_adgg .Spacing ;_cgdd !=nil {_ffgc =_eb .PointsFromTwips (*_cgdd .ValAttr .Int64 );};_fbee .CharSpacing =_ffgc ;_feff :=_c .ColorBlack ;if _adgg .Color !=nil {_abac :=_adgg .Color .ValAttr .ST_HexColorRGB ;if _abac !=nil {_feff =_c .ColorRGBFromHex ("\u0023"+*_abac );};};if _dgad {_fddc ,_geaag ,_fcce :=_feff .ToRGB ();_fddc ,_geaag ,_fcce =_eb .Lighten (_fddc ),_eb .Lighten (_geaag ),_eb .Lighten (_fcce );_feff =_c .ColorRGBFromArithmetic (_fddc ,_geaag ,_fcce );};_fbee .Color =_feff ;if _cgdfg {_eedc =&_feff ;};if _adgg .U !=nil &&_adgg .U .ValAttr !=_db .ST_UnderlineNone &&!_eddc {_eedc =&_feff ;if _cfbc :=_adgg .U .ColorAttr ;_cfbc !=nil {if _cfcad :=_cfbc .ST_HexColorRGB ;_cfcad !=nil {_baae :=_c .ColorRGBFromHex ("\u0023"+*_cfcad );_eedc =&_baae ;};};};};return _fbee ,_fecb ,_dgfc ,_eedc ;};func (_dgc *convertContext )addHdrFtr (_cfcc []*_db .CT_P ){for _ ,_gec :=range _cfcc {_gdgd :=_dgc ._bcba .NewStyledParagraph ();_dgc ._bgda =_gdgd ;_bacab ,_gdfa :=_dgc .combinePPr
2021-09-22 16:41:01 +00:00
2021-11-10 11:45:21 +00:00
// ConvertToPdf converts document to PDF file. This package is beta, breaking changes can take place.
func ConvertToPdf (d *_ag .Document )*_c .Creator {var _gedd *_db .CT_PPrGeneral ;var _bff *_db .CT_RPr ;if _egee :=d .Styles .X ().DocDefaults ;_egee !=nil {if _ddd :=_egee .PPrDefault ;_ddd !=nil {_gedd =_ddd .PPr ;};if _cdda :=_egee .RPrDefault ;_cdda !=nil {_bff =_cdda .RPr ;};};_defa :=d .BodySection ().X ();var _bfdg ,_bgg ,_aecb ,_aeedb ,_gaff ,_ded float64 ;_dad :=_defa .PgMar ;if _dad .LeftAttr .ST_UnsignedDecimalNumber !=nil {_bfdg =_eb .PointsFromTwips (int64 (*_dad .LeftAttr .ST_UnsignedDecimalNumber ));};if _dad .LeftAttr .ST_UnsignedDecimalNumber !=nil {_bgg =_eb .PointsFromTwips (int64 (*_dad .RightAttr .ST_UnsignedDecimalNumber ));};if _dad .TopAttr .Int64 !=nil {_aecb =_eb .PointsFromTwips (*_dad .TopAttr .Int64 );};if _dad .BottomAttr .Int64 !=nil {_aeedb =_eb .PointsFromTwips (*_dad .BottomAttr .Int64 );};_efcdc :=_defa .PgSz ;_ebgb ,_ggff :=_dfaa (210),_dfaa (297);if _efcdc .WAttr !=nil {_ebgb =_eb .PointsFromTwips (int64 (*_efcdc .WAttr .ST_UnsignedDecimalNumber ));};if _efcdc .HAttr !=nil {_ggff =_eb .PointsFromTwips (int64 (*_efcdc .HAttr .ST_UnsignedDecimalNumber ));};if _dad .HeaderAttr .ST_UnsignedDecimalNumber !=nil {_gaff =_eb .PointsFromTwips (int64 (*_dad .HeaderAttr .ST_UnsignedDecimalNumber ));};if _dad .FooterAttr .ST_UnsignedDecimalNumber !=nil {_ded =_aeedb -_eb .PointsFromTwips (int64 (*_dad .FooterAttr .ST_UnsignedDecimalNumber ));};if d .Settings .X ().DefaultTabStop ==nil {_aaaf =_dfaa (12.7);}else {_aaaf =_eb .PointsFromTwips (int64 (*d .Settings .X ().DefaultTabStop .ValAttr .ST_UnsignedDecimalNumber ));};_bebc :=_c .New ();_bebc .SetPageSize (_c .PageSize {_ebgb ,_ggff });_bebc .SetPageMargins (_bfdg ,_bgg ,_aecb ,_aeedb );for _ ,_acgc :=range d .Headers (){_fag :=&convertContext {_bcba :_bebc ,_abea :d ,_fdea :_gedd ,_aagf :_bff ,_gabdg :true ,_dafcd :_bfdg ,_cbbb :_gaff };_fag .addRelativeCBCs (_acgc .X ().EG_ContentBlockContent );};for _ ,_efbg :=range d .Footers (){_eef :=&convertContext {_bcba :_bebc ,_abea :d ,_fdea :_gedd ,_aagf :_bff ,_aagc :true ,_dafcd :_bfdg ,_gbgb :_ded };_eef .addRelativeCBCs (_efbg .X ().EG_ContentBlockContent );};_ecgd :=&convertContext {_bcba :_bebc ,_abea :d ,_fdea :_gedd ,_aagf :_bff ,_cabc :&_eb .Rectangle {Top :_aecb ,Bottom :_ggff -_aeedb ,Left :_bfdg ,Right :_ebgb -_bgg },_fdde :[]note {},_dafa :map[int64 ]map[int64 ]int {}};for _ ,_badf :=range d .X ().Body .EG_BlockLevelElts {_ecgd .addAbsoluteCBCs (_badf .EG_ContentBlockContent );};_ecgd .addEndnotes ();_ecgd .alignSymbolsVertically ();_ecgd .drawPages ();return _bebc ;};func (_fdgd *convertContext )adjustRightBoundOfLastSpan (){_efcd :=_fdgd ._ebac ._acg ;_gaea :=_fdgd ._edgdg ._da +_fdgd ._fecf ._bb ;_bgd :=_gaea +_fdgd ._edgdg ._gb ;for _ ,_egbf :=range _fdgd ._bage ._aag {if ((_gaea > _egbf ._dg .Top &&_gaea < _egbf ._dg .Bottom )||(_bgd > _egbf ._dg .Top &&_gaea < _egbf ._dg .Bottom ))&&(_efcd > _egbf ._dg .Left ){_efcd =_egbf ._dg .Left ;};};_fdgd ._ebac ._acg =_efcd ;};func (_ffd *convertContext )currentParagraphOverflowsCurrentPage ()bool {_dga :=_ffd ._fecf ._bb +_ffd ._fecf ._eee .Top +_ffd ._fecf ._eee .Bottom ;_fgb :=_ffd ._bage ._ec .Bottom -_ffd ._fecf ._fba ;if len (_ffd ._bage ._aaa )==0&&len (_ffd ._fecf ._aae )> 0{_fgb -=_efg ;};return _dga +_ffd ._fecf ._gc > _fgb ||_dga +_ffd ._fecf ._gf > _fgb ;};type symbol struct{_eeec string ;_fad float64 ;_bc float64 ;_ggf float64 ;_edgf float64 ;_ca float64 ;_gea *_c .TextStyle ;_cgf *_c .Image ;_be *block ;_agad string ;_cf bool ;_fde bool ;_bcg *_c .Color ;};type paragraph struct{_afg float64 ;_eee *_eb .Rectangle ;_ae float64 ;_eea float64 ;_fb float64 ;_bb float64 ;_gc float64 ;_ece _c .TextAlignment ;_gcf float64 ;_ga []*line ;_cd *tableWrapper ;_ea []*image ;_eag []*image ;_gcb []*block ;_fbg []*block ;_aae []*note ;_fba float64 ;_fdd []*zoneToSkip ;_gf float64 ;_edf bool ;};func (_egbd *convertContext )addEmptyLine (){_egbd .addTextSymbol (&symbol {_eeec :"\u000d",_ggf :0,_edgf :_egbd ._fecf ._gcf });};func (_geef *convertContext )newPage (){_fade :=&page {};_fade ._ec =_geef ._cabc ;_fade ._ee =_fade ._ec .Top ;if _geef