clear pdf

This commit is contained in:
Владимир Фёдоров 2026-03-02 02:01:55 +07:00
parent 6cbf29031c
commit caaed14ebc
5 changed files with 25 additions and 6 deletions

View File

@ -7,6 +7,7 @@ import (
"evening_detective/internal/config" "evening_detective/internal/config"
"evening_detective/internal/modules/link" "evening_detective/internal/modules/link"
"evening_detective/internal/modules/password" "evening_detective/internal/modules/password"
"evening_detective/internal/modules/pdf"
"evening_detective/internal/services" "evening_detective/internal/services"
"evening_detective/internal/services/story_service" "evening_detective/internal/services/story_service"
proto "evening_detective/proto" proto "evening_detective/proto"
@ -53,6 +54,8 @@ func main() {
passwordGenerator := password.NewPasswordGenerator() passwordGenerator := password.NewPasswordGenerator()
pdfGenerator := pdf.NewPDFGenerator()
clientHost := config.GetHost() clientHost := config.GetHost()
proto.RegisterEveningDetectiveServer( proto.RegisterEveningDetectiveServer(
s, s,
@ -62,6 +65,7 @@ func main() {
storyService, storyService,
linkService, linkService,
passwordGenerator, passwordGenerator,
pdfGenerator,
clientHost, clientHost,
), ),
), ),

View File

@ -0,0 +1,7 @@
package pdf
import "evening_detective/internal/models"
type IPDFGenerator interface {
CreateTeamsPDF(teams []*models.Team) ([]byte, error)
}

View File

@ -1,12 +1,11 @@
package pdf_service package pdf
import ( import (
"bytes" "bytes"
"embed"
"evening_detective/internal/models" "evening_detective/internal/models"
"strings" "strings"
"embed"
"github.com/signintech/gopdf" "github.com/signintech/gopdf"
"github.com/skip2/go-qrcode" "github.com/skip2/go-qrcode"
) )
@ -14,7 +13,13 @@ import (
//go:embed JetBrainsMono-Medium.ttf //go:embed JetBrainsMono-Medium.ttf
var f embed.FS var f embed.FS
func CreateTeamsPdf(teams []*models.Team) ([]byte, error) { type service struct{}
func NewPDFGenerator() IPDFGenerator {
return &service{}
}
func (s *service) CreateTeamsPDF(teams []*models.Team) ([]byte, error) {
pdf := &gopdf.GoPdf{} pdf := &gopdf.GoPdf{}
pdf.Start(gopdf.Config{PageSize: *gopdf.PageSizeA4}) // W: 595, H: 842 pdf.Start(gopdf.Config{PageSize: *gopdf.PageSizeA4}) // W: 595, H: 842
file, err := f.Open("JetBrainsMono-Medium.ttf") file, err := f.Open("JetBrainsMono-Medium.ttf")

View File

@ -7,7 +7,7 @@ import (
"evening_detective/internal/models" "evening_detective/internal/models"
"evening_detective/internal/modules/link" "evening_detective/internal/modules/link"
"evening_detective/internal/modules/password" "evening_detective/internal/modules/password"
"evening_detective/internal/services/pdf_service" "evening_detective/internal/modules/pdf"
"evening_detective/internal/services/story_service" "evening_detective/internal/services/story_service"
"evening_detective/proto" "evening_detective/proto"
"fmt" "fmt"
@ -23,6 +23,7 @@ type Services struct {
storyService *story_service.StoryService storyService *story_service.StoryService
linkService link.ILinkService linkService link.ILinkService
passwordGenerator password.IPasswordGenerator passwordGenerator password.IPasswordGenerator
pdfGenerator pdf.IPDFGenerator
clientHost string clientHost string
} }
@ -31,6 +32,7 @@ func NewServices(
storyService *story_service.StoryService, storyService *story_service.StoryService,
linkService link.ILinkService, linkService link.ILinkService,
passwordGenerator password.IPasswordGenerator, passwordGenerator password.IPasswordGenerator,
pdfGenerator pdf.IPDFGenerator,
clientHost string, clientHost string,
) *Services { ) *Services {
return &Services{ return &Services{
@ -38,6 +40,7 @@ func NewServices(
storyService: storyService, storyService: storyService,
linkService: linkService, linkService: linkService,
passwordGenerator: passwordGenerator, passwordGenerator: passwordGenerator,
pdfGenerator: pdfGenerator,
clientHost: clientHost, clientHost: clientHost,
} }
} }
@ -203,7 +206,7 @@ func (s *Services) DownloadTeamsQrCodesFile(ctx context.Context, req *proto.Down
for _, team := range teams { for _, team := range teams {
team.Link = s.linkService.GetTeamClientLink(s.clientHost, team.Name, team.Password) team.Link = s.linkService.GetTeamClientLink(s.clientHost, team.Name, team.Password)
} }
b, err := pdf_service.CreateTeamsPdf(teams) b, err := s.pdfGenerator.CreateTeamsPDF(teams)
if err != nil { if err != nil {
return nil, err return nil, err
} }