- Добавлен release-body.md для подробных заметок о релизе на русском языке. - Реализован release-gitea.ps1 для автоматизированного релиза Gitea с помощью PowerShell. - Создан release-gitea.sh для автоматизированного релиза Gitea с помощью Bash. - Добавлен release.sh для сборки и маркировки релизов с поддержкой нескольких платформ. - Улучшен пользовательский интерфейс благодаря информативному логированию и обработке ошибок. - Добавлена поддержка переменных окружения и управления конфигурацией. - Добавлена функция создания архивов и загрузки ресурсов в Gitea.
89 lines
2.8 KiB
Go
89 lines
2.8 KiB
Go
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
|
||
}
|