Достижение: Добавлены скрипты и документация для релиза PDF Compressor.
- Добавлен release-body.md для подробных заметок о релизе на русском языке. - Реализован release-gitea.ps1 для автоматизированного релиза Gitea с помощью PowerShell. - Создан release-gitea.sh для автоматизированного релиза Gitea с помощью Bash. - Добавлен release.sh для сборки и маркировки релизов с поддержкой нескольких платформ. - Улучшен пользовательский интерфейс благодаря информативному логированию и обработке ошибок. - Добавлена поддержка переменных окружения и управления конфигурацией. - Добавлена функция создания архивов и загрузки ресурсов в Gitea.
This commit is contained in:
88
internal/domain/entities/config.go
Normal file
88
internal/domain/entities/config.go
Normal file
@@ -0,0 +1,88 @@
|
||||
package entities
|
||||
|
||||
// CompressionConfig представляет конфигурацию сжатия
|
||||
type CompressionConfig struct {
|
||||
Level int // Уровень сжатия (10-90)
|
||||
ImageQuality int // Качество изображений (10-100)
|
||||
ImageCompression bool // Сжимать изображения
|
||||
RemoveDuplicates bool // Удалять дубликаты объектов
|
||||
CompressStreams bool // Сжимать потоки данных
|
||||
RemoveMetadata bool // Удалять метаданные
|
||||
RemoveAnnotations bool // Удалять аннотации
|
||||
RemoveAttachments bool // Удалять вложения
|
||||
OptimizeForWeb bool // Оптимизировать для веб
|
||||
UniPDFLicenseKey string // Лицензионный ключ для UniPDF
|
||||
}
|
||||
|
||||
// NewCompressionConfig создает конфигурацию сжатия на основе уровня
|
||||
func NewCompressionConfig(level int) *CompressionConfig {
|
||||
return NewCompressionConfigWithLicense(level, "")
|
||||
}
|
||||
|
||||
// NewCompressionConfigWithLicense создает конфигурацию сжатия с лицензионным ключом
|
||||
func NewCompressionConfigWithLicense(level int, licenseKey string) *CompressionConfig {
|
||||
if level < 10 {
|
||||
level = 10
|
||||
}
|
||||
if level > 90 {
|
||||
level = 90
|
||||
}
|
||||
|
||||
config := &CompressionConfig{
|
||||
Level: level,
|
||||
RemoveDuplicates: true,
|
||||
CompressStreams: true,
|
||||
OptimizeForWeb: true,
|
||||
UniPDFLicenseKey: licenseKey,
|
||||
}
|
||||
|
||||
switch {
|
||||
case level <= 20: // Слабое сжатие
|
||||
config.ImageQuality = 90
|
||||
config.ImageCompression = true
|
||||
config.RemoveMetadata = false
|
||||
config.RemoveAnnotations = false
|
||||
config.RemoveAttachments = false
|
||||
|
||||
case level <= 40: // Умеренное сжатие
|
||||
config.ImageQuality = 75
|
||||
config.ImageCompression = true
|
||||
config.RemoveMetadata = true
|
||||
config.RemoveAnnotations = false
|
||||
config.RemoveAttachments = false
|
||||
|
||||
case level <= 60: // Среднее сжатие
|
||||
config.ImageQuality = 60
|
||||
config.ImageCompression = true
|
||||
config.RemoveMetadata = true
|
||||
config.RemoveAnnotations = true
|
||||
config.RemoveAttachments = false
|
||||
|
||||
case level <= 80: // Высокое сжатие
|
||||
config.ImageQuality = 40
|
||||
config.ImageCompression = true
|
||||
config.RemoveMetadata = true
|
||||
config.RemoveAnnotations = true
|
||||
config.RemoveAttachments = true
|
||||
|
||||
default: // Максимальное сжатие (81-90%)
|
||||
config.ImageQuality = 25
|
||||
config.ImageCompression = true
|
||||
config.RemoveMetadata = true
|
||||
config.RemoveAnnotations = true
|
||||
config.RemoveAttachments = true
|
||||
}
|
||||
|
||||
return config
|
||||
}
|
||||
|
||||
// Validate проверяет корректность конфигурации
|
||||
func (c *CompressionConfig) Validate() error {
|
||||
if c.Level < 10 || c.Level > 90 {
|
||||
return ErrInvalidCompressionLevel
|
||||
}
|
||||
if c.ImageQuality < 10 || c.ImageQuality > 100 {
|
||||
return ErrInvalidImageQuality
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user