J'ai un FlowDocument que je veux convertir en document XPS et l'attacher à un e-mail et l'envoyer tous ensemble. J'utilise ce codecréer un document XPS à partir d'un document FlowDocument et l'attacher à la volée
public static MemoryStream FlowDocumentToXPS(FlowDocument flowDocument, int width, int height)
{
MemoryStream stream = new MemoryStream();
using (Package package = Package.Open(stream, FileMode.Create, FileAccess.ReadWrite))
{
using (XpsDocument xpsDoc = new XpsDocument(package, CompressionOption.Maximum))
{
XpsSerializationManager rsm = new XpsSerializationManager(new XpsPackagingPolicy(xpsDoc), false);
DocumentPaginator paginator = ((IDocumentPaginatorSource)flowDocument).DocumentPaginator;
paginator.PageSize = new System.Windows.Size(width, height);
rsm.SaveAsXaml(paginator);
rsm.Commit();
}
}
stream.Position = 0;
Console.WriteLine(stream.Length);
Console.WriteLine(stream.Position);
return stream;
}
Je joins à l'aide de ce code:
Attachment xps = new Attachment(FlowDocumentToXPS(FD, 768, 676), "FileName.xps", "application/vnd.ms-xpsdocument");
où FD est le FlowDocument Je veux convertir, je reçois fichier taille 0.0KB XPS joint et ne peut pas être ouvert avec le XPS Viewer, ce qui me manque ici?
EDIT: Le code final qui a fonctionné, voir les commentaires
Merci à l'avance
Êtes-vous sûr tu n'as pas avalé une exception quelque part? Je ne pense pas que vous devez ajouter la FixedSequence. –
peut-être le flux est fermé à la sortie du bloc – kenny
@Henk Holterman, j'ai vérifié la sortie aucune exception, et vous avez raison, j'essayais différentes choses qui ont amené cette FixedSequence, j'ai enlevé mais le problème toujours là – Musaab