J'ai eu le même problème: la taille de mon fichier était trop grande car les photos étaient incorporées en tant que png au lieu de jpeg. Je l'ai corrigé en convertissant tous les fichiers png en jpeg dans le paquet. J'ai gardé les URI de la même manière pour éviter d'avoir à mettre à jour les références à l'image, mais cela signifie que l'URI interne de vos jpeg se terminera par un ".png" trompeur. Évidemment, cela devient plus compliqué si vous voulez choisir les images que vous convertissez en JPEG.
public static void ReplacePngsWithJpegs(Package package)
{
// We're modifying the enumerable as we iterate, so take a snapshot with ToList()
foreach (var part in package.GetParts().ToList())
{
if (part.ContentType == "image/png")
{
using (var jpegStream = new MemoryStream())
using (var image = System.Drawing.Image.FromStream(part.GetStream()))
{
image.Save(jpegStream, System.Drawing.Imaging.ImageFormat.Jpeg);
jpegStream.Seek(0, SeekOrigin.Begin);
// Cannot access Uri after part is removed, so store it
var uri = part.Uri;
package.DeletePart(uri);
var jpegPart = package.CreatePart(uri, "image/jpeg");
jpegStream.CopyTo(jpegPart.GetStream());
}
}
}
}
Pourquoi voudriez-vous faire cela? Le but de l'utilisation de XpsDocumentWriter est d'écrire un fichier .xps, ce que vous avez fait avec succès. Le type de fichier des données d'image contenues dans le fichier .xps doit être complètement non pertinent. – Jon
J'ai besoin du format JPG pour réduire la taille de mes documents. – CrazyCoder