Достижение: Добавлены скрипты и документация для релиза PDF Compressor.

- Добавлен release-body.md для подробных заметок о релизе на русском языке.
- Реализован release-gitea.ps1 для автоматизированного релиза Gitea с помощью PowerShell.
- Создан release-gitea.sh для автоматизированного релиза Gitea с помощью Bash.
- Добавлен release.sh для сборки и маркировки релизов с поддержкой нескольких платформ.
- Улучшен пользовательский интерфейс благодаря информативному логированию и обработке ошибок.
- Добавлена ​​поддержка переменных окружения и управления конфигурацией.
- Добавлена ​​функция создания архивов и загрузки ресурсов в Gitea.
This commit is contained in:
Dmitriy Fofanov
2025-11-05 09:33:12 +03:00
parent f328d67080
commit ec65cfd05a
43 changed files with 5792 additions and 2 deletions

View 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
}