MCPcopy Index your code
hub / github.com/TruthHun/BookStack / GenerateBook

Method GenerateBook

models/document.go:343–555  ·  view source on GitHub ↗

离线文档生成

(book *Book, baseUrl string)

Source from the content-addressed store, hash-verified

341
342//离线文档生成
343func (m *Document) GenerateBook(book *Book, baseUrl string) {
344 //将书籍id加入进去,表示正在生成离线文档
345 utils.BooksGenerate.Set(book.BookId)
346 defer utils.BooksGenerate.Delete(book.BookId) //最后移除
347
348 //公开文档,才生成文档文件
349 debug := true
350 if beego.AppConfig.String("runmode") == "prod" {
351 debug = false
352 }
353 Nickname := new(Member).GetNicknameByUid(book.MemberId)
354
355 docs, err := NewDocument().FindListByBookId(book.BookId)
356
357 if err != nil {
358 beego.Error(err)
359 return
360 }
361
362 var ExpCfg = converter.Config{
363 Contributor: beego.AppConfig.String("exportCreator"),
364 Cover: "",
365 Creator: beego.AppConfig.String("exportCreator"),
366 Timestamp: book.ReleaseTime.Format("2006-01-02"),
367 Description: book.Description,
368 Header: beego.AppConfig.String("exportHeader"),
369 Footer: beego.AppConfig.String("exportFooter"),
370 Identifier: "",
371 Language: "zh-CN",
372 Publisher: beego.AppConfig.String("exportCreator"),
373 Title: book.BookName,
374 Format: []string{"epub", "mobi", "pdf"},
375 FontSize: beego.AppConfig.String("exportFontSize"),
376 PaperSize: beego.AppConfig.String("exportPaperSize"),
377 More: []string{
378 "--pdf-page-margin-bottom", beego.AppConfig.DefaultString("exportMarginBottom", "72"),
379 "--pdf-page-margin-left", beego.AppConfig.DefaultString("exportMarginLeft", "72"),
380 "--pdf-page-margin-right", beego.AppConfig.DefaultString("exportMarginRight", "72"),
381 "--pdf-page-margin-top", beego.AppConfig.DefaultString("exportMarginTop", "72"),
382 },
383 }
384
385 folder := fmt.Sprintf("cache/books/%v/", book.Identify)
386 os.MkdirAll(folder, os.ModePerm)
387 if !debug {
388 defer os.RemoveAll(folder)
389 }
390
391 if beego.AppConfig.DefaultBool("exportCustomCover", false) {
392 // 生成书籍封面
393 if err = utils.RenderCoverByBookIdentify(book.Identify); err != nil {
394 beego.Error(err)
395 }
396 cover := "cover.png"
397 if _, err = os.Stat(folder + cover); err != nil {
398 cover = ""
399 }
400 // 用相对路径

Callers

nothing calls this directly

Calls 15

ExecuteViewPathTemplateFunction · 0.92
GetTextFromHtmlFunction · 0.92
RenderDocumentByIdFunction · 0.92
NewDocumentFunction · 0.85
SetMethod · 0.80
GetNicknameByUidMethod · 0.80
FindListByBookIdMethod · 0.80
GetFiledByIdMethod · 0.80
DelFromOssMethod · 0.80
MoveToOssMethod · 0.80
SetObjectMetaMethod · 0.80

Tested by

no test coverage detected