diff --git a/cmd/logic/libreofficeLogic.go b/cmd/logic/libreofficeLogic.go index 607b274..8c914fd 100644 --- a/cmd/logic/libreofficeLogic.go +++ b/cmd/logic/libreofficeLogic.go @@ -8,7 +8,6 @@ import ( "os/exec" "path/filepath" "strings" - "time" "libreofficeMicro/pb/libreoffice" ) @@ -19,7 +18,7 @@ func NewLibreofficeLogic() *LibreofficeLogic { return &LibreofficeLogic{} } -// ConvertToPdf 通过 URL 下载文件并用 LibreOffice 转换为 PDF,返回 PDF 文件路径(或可访问 URL) +// ConvertToPdf 通过 URL 下载文件并用 LibreOffice 转换为 PDF,返回 PDF 二进制数据 func (l *LibreofficeLogic) ConvertToPdf(req *libreoffice.ConvertToPdfRequest) (*libreoffice.ConvertToPdfResponse, error) { // 创建临时工作目录 workDir, err := os.MkdirTemp("", "libreoffice-*") @@ -40,19 +39,16 @@ func (l *LibreofficeLogic) ConvertToPdf(req *libreoffice.ConvertToPdfRequest) (* return nil, fmt.Errorf("LibreOffice 转换失败: %w", err) } - // 将 PDF 保存到持久化目录(可替换为上传到对象存储) - outputDir := "/tmp/pdf-output" - if err := os.MkdirAll(outputDir, 0755); err != nil { - return nil, fmt.Errorf("创建输出目录失败: %w", err) - } - outputName := fmt.Sprintf("%d_%s.pdf", time.Now().UnixNano(), strings.TrimSuffix(req.FileName, filepath.Ext(req.FileName))) - outputPath := filepath.Join(outputDir, outputName) - if err := copyFile(pdfPath, outputPath); err != nil { - return nil, fmt.Errorf("保存 PDF 失败: %w", err) + // 读取 PDF 文件内容 + pdfData, err := os.ReadFile(pdfPath) + if err != nil { + return nil, fmt.Errorf("读取 PDF 文件失败: %w", err) } + pdfFileName := strings.TrimSuffix(req.FileName, filepath.Ext(req.FileName)) + ".pdf" return &libreoffice.ConvertToPdfResponse{ - PdfUrl: outputPath, // 可根据实际需求替换为可访问的 URL + PdfData: pdfData, + FileName: pdfFileName, }, nil } @@ -93,19 +89,7 @@ func (l *LibreofficeLogic) ConvertToPdfFromBytes(req *libreoffice.ConvertToPdfFr }, nil } -// GetPreviewUrl 获取文件预览 URL(先转 PDF,再返回可访问路径) -func (l *LibreofficeLogic) GetPreviewUrl(req *libreoffice.GetPreviewUrlRequest) (*libreoffice.GetPreviewUrlResponse, error) { - convertResp, err := l.ConvertToPdf(&libreoffice.ConvertToPdfRequest{ - FileUrl: req.FileUrl, - FileName: req.FileName, - }) - if err != nil { - return nil, err - } - return &libreoffice.GetPreviewUrlResponse{ - PreviewUrl: convertResp.PdfUrl, - }, nil -} +// GetPreviewUrl 已废弃,请使用 ConvertToPdf 或 ConvertToPdfFromBytes // libreofficeExec 查找 libreoffice 可执行文件路径,优先使用 PATH, // 找不到则按 Ubuntu/Debian 常见安装路径回退。 diff --git a/cmd/service/libreofficeService.go b/cmd/service/libreofficeService.go index 1225589..e3e2653 100644 --- a/cmd/service/libreofficeService.go +++ b/cmd/service/libreofficeService.go @@ -28,8 +28,3 @@ func (p *LibreofficeProvider) ConvertToPdf(ctx context.Context, req *libreoffice func (p *LibreofficeProvider) ConvertToPdfFromBytes(ctx context.Context, req *libreoffice.ConvertToPdfFromBytesRequest) (*libreoffice.ConvertToPdfFromBytesResponse, error) { return p.logic.ConvertToPdfFromBytes(req) } - -// GetPreviewUrl 获取文件预览 URL -func (p *LibreofficeProvider) GetPreviewUrl(ctx context.Context, req *libreoffice.GetPreviewUrlRequest) (*libreoffice.GetPreviewUrlResponse, error) { - return p.logic.GetPreviewUrl(req) -}