2025-12-04 12:56:39 +08:00
|
|
|
|
package pdf
|
|
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
|
"os"
|
|
|
|
|
|
"path/filepath"
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
// GetResourcesPDFDir 获取resources/pdf目录路径
|
2025-12-04 13:09:59 +08:00
|
|
|
|
// resources目录和可执行文件同级,例如:
|
|
|
|
|
|
// /app/tyapi-server (可执行文件)
|
|
|
|
|
|
// /app/resources/pdf (资源文件)
|
2025-12-04 12:56:39 +08:00
|
|
|
|
func GetResourcesPDFDir() string {
|
2025-12-04 13:09:59 +08:00
|
|
|
|
// 从可执行文件所在目录查找(resources和可执行文件同级)
|
2025-12-04 12:56:39 +08:00
|
|
|
|
if execPath, err := os.Executable(); err == nil {
|
|
|
|
|
|
execDir := filepath.Dir(execPath)
|
|
|
|
|
|
// 处理符号链接
|
|
|
|
|
|
if realPath, err := filepath.EvalSymlinks(execPath); err == nil {
|
|
|
|
|
|
execDir = filepath.Dir(realPath)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-12-04 13:09:59 +08:00
|
|
|
|
// resources目录和可执行文件同级
|
2025-12-04 12:56:39 +08:00
|
|
|
|
resourcesPath := filepath.Join(execDir, "resources", "pdf")
|
2025-12-04 13:09:59 +08:00
|
|
|
|
if absPath, err := filepath.Abs(resourcesPath); err == nil {
|
|
|
|
|
|
if _, err := os.Stat(absPath); err == nil {
|
|
|
|
|
|
return absPath
|
|
|
|
|
|
}
|
2025-12-04 12:56:39 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-12-04 13:09:59 +08:00
|
|
|
|
// 后备方案:从工作目录查找(开发环境)
|
|
|
|
|
|
if workDir, err := os.Getwd(); err == nil {
|
|
|
|
|
|
resourcesPath := filepath.Join(workDir, "resources", "pdf")
|
|
|
|
|
|
if absPath, err := filepath.Abs(resourcesPath); err == nil {
|
|
|
|
|
|
if _, err := os.Stat(absPath); err == nil {
|
|
|
|
|
|
return absPath
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
// 开发环境可能在工作目录的子目录
|
|
|
|
|
|
resourcesPath = filepath.Join(workDir, "tyapi-server-gin", "resources", "pdf")
|
|
|
|
|
|
if absPath, err := filepath.Abs(resourcesPath); err == nil {
|
|
|
|
|
|
if _, err := os.Stat(absPath); err == nil {
|
|
|
|
|
|
return absPath
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 最后的后备:返回相对路径
|
|
|
|
|
|
if workDir, err := os.Getwd(); err == nil {
|
|
|
|
|
|
resourcesPath := filepath.Join(workDir, "resources", "pdf")
|
|
|
|
|
|
if absPath, err := filepath.Abs(resourcesPath); err == nil {
|
|
|
|
|
|
return absPath
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-12-04 12:56:39 +08:00
|
|
|
|
return filepath.Join("resources", "pdf")
|
|
|
|
|
|
}
|
|
|
|
|
|
|