fix: update
This commit is contained in:
parent
961cb16a70
commit
7d8604a777
@ -8,7 +8,6 @@ import (
|
|||||||
"os/exec"
|
"os/exec"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
|
||||||
|
|
||||||
"libreofficeMicro/pb/libreoffice"
|
"libreofficeMicro/pb/libreoffice"
|
||||||
)
|
)
|
||||||
@ -19,7 +18,7 @@ func NewLibreofficeLogic() *LibreofficeLogic {
|
|||||||
return &LibreofficeLogic{}
|
return &LibreofficeLogic{}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ConvertToPdf 通过 URL 下载文件并用 LibreOffice 转换为 PDF,返回 PDF 文件路径(或可访问 URL)
|
// ConvertToPdf 通过 URL 下载文件并用 LibreOffice 转换为 PDF,返回 PDF 二进制数据
|
||||||
func (l *LibreofficeLogic) ConvertToPdf(req *libreoffice.ConvertToPdfRequest) (*libreoffice.ConvertToPdfResponse, error) {
|
func (l *LibreofficeLogic) ConvertToPdf(req *libreoffice.ConvertToPdfRequest) (*libreoffice.ConvertToPdfResponse, error) {
|
||||||
// 创建临时工作目录
|
// 创建临时工作目录
|
||||||
workDir, err := os.MkdirTemp("", "libreoffice-*")
|
workDir, err := os.MkdirTemp("", "libreoffice-*")
|
||||||
@ -40,19 +39,16 @@ func (l *LibreofficeLogic) ConvertToPdf(req *libreoffice.ConvertToPdfRequest) (*
|
|||||||
return nil, fmt.Errorf("LibreOffice 转换失败: %w", err)
|
return nil, fmt.Errorf("LibreOffice 转换失败: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 将 PDF 保存到持久化目录(可替换为上传到对象存储)
|
// 读取 PDF 文件内容
|
||||||
outputDir := "/tmp/pdf-output"
|
pdfData, err := os.ReadFile(pdfPath)
|
||||||
if err := os.MkdirAll(outputDir, 0755); err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("创建输出目录失败: %w", err)
|
return nil, fmt.Errorf("读取 PDF 文件失败: %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)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pdfFileName := strings.TrimSuffix(req.FileName, filepath.Ext(req.FileName)) + ".pdf"
|
||||||
return &libreoffice.ConvertToPdfResponse{
|
return &libreoffice.ConvertToPdfResponse{
|
||||||
PdfUrl: outputPath, // 可根据实际需求替换为可访问的 URL
|
PdfData: pdfData,
|
||||||
|
FileName: pdfFileName,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -93,19 +89,7 @@ func (l *LibreofficeLogic) ConvertToPdfFromBytes(req *libreoffice.ConvertToPdfFr
|
|||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetPreviewUrl 获取文件预览 URL(先转 PDF,再返回可访问路径)
|
// GetPreviewUrl 已废弃,请使用 ConvertToPdf 或 ConvertToPdfFromBytes
|
||||||
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
|
|
||||||
}
|
|
||||||
|
|
||||||
// libreofficeExec 查找 libreoffice 可执行文件路径,优先使用 PATH,
|
// libreofficeExec 查找 libreoffice 可执行文件路径,优先使用 PATH,
|
||||||
// 找不到则按 Ubuntu/Debian 常见安装路径回退。
|
// 找不到则按 Ubuntu/Debian 常见安装路径回退。
|
||||||
|
|||||||
@ -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) {
|
func (p *LibreofficeProvider) ConvertToPdfFromBytes(ctx context.Context, req *libreoffice.ConvertToPdfFromBytesRequest) (*libreoffice.ConvertToPdfFromBytesResponse, error) {
|
||||||
return p.logic.ConvertToPdfFromBytes(req)
|
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)
|
|
||||||
}
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user