diff --git a/Generation/Converters/Argumentum.AssetConverter/ImageHelper.cs b/Generation/Converters/Argumentum.AssetConverter/ImageHelper.cs index d80912c4c..d50f15293 100644 --- a/Generation/Converters/Argumentum.AssetConverter/ImageHelper.cs +++ b/Generation/Converters/Argumentum.AssetConverter/ImageHelper.cs @@ -136,7 +136,7 @@ public static string LoadAndProcessImageUrl(this DocumentCardSet documentCardSet } } - if (documentCardSet.ConvertToCmyk) + if (documentCardSet.GetConvertToCmyk(config)) { imageFromEmbeddedUrl.ConvertToCmyk(); } diff --git a/Generation/Converters/Argumentum.AssetConverter/WebBasedGenerator/DocumentCardSet.cs b/Generation/Converters/Argumentum.AssetConverter/WebBasedGenerator/DocumentCardSet.cs index ad4169fa2..b05ac1781 100644 --- a/Generation/Converters/Argumentum.AssetConverter/WebBasedGenerator/DocumentCardSet.cs +++ b/Generation/Converters/Argumentum.AssetConverter/WebBasedGenerator/DocumentCardSet.cs @@ -1,25 +1,34 @@ -using System.Text.Json.Serialization; - -namespace Argumentum.AssetConverter -{ - public class DocumentCardSet - { - - public string CardSetName { get; set; } - - - //public string TemplateDocumentName { get; set; } - - public int NbCopies { get; set; } = 1; - - - public bool SaveOriginalImage { get; set; } = true; - - public bool ConvertToCmyk { get; set; } = true; - - public DocumentCard FrontCards { get; set; } = new DocumentCard(); - - public DocumentCard BackCards { get; set; } = new DocumentCard(); - - } +using System.Text.Json.Serialization; + +namespace Argumentum.AssetConverter +{ + public class DocumentCardSet + { + + public string CardSetName { get; set; } + + + //public string TemplateDocumentName { get; set; } + + public int NbCopies { get; set; } = 1; + + + public bool SaveOriginalImage { get; set; } = true; + + public bool ConvertToCmyk { get; set; } = true; + + /// CMYK conversion for Debug builds (preview-friendly, smaller files). + public bool ConvertToCmykDebug { get; set; } = false; + + /// CMYK conversion for Release builds (printer quality). + public bool ConvertToCmykRelease { get; set; } = true; + + public bool GetConvertToCmyk(AssetConverterConfig config) + => config.UseDebugParams ? ConvertToCmykDebug : ConvertToCmykRelease; + + public DocumentCard FrontCards { get; set; } = new DocumentCard(); + + public DocumentCard BackCards { get; set; } = new DocumentCard(); + + } } \ No newline at end of file diff --git a/Generation/Converters/Argumentum.AssetConverter/WebBasedGenerator/PdfManager.cs b/Generation/Converters/Argumentum.AssetConverter/WebBasedGenerator/PdfManager.cs index 016029a7c..50ee1f98f 100644 --- a/Generation/Converters/Argumentum.AssetConverter/WebBasedGenerator/PdfManager.cs +++ b/Generation/Converters/Argumentum.AssetConverter/WebBasedGenerator/PdfManager.cs @@ -130,7 +130,7 @@ public void GenerateBackFirstOneDocPerBack(string baseName, List car GeneratePdfsFromImages(targetFiles, overwriteExistingDocs); } - public void GeneratePrintAndPlay(string fileName, CardSetDocumentConfig docConfig, List images, bool configOverwriteExistingDocs) + public void GeneratePrintAndPlay(string fileName, CardSetDocumentConfig docConfig, List images, bool configOverwriteExistingDocs, bool useReleaseMode = false) { if (File.Exists(fileName) && !configOverwriteExistingDocs) { @@ -146,15 +146,13 @@ public void GeneratePrintAndPlay(string fileName, CardSetDocumentConfig docConfi return; } - // 1. Lire toutes les images en mémoire une seule fois - // Convert to JPEG Q=85 for Print&Play to reduce PDF size (PNG lossless = 223 MB → ~15-30 MB) - var frontImagesData = images - .Select(img => !string.IsNullOrEmpty(img.Front) && File.Exists(img.Front) ? ConvertToJpeg(File.ReadAllBytes(img.Front), 85) : null) - .ToList(); + // 1. Read images — JPEG Q=85 for Debug (Edge preview), PNG lossless for Release (printer) + byte[] ProcessImage(string path) => !string.IsNullOrEmpty(path) && File.Exists(path) + ? (useReleaseMode ? File.ReadAllBytes(path) : ConvertToJpeg(File.ReadAllBytes(path), 85)) + : null; - var backImagesData = images - .Select(img => !string.IsNullOrEmpty(img.Back) && File.Exists(img.Back) ? ConvertToJpeg(File.ReadAllBytes(img.Back), 85) : null) - .ToList(); + var frontImagesData = images.Select(img => ProcessImage(img.Front)).ToList(); + var backImagesData = images.Select(img => ProcessImage(img.Back)).ToList(); // La logique de livret sera gérée à l'intérieur de PrintAndPlayDocument // if (isBooklet) { ... } diff --git a/Generation/Converters/Argumentum.AssetConverter/WebBasedGenerator/WebBasedGenerator.cs b/Generation/Converters/Argumentum.AssetConverter/WebBasedGenerator/WebBasedGenerator.cs index 82dd480a4..4d9a798ac 100644 --- a/Generation/Converters/Argumentum.AssetConverter/WebBasedGenerator/WebBasedGenerator.cs +++ b/Generation/Converters/Argumentum.AssetConverter/WebBasedGenerator/WebBasedGenerator.cs @@ -121,7 +121,8 @@ public void GenerateCardSetDocuments(ConcurrentDictionary<(CardSetDocumentConfig break; case CardDocumentFormat.PrintAndPlay: objPdfManager.GeneratePrintAndPlay(baseName, docImageList.Key.document, - docImageList.Value, AssetConverterConfig.OverwriteExistingDocs); + docImageList.Value, AssetConverterConfig.OverwriteExistingDocs, + AssetConverterConfig.UseReleaseParams); break; default: throw new InvalidOperationException( diff --git a/Generation/Converters/Argumentum.AssetConverter/WebBasedGenerator/WebBasedGeneratorConfig.cs b/Generation/Converters/Argumentum.AssetConverter/WebBasedGenerator/WebBasedGeneratorConfig.cs index 2c1d45492..00a288b95 100644 --- a/Generation/Converters/Argumentum.AssetConverter/WebBasedGenerator/WebBasedGeneratorConfig.cs +++ b/Generation/Converters/Argumentum.AssetConverter/WebBasedGenerator/WebBasedGeneratorConfig.cs @@ -509,7 +509,6 @@ public class WebBasedGeneratorConfig { CardSetName = KnownCardSets.RulesPrintAndPlay, NbCopies = 1, - ConvertToCmyk = false, SaveOriginalImage = false, FrontCards = new DocumentCard() { @@ -528,7 +527,6 @@ public class WebBasedGeneratorConfig { CardSetName = KnownCardSets.FallaciesPrintAndPlay, NbCopies = 1, - ConvertToCmyk = false, SaveOriginalImage = false, FrontCards = new DocumentCard() { @@ -566,7 +564,6 @@ public class WebBasedGeneratorConfig { CardSetName = KnownCardSets.MemoPrintAndPlay, NbCopies = 5, - ConvertToCmyk = false, SaveOriginalImage = false, FrontCards = new DocumentCard() { @@ -602,7 +599,6 @@ public class WebBasedGeneratorConfig { CardSetName = KnownCardSets.ScenariiPrintAndPlay, NbCopies = 1, - ConvertToCmyk = false, SaveOriginalImage = false, FrontCards = new DocumentCard() {