@jjlmoya/utils-converters 1.24.0 → 1.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/package.json +2 -2
  2. package/src/category/i18n/de.ts +1 -1
  3. package/src/category/i18n/en.ts +1 -1
  4. package/src/category/i18n/fr.ts +1 -1
  5. package/src/category/i18n/id.ts +1 -1
  6. package/src/category/i18n/it.ts +1 -1
  7. package/src/category/i18n/nl.ts +1 -1
  8. package/src/category/i18n/pl.ts +1 -1
  9. package/src/category/i18n/pt.ts +1 -1
  10. package/src/category/i18n/sv.ts +1 -1
  11. package/src/entries.ts +6 -0
  12. package/src/tests/bibliography_wellformed_export.test.ts +46 -0
  13. package/src/tests/category_seo_quality.test.ts +74 -0
  14. package/src/tests/faq_count.test.ts +1 -1
  15. package/src/tests/no_h1_in_components.test.ts +1 -1
  16. package/src/tests/seo_parity.test.ts +2 -2
  17. package/src/tests/seo_wellformed_export.test.ts +65 -0
  18. package/src/tests/tool_validation.test.ts +15 -15
  19. package/src/tool/avifAJpg/i18n/en.ts +164 -164
  20. package/src/tool/avifAJpg/i18n/es.ts +164 -164
  21. package/src/tool/avifAJpg/i18n/fr.ts +164 -164
  22. package/src/tool/avifAJpg/i18n/ja.ts +166 -166
  23. package/src/tool/avifAJpg/i18n/ko.ts +166 -166
  24. package/src/tool/avifAJpg/i18n/zh.ts +166 -166
  25. package/src/tool/avifAJpg/seo.astro +15 -15
  26. package/src/tool/avifAPng/i18n/en.ts +164 -164
  27. package/src/tool/avifAPng/i18n/es.ts +164 -164
  28. package/src/tool/avifAPng/i18n/fr.ts +164 -164
  29. package/src/tool/avifAPng/i18n/ja.ts +166 -166
  30. package/src/tool/avifAPng/i18n/ko.ts +166 -166
  31. package/src/tool/avifAPng/i18n/zh.ts +166 -166
  32. package/src/tool/avifAPng/seo.astro +15 -15
  33. package/src/tool/avifAWebp/i18n/en.ts +164 -164
  34. package/src/tool/avifAWebp/i18n/es.ts +164 -164
  35. package/src/tool/avifAWebp/i18n/fr.ts +164 -164
  36. package/src/tool/avifAWebp/i18n/ja.ts +166 -166
  37. package/src/tool/avifAWebp/i18n/ko.ts +166 -166
  38. package/src/tool/avifAWebp/i18n/zh.ts +166 -166
  39. package/src/tool/avifAWebp/seo.astro +15 -15
  40. package/src/tool/bmpAJpg/i18n/en.ts +164 -164
  41. package/src/tool/bmpAJpg/i18n/es.ts +164 -164
  42. package/src/tool/bmpAJpg/i18n/fr.ts +164 -164
  43. package/src/tool/bmpAJpg/i18n/ja.ts +166 -166
  44. package/src/tool/bmpAJpg/i18n/ko.ts +166 -166
  45. package/src/tool/bmpAJpg/i18n/zh.ts +166 -166
  46. package/src/tool/bmpAJpg/seo.astro +15 -15
  47. package/src/tool/bmpAPng/i18n/en.ts +164 -164
  48. package/src/tool/bmpAPng/i18n/es.ts +164 -164
  49. package/src/tool/bmpAPng/i18n/fr.ts +164 -164
  50. package/src/tool/bmpAPng/i18n/ja.ts +165 -165
  51. package/src/tool/bmpAPng/i18n/ko.ts +165 -165
  52. package/src/tool/bmpAPng/i18n/zh.ts +165 -165
  53. package/src/tool/bmpAPng/seo.astro +15 -15
  54. package/src/tool/bmpAWebp/i18n/en.ts +164 -164
  55. package/src/tool/bmpAWebp/i18n/es.ts +164 -164
  56. package/src/tool/bmpAWebp/i18n/fr.ts +164 -164
  57. package/src/tool/bmpAWebp/i18n/ja.ts +166 -166
  58. package/src/tool/bmpAWebp/i18n/ko.ts +166 -166
  59. package/src/tool/bmpAWebp/i18n/zh.ts +166 -166
  60. package/src/tool/bmpAWebp/seo.astro +15 -15
  61. package/src/tool/gifAJpg/i18n/en.ts +164 -164
  62. package/src/tool/gifAJpg/i18n/es.ts +164 -164
  63. package/src/tool/gifAJpg/i18n/fr.ts +164 -164
  64. package/src/tool/gifAJpg/i18n/ja.ts +166 -166
  65. package/src/tool/gifAJpg/i18n/ko.ts +166 -166
  66. package/src/tool/gifAJpg/i18n/zh.ts +166 -166
  67. package/src/tool/gifAJpg/seo.astro +15 -15
  68. package/src/tool/gifAPng/i18n/en.ts +164 -164
  69. package/src/tool/gifAPng/i18n/es.ts +164 -164
  70. package/src/tool/gifAPng/i18n/fr.ts +164 -164
  71. package/src/tool/gifAPng/i18n/ja.ts +166 -166
  72. package/src/tool/gifAPng/i18n/ko.ts +166 -166
  73. package/src/tool/gifAPng/i18n/zh.ts +166 -166
  74. package/src/tool/gifAPng/seo.astro +15 -15
  75. package/src/tool/gifAWebp/i18n/en.ts +164 -164
  76. package/src/tool/gifAWebp/i18n/es.ts +164 -164
  77. package/src/tool/gifAWebp/i18n/fr.ts +164 -164
  78. package/src/tool/gifAWebp/i18n/ja.ts +166 -166
  79. package/src/tool/gifAWebp/i18n/ko.ts +166 -166
  80. package/src/tool/gifAWebp/i18n/zh.ts +166 -166
  81. package/src/tool/gifAWebp/seo.astro +15 -15
  82. package/src/tool/imagenBase64/i18n/en.ts +154 -154
  83. package/src/tool/imagenBase64/i18n/es.ts +154 -154
  84. package/src/tool/imagenBase64/i18n/fr.ts +154 -154
  85. package/src/tool/imagenBase64/seo.astro +15 -15
  86. package/src/tool/jpgAIco/seo.astro +15 -15
  87. package/src/tool/jpgAPng/i18n/en.ts +164 -164
  88. package/src/tool/jpgAPng/i18n/es.ts +164 -164
  89. package/src/tool/jpgAPng/i18n/fr.ts +164 -164
  90. package/src/tool/jpgAPng/i18n/ja.ts +166 -166
  91. package/src/tool/jpgAPng/i18n/ko.ts +166 -166
  92. package/src/tool/jpgAPng/i18n/zh.ts +166 -166
  93. package/src/tool/jpgAPng/seo.astro +15 -15
  94. package/src/tool/jpgAWebp/i18n/en.ts +164 -164
  95. package/src/tool/jpgAWebp/i18n/es.ts +164 -164
  96. package/src/tool/jpgAWebp/i18n/fr.ts +164 -164
  97. package/src/tool/jpgAWebp/seo.astro +15 -15
  98. package/src/tool/pngAIco/seo.astro +15 -15
  99. package/src/tool/pngAJpg/i18n/de.ts +21 -21
  100. package/src/tool/pngAJpg/i18n/es.ts +177 -177
  101. package/src/tool/pngAJpg/i18n/fr.ts +137 -137
  102. package/src/tool/pngAJpg/i18n/id.ts +89 -89
  103. package/src/tool/pngAJpg/i18n/it.ts +89 -89
  104. package/src/tool/pngAJpg/i18n/ko.ts +177 -177
  105. package/src/tool/pngAJpg/i18n/nl.ts +20 -20
  106. package/src/tool/pngAJpg/i18n/pl.ts +89 -89
  107. package/src/tool/pngAJpg/i18n/pt.ts +89 -89
  108. package/src/tool/pngAJpg/i18n/ru.ts +177 -177
  109. package/src/tool/pngAJpg/i18n/sv.ts +89 -89
  110. package/src/tool/pngAJpg/i18n/tr.ts +89 -89
  111. package/src/tool/pngAJpg/seo.astro +15 -15
  112. package/src/tool/pngAWebp/i18n/en.ts +164 -164
  113. package/src/tool/pngAWebp/i18n/es.ts +164 -164
  114. package/src/tool/pngAWebp/i18n/fr.ts +164 -164
  115. package/src/tool/pngAWebp/seo.astro +15 -15
  116. package/src/tool/svgAJpg/i18n/fr.ts +164 -164
  117. package/src/tool/svgAJpg/seo.astro +15 -15
  118. package/src/tool/svgAPng/i18n/fr.ts +164 -164
  119. package/src/tool/svgAPng/seo.astro +15 -15
  120. package/src/tool/webpAIco/seo.astro +15 -15
  121. package/src/tool/webpAJpg/seo.astro +15 -15
  122. package/src/tool/webpAPng/bibliography.ts +13 -13
  123. package/src/tool/webpAPng/i18n/de.ts +166 -166
  124. package/src/tool/webpAPng/i18n/es.ts +171 -171
  125. package/src/tool/webpAPng/i18n/fr.ts +166 -166
  126. package/src/tool/webpAPng/i18n/id.ts +166 -166
  127. package/src/tool/webpAPng/i18n/it.ts +166 -166
  128. package/src/tool/webpAPng/i18n/nl.ts +166 -166
  129. package/src/tool/webpAPng/i18n/pl.ts +166 -166
  130. package/src/tool/webpAPng/i18n/pt.ts +166 -166
  131. package/src/tool/webpAPng/i18n/ru.ts +166 -166
  132. package/src/tool/webpAPng/i18n/sv.ts +166 -166
  133. package/src/tool/webpAPng/i18n/tr.ts +167 -167
  134. package/src/tool/webpAPng/seo.astro +15 -15
@@ -1,168 +1,168 @@
1
1
  import { bibliography } from '../bibliography';
2
- import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
+ import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
3
3
  import { generateSchemas } from '../../../shared/logic/schemas';
4
- import type { SvgAJpgLocaleContent } from '../index';
5
-
6
- const slug = 'convertisseur-svg-en-jpg';
7
- const title = 'Convertir SVG en JPG en Ligne et Gratuitement';
8
- const description =
9
- 'Convertissez des fichiers SVG vectoriels en JPG dans votre navigateur. Rendu haute résolution 2x. Sans téléchargement. Gratuit et 100% privé.';
10
-
11
- const ui: ImageConverterUI = {
12
- dragText: 'Faites glisser des fichiers SVG...',
13
- convertText: 'Pour les convertir en JPG instantanément',
14
- selectFiles: 'Sélectionner des fichiers',
15
- processedFiles: 'Fichiers traités',
16
- downloadAll: 'Tout télécharger (.zip)',
4
+ import type { SvgAJpgLocaleContent } from '../index';
5
+
6
+ const slug = 'convertisseur-svg-en-jpg';
7
+ const title = 'Convertir SVG en JPG en Ligne et Gratuitement';
8
+ const description =
9
+ 'Convertissez des fichiers SVG vectoriels en JPG dans votre navigateur. Rendu haute résolution 2x. Sans téléchargement. Gratuit et 100% privé.';
10
+
11
+ const ui: ImageConverterUI = {
12
+ dragText: 'Faites glisser des fichiers SVG...',
13
+ convertText: 'Pour les convertir en JPG instantanément',
14
+ selectFiles: 'Sélectionner des fichiers',
15
+ processedFiles: 'Fichiers traités',
16
+ downloadAll: 'Tout télécharger (.zip)',
17
17
  pending: 'En attente',
18
- bibliographyTitle: 'Références Bibliographiques',
19
- faqTitle: 'Questions Fréquentes',
20
- };
21
-
22
- const faq: SvgAJpgLocaleContent['faq'] = [
23
- {
24
- question: 'Pourquoi convertir SVG en JPG ?',
25
- answer:
26
- 'Le JPG offre une compatibilité maximale sur tous les types d\'appareils ; convertir un SVG en JPG est le meilleur moyen de s\'assurer que tout le monde peut voir votre design sans problèmes de rendu.',
27
- },
28
- {
29
- question: 'Que se passe-t-il avec la transparence du SVG ?',
30
- answer:
31
- 'Lors de la conversion en JPG (qui ne supporte pas la transparence), un fond blanc opaque sera automatiquement ajouté à votre composition vectorielle.',
32
- },
33
- {
34
- question: 'Quelle résolution aura le JPG résultant ?',
35
- answer:
36
- 'L\'outil rend le SVG à double échelle (2x) pour garantir une haute résolution adaptée aux écrans Retina et à l\'usage professionnel.',
37
- },
38
- ];
39
-
40
- const howTo: SvgAJpgLocaleContent['howTo'] = [
41
- {
42
- name: 'Insérez vos fichiers vectoriels',
43
- text: 'Déposez vos fichiers SVG dans la zone supérieure pour préparer la liste d\'export.',
44
- },
45
- {
46
- name: 'Rastérisation en JPG',
47
- text: 'L\'outil convertira les vecteurs en pixels haute résolution et générera votre JPG instantanément.',
48
- },
49
- {
50
- name: 'Téléchargez les résultats',
51
- text: 'Obtenez vos fichiers JPG un par un ou comme package ZIP.',
52
- },
53
- ];
54
-
55
- const seo: SvgAJpgLocaleContent['seo'] = [
56
- {
57
- type: 'title',
58
- text: 'Convertisseur SVG vers JPG: Emmenez vos Vecteurs sur Toutes les Plateformes',
59
- level: 2,
60
- },
61
- {
62
- type: 'paragraph',
63
- html: 'Le format <strong>SVG</strong> est le langage natif du web moderne: léger, évolutif, éditable. Mais il existe des plateformes entières qui ne comprennent tout simplement pas les vecteurs. Les réseaux sociaux, les clients de messagerie, les documents Word, les applications d\'impression et la grande majorité des logiciels du monde réel fonctionnent avec des images rastérisées. Le <strong>JPG</strong> est le plus petit dénominateur commun universel: accepté partout, sans exception, sans plugins ni conversions supplémentaires.',
64
- },
65
- {
66
- type: 'title',
67
- text: 'SVG vs JPG: Quand le Vecteur Doit Devenir une Photo',
68
- level: 3,
69
- },
70
- {
71
- type: 'paragraph',
72
- html: 'SVG stocke l\'image sous forme d\'instructions mathématiques. Cette nature vectorielle le rend parfait pour le web mais invisible pour le monde analogique et les logiciels hérités. Un fichier SVG envoyé par e-mail peut apparaître comme du texte XML incompréhensible dans le client du destinataire. Un SVG joint à un document Word peut ne pas se rendre du tout dans les anciennes versions d\'Office.',
73
- },
74
- {
75
- type: 'paragraph',
76
- html: 'JPG convertit chaque image en matrice de pixels avec des informations de couleur compressées par l\'algorithme JPEG. Ne supportant pas le canal alpha, le convertisseur fusionne automatiquement le fond avec du blanc solide. En échange, vous obtenez un fichier qui s\'ouvre sur <em>n\'importe quel appareil de la planète</em>: vieux téléphones, imprimantes, téléviseurs intelligents, applications d\'édition vieilles de vingt ans. C\'est le format du plus petit dénominateur commun, et dans bien des contextes, le plus précieux.',
77
- },
78
- {
79
- type: 'title',
80
- text: 'Comparatif: Conversion Locale vs Cloud',
81
- level: 3,
82
- },
83
- {
84
- type: 'comparative',
85
- items: [
86
- {
87
- title: 'Convertisseurs Cloud',
88
- description: 'Outils qui téléchargent vos fichiers vers un serveur distant.',
89
- icon: 'mdi:cloud-upload',
90
- pointIcon: 'mdi:close-circle-outline',
91
- points: [
92
- 'Votre code SVG (avec données de design propriétaires) transite vers des serveurs externes',
93
- 'Rendu inconsistant des polices et dégradés',
94
- 'Connexion Internet requise pour chaque conversion',
95
- 'Qualité JPG de sortie pas toujours configurable',
96
- ],
97
- },
98
- {
99
- title: 'Notre Architecture Locale',
100
- description: 'Traitement direct sur votre matériel via la technologie Vanilla JS.',
101
- icon: 'mdi:laptop-mac',
102
- highlight: true,
103
- points: [
104
- 'Zéro octet de votre SVG ne quitte le navigateur',
105
- 'Rendu fidèle via le moteur natif du navigateur',
106
- 'JPG en résolution 2x pour une netteté maximale',
107
- 'Fond blanc appliqué automatiquement selon le standard JPG',
108
- ],
109
- },
110
- ],
111
- },
112
- {
113
- type: 'title',
114
- text: 'Comment ça fonctionne techniquement',
115
- level: 3,
116
- },
117
- {
118
- type: 'paragraph',
119
- html: 'Le fichier SVG est chargé dans un élément <strong>Image</strong> du navigateur, qui utilise son propre moteur de rendu vectoriel pour interpréter le XML. Le résultat visuel est dessiné sur un <strong>Canvas HTML5</strong> avec un fond blanc préalable (requis car JPG ne supporte pas la transparence) à double échelle pour maximiser la résolution de sortie.',
120
- },
121
- {
122
- type: 'paragraph',
123
- html: 'La méthode <code>toDataURL(\'image/jpeg\', 0.92)</code> convertit les pixels du canvas en un fichier JPG de haute qualité. Les couleurs SVG peuvent subir de légères variations dues à la conversion de l\'espace colorimétrique lors de la compression JPEG. Il est donc recommandé de prévisualiser le résultat avant de l\'utiliser dans des travaux d\'impression professionnels où la fidélité chromatique est critique.',
124
- },
125
- {
126
- type: 'tip',
127
- title: 'Conseil pour l\'impression',
128
- html: 'Les fonds et dégradés SVG peuvent sembler légèrement différents en JPG en raison du profil colorimétrique de la compression JPEG. Prévisualisez toujours le résultat avant de l\'envoyer à l\'imprimeur ou de l\'utiliser dans des supports marketing imprimés où la couleur exacte de la marque est importante.',
129
- },
130
- {
131
- type: 'title',
132
- text: 'Cas d\'usage et compatibilité',
133
- level: 3,
134
- },
135
- {
136
- type: 'list',
137
- icon: 'mdi:check-circle',
138
- items: [
139
- 'Partager des logos et illustrations SVG sur Facebook, Twitter ou LinkedIn.',
140
- 'Joindre des graphiques vectoriels dans des e-mails via Outlook ou Gmail.',
141
- 'Insérer des designs SVG dans des documents Word, Excel ou présentations.',
142
- 'Publier des images de produits sur des boutiques en ligne qui ne supportent pas le SVG.',
143
- 'Préparer des fichiers pour les services d\'impression à la demande.',
144
- ],
145
- },
146
- {
147
- type: 'title',
148
- text: 'Conclusion',
149
- level: 3,
150
- },
151
- {
152
- type: 'paragraph',
153
- html: 'Le monde réel parle encore en pixels. Cet outil traduit vos vecteurs SVG dans le langage universel du JPG en quelques secondes, avec un rendu haute résolution et sans que vos designs propriétaires ne quittent jamais votre navigateur.',
154
- },
155
- ];
156
-
18
+ bibliographyTitle: 'Références Bibliographiques',
19
+ faqTitle: 'Questions Fréquentes',
20
+ };
21
+
22
+ const faq: SvgAJpgLocaleContent['faq'] = [
23
+ {
24
+ question: 'Pourquoi convertir SVG en JPG ?',
25
+ answer:
26
+ 'Le JPG offre une compatibilité maximale sur tous les types d\'appareils ; convertir un SVG en JPG est le meilleur moyen de s\'assurer que tout le monde peut voir votre design sans problèmes de rendu.',
27
+ },
28
+ {
29
+ question: 'Que se passe-t-il avec la transparence du SVG ?',
30
+ answer:
31
+ 'Lors de la conversion en JPG (qui ne supporte pas la transparence), un fond blanc opaque sera automatiquement ajouté à votre composition vectorielle.',
32
+ },
33
+ {
34
+ question: 'Quelle résolution aura le JPG résultant ?',
35
+ answer:
36
+ 'L\'outil rend le SVG à double échelle (2x) pour garantir une haute résolution adaptée aux écrans Retina et à l\'usage professionnel.',
37
+ },
38
+ ];
39
+
40
+ const howTo: SvgAJpgLocaleContent['howTo'] = [
41
+ {
42
+ name: 'Insérez vos fichiers vectoriels',
43
+ text: 'Déposez vos fichiers SVG dans la zone supérieure pour préparer la liste d\'export.',
44
+ },
45
+ {
46
+ name: 'Rastérisation en JPG',
47
+ text: 'L\'outil convertira les vecteurs en pixels haute résolution et générera votre JPG instantanément.',
48
+ },
49
+ {
50
+ name: 'Téléchargez les résultats',
51
+ text: 'Obtenez vos fichiers JPG un par un ou comme package ZIP.',
52
+ },
53
+ ];
54
+
55
+ const seo: SvgAJpgLocaleContent['seo'] = [
56
+ {
57
+ type: 'title',
58
+ text: 'Convertisseur SVG vers JPG: Emmenez vos Vecteurs sur Toutes les Plateformes',
59
+ level: 2,
60
+ },
61
+ {
62
+ type: 'paragraph',
63
+ html: 'Le format <strong>SVG</strong> est le langage natif du web moderne: léger, évolutif, éditable. Mais il existe des plateformes entières qui ne comprennent tout simplement pas les vecteurs. Les réseaux sociaux, les clients de messagerie, les documents Word, les applications d\'impression et la grande majorité des logiciels du monde réel fonctionnent avec des images rastérisées. Le <strong>JPG</strong> est le plus petit dénominateur commun universel: accepté partout, sans exception, sans plugins ni conversions supplémentaires.',
64
+ },
65
+ {
66
+ type: 'title',
67
+ text: 'SVG vs JPG: Quand le Vecteur Doit Devenir une Photo',
68
+ level: 3,
69
+ },
70
+ {
71
+ type: 'paragraph',
72
+ html: 'SVG stocke l\'image sous forme d\'instructions mathématiques. Cette nature vectorielle le rend parfait pour le web mais invisible pour le monde analogique et les logiciels hérités. Un fichier SVG envoyé par e-mail peut apparaître comme du texte XML incompréhensible dans le client du destinataire. Un SVG joint à un document Word peut ne pas se rendre du tout dans les anciennes versions d\'Office.',
73
+ },
74
+ {
75
+ type: 'paragraph',
76
+ html: 'JPG convertit chaque image en matrice de pixels avec des informations de couleur compressées par l\'algorithme JPEG. Ne supportant pas le canal alpha, le convertisseur fusionne automatiquement le fond avec du blanc solide. En échange, vous obtenez un fichier qui s\'ouvre sur <em>n\'importe quel appareil de la planète</em>: vieux téléphones, imprimantes, téléviseurs intelligents, applications d\'édition vieilles de vingt ans. C\'est le format du plus petit dénominateur commun, et dans bien des contextes, le plus précieux.',
77
+ },
78
+ {
79
+ type: 'title',
80
+ text: 'Comparatif: Conversion Locale vs Cloud',
81
+ level: 3,
82
+ },
83
+ {
84
+ type: 'comparative',
85
+ items: [
86
+ {
87
+ title: 'Convertisseurs Cloud',
88
+ description: 'Outils qui téléchargent vos fichiers vers un serveur distant.',
89
+ icon: 'mdi:cloud-upload',
90
+ pointIcon: 'mdi:close-circle-outline',
91
+ points: [
92
+ 'Votre code SVG (avec données de design propriétaires) transite vers des serveurs externes',
93
+ 'Rendu inconsistant des polices et dégradés',
94
+ 'Connexion Internet requise pour chaque conversion',
95
+ 'Qualité JPG de sortie pas toujours configurable',
96
+ ],
97
+ },
98
+ {
99
+ title: 'Notre Architecture Locale',
100
+ description: 'Traitement direct sur votre matériel via la technologie Vanilla JS.',
101
+ icon: 'mdi:laptop-mac',
102
+ highlight: true,
103
+ points: [
104
+ 'Zéro octet de votre SVG ne quitte le navigateur',
105
+ 'Rendu fidèle via le moteur natif du navigateur',
106
+ 'JPG en résolution 2x pour une netteté maximale',
107
+ 'Fond blanc appliqué automatiquement selon le standard JPG',
108
+ ],
109
+ },
110
+ ],
111
+ },
112
+ {
113
+ type: 'title',
114
+ text: 'Comment ça fonctionne techniquement',
115
+ level: 3,
116
+ },
117
+ {
118
+ type: 'paragraph',
119
+ html: 'Le fichier SVG est chargé dans un élément <strong>Image</strong> du navigateur, qui utilise son propre moteur de rendu vectoriel pour interpréter le XML. Le résultat visuel est dessiné sur un <strong>Canvas HTML5</strong> avec un fond blanc préalable (requis car JPG ne supporte pas la transparence) à double échelle pour maximiser la résolution de sortie.',
120
+ },
121
+ {
122
+ type: 'paragraph',
123
+ html: 'La méthode <code>toDataURL(\'image/jpeg\', 0.92)</code> convertit les pixels du canvas en un fichier JPG de haute qualité. Les couleurs SVG peuvent subir de légères variations dues à la conversion de l\'espace colorimétrique lors de la compression JPEG. Il est donc recommandé de prévisualiser le résultat avant de l\'utiliser dans des travaux d\'impression professionnels où la fidélité chromatique est critique.',
124
+ },
125
+ {
126
+ type: 'tip',
127
+ title: 'Conseil pour l\'impression',
128
+ html: 'Les fonds et dégradés SVG peuvent sembler légèrement différents en JPG en raison du profil colorimétrique de la compression JPEG. Prévisualisez toujours le résultat avant de l\'envoyer à l\'imprimeur ou de l\'utiliser dans des supports marketing imprimés où la couleur exacte de la marque est importante.',
129
+ },
130
+ {
131
+ type: 'title',
132
+ text: 'Cas d\'usage et compatibilité',
133
+ level: 3,
134
+ },
135
+ {
136
+ type: 'list',
137
+ icon: 'mdi:check-circle',
138
+ items: [
139
+ 'Partager des logos et illustrations SVG sur Facebook, Twitter ou LinkedIn.',
140
+ 'Joindre des graphiques vectoriels dans des e-mails via Outlook ou Gmail.',
141
+ 'Insérer des designs SVG dans des documents Word, Excel ou présentations.',
142
+ 'Publier des images de produits sur des boutiques en ligne qui ne supportent pas le SVG.',
143
+ 'Préparer des fichiers pour les services d\'impression à la demande.',
144
+ ],
145
+ },
146
+ {
147
+ type: 'title',
148
+ text: 'Conclusion',
149
+ level: 3,
150
+ },
151
+ {
152
+ type: 'paragraph',
153
+ html: 'Le monde réel parle encore en pixels. Cet outil traduit vos vecteurs SVG dans le langage universel du JPG en quelques secondes, avec un rendu haute résolution et sans que vos designs propriétaires ne quittent jamais votre navigateur.',
154
+ },
155
+ ];
157
156
 
158
- export const content: SvgAJpgLocaleContent = {
159
- slug,
160
- title,
161
- description,
162
- ui,
163
- seo,
164
- faq,
165
- bibliography,
166
- howTo,
167
- schemas: generateSchemas({ title, description, inLanguage: 'fr', faq, howTo }),
168
- };
157
+
158
+ export const content: SvgAJpgLocaleContent = {
159
+ slug,
160
+ title,
161
+ description,
162
+ ui,
163
+ seo,
164
+ faq,
165
+ bibliography,
166
+ howTo,
167
+ schemas: generateSchemas({ title, description, inLanguage: 'fr', faq, howTo }),
168
+ };
@@ -1,15 +1,15 @@
1
- ---
2
- import { SEORenderer } from '@jjlmoya/utils-shared';
3
- import { svgAJpg } from './index';
4
- import type { KnownLocale } from '../../types';
5
-
6
- interface Props {
7
- locale?: KnownLocale;
8
- }
9
-
10
- const { locale = 'es' } = Astro.props;
11
- const content = await svgAJpg.i18n[locale]?.();
12
- if (!content) return null;
13
- ---
14
-
15
- {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
1
+ ---
2
+ import { SEORenderer } from '@jjlmoya/utils-shared';
3
+ import { svgAJpg } from './index';
4
+ import type { KnownLocale } from '../../types';
5
+
6
+ interface Props {
7
+ locale?: KnownLocale;
8
+ }
9
+
10
+ const { locale = 'es' } = Astro.props;
11
+ const content = await svgAJpg.i18n[locale]?.();
12
+ if (!content) return null;
13
+ ---
14
+
15
+ {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}