diff --git a/kernel/model/export.go b/kernel/model/export.go index 0c8335b7b..82573e9fc 100644 --- a/kernel/model/export.go +++ b/kernel/model/export.go @@ -29,7 +29,6 @@ import ( "sort" "strconv" "strings" - "text/template" "time" "unicode/utf8" @@ -41,7 +40,6 @@ import ( "github.com/88250/lute/render" "github.com/88250/pdfcpu/pkg/api" "github.com/88250/pdfcpu/pkg/pdfcpu" - "github.com/Masterminds/sprig/v3" "github.com/emirpasic/gods/sets/hashset" "github.com/emirpasic/gods/stacks/linkedliststack" "github.com/imroc/req/v3" @@ -715,7 +713,6 @@ func ProcessPDF(id, p string, merge, removeAssets bool) (err error) { processPDFBookmarks(pdfCtx, headings) processPDFLinkEmbedAssets(pdfCtx, assetDests, removeAssets) - processPDFFooter(pdfCtx) pdfcpu.VersionStr = "SiYuan v" + util.Ver if writeErr := api.WriteContextFile(pdfCtx, p); nil != writeErr { @@ -975,50 +972,6 @@ func processPDFLinkEmbedAssets(pdfCtx *pdfcpu.Context, assetDests []string, remo } } -func processPDFFooter(pdfCtx *pdfcpu.Context) { - templateContent := strings.TrimSpace(Conf.Export.PDFFooter) - if "" == templateContent { - return - } - - footerTpl, err := template.New("").Funcs(sprig.TxtFuncMap()).Parse(templateContent) - if nil != err { - logging.LogErrorf("parse pdf footer template failed: %s", err) - return - } - - buf := &bytes.Buffer{} - buf.Grow(4096) - err = footerTpl.Execute(buf, nil) - if nil != err { - logging.LogErrorf("render pdf footer template failed: %s", err) - return - } - footer := buf.String() - - fontName := util.InstallPDFFonts() - - pos := "bc" - desc := fmt.Sprintf("font:%s, points:8, sc:1 abs, pos:%s, off:10 10, fillc: 0.5 0.5 0.5, rot:0", fontName, pos) - footer = strings.ReplaceAll(footer, "%pages", strconv.Itoa(pdfCtx.PageCount)) - m := map[int]*pdfcpu.Watermark{} - for i := 1; i <= pdfCtx.PageCount; i++ { - text := strings.ReplaceAll(footer, "%page", strconv.Itoa(i)) - wm, watermarkErr := api.TextWatermark(text, desc, true, false, pdfcpu.POINTS) - if nil != watermarkErr { - logging.LogErrorf("add pdf footer failed: %s", watermarkErr) - return - } - - m[i] = wm - } - - if watermarkErr := pdfCtx.AddWatermarksMap(m); nil != watermarkErr { - logging.LogErrorf("add pdf footer failed: %s", watermarkErr) - return - } -} - func ExportStdMarkdown(id string) string { tree, err := loadTreeByBlockID(id) if nil != err { diff --git a/kernel/util/font.go b/kernel/util/font.go index f66fc4b71..77732c530 100644 --- a/kernel/util/font.go +++ b/kernel/util/font.go @@ -22,12 +22,7 @@ import ( "strings" "github.com/88250/gulu" - "github.com/88250/pdfcpu/pkg/api" - "github.com/88250/pdfcpu/pkg/font" "github.com/ConradIrwin/font/sfnt" - "github.com/adrg/strutil" - "github.com/adrg/strutil/metrics" - "github.com/adrg/sysfont" "github.com/flopp/go-findfont" "github.com/siyuan-note/logging" ttc "golang.org/x/image/font/sfnt" @@ -35,54 +30,6 @@ import ( "golang.org/x/text/transform" ) -var ( - preferredPDFWatermarkFonts = []string{"MicrosoftYaHei", "SimSun", "ArialUnicode", "Xihei", "Heiti", "AquaHiraKaku", "AppleGothic", "Helvetica"} -) - -func InstallPDFFonts() string { - names := font.UserFontNames() - if 0 < len(names) { - return getPreferredPDFWatermarkFont(names) - } - - finder := sysfont.NewFinder(&sysfont.FinderOpts{Extensions: []string{".ttf", ".ttc"}}) - var fontPaths []string - for _, preferredFont := range preferredPDFWatermarkFonts { - f := finder.Match(preferredFont) - if nil != f { - fontPaths = append(fontPaths, f.Filename) - } - } - - logging.LogInfof("installing fonts [%s]", strings.Join(fontPaths, ", ")) - if err := api.InstallFonts(fontPaths); nil != err { - logging.LogErrorf("install font [%s] failed: %s", strings.Join(fontPaths, ", "), err) - return getPreferredPDFWatermarkFont(names) - } - - names = font.UserFontNames() - return getPreferredPDFWatermarkFont(names) -} - -func getPreferredPDFWatermarkFont(userFontNames []string) (ret string) { - ret = "Helvetica" - if 1 > len(userFontNames) { - return - } - - var score float64 - for _, preferredFont := range preferredPDFWatermarkFonts { - for _, userFont := range userFontNames { - if tmp := strutil.Similarity(preferredFont, userFont, &metrics.JaroWinkler{CaseSensitive: false}); score < tmp { - ret = preferredFont - score = tmp - } - } - } - logging.LogInfof("preferred PDF font [%s]", ret) - return -} - func GetSysFonts(currentLanguage string) (ret []string) { fonts := loadFonts(currentLanguage) ret = []string{}