Ciao a tutti,
mi sono imbattuto in questo comportamento curioso. Con questo codice stampo un XPS in PDF
var printers = new LocalPrintServer().GetPrintQueues();
var queue = printers.FirstOrDefault(x => x.Name == "Microsoft Print to PDF");
if (queue != null)
{
Clipboard.SetText(nomeFilePdf);
MessageBox.Show("Nuovo nome file copiato negli appunti");
queue.AddJob("test", tempFile, false);
if(File.Exists(nomeFilePdf))
{
\\eccetera...
Tutto apparentemente funziona bene, non fosse che nel PDF non mi trovo le immagini che invece nel XPS sono perfettamente visibili. Se apro l'XPS così creato e lo stampo scegliendo “Microsoft Print to PDF”, mi ritrovo il PDF corretto. Ha funzionato per un bel po', ma non vorrei che qualche aggiornamento di Win11 abbia modificato qualcosa e non saprei di preciso collocare l'inizio della presenza del problema.
L'XPS contiene il layout di una form WPF che ho la necessità di stampare e non son riuscito a trovare una maniera per farmela rendere direttamente in PDF. Ho utilizzato questo codice
string tempFile = @"C:\miapath\blablabla\xpsTemp.xps";
if (File.Exists(tempFile))
File.Delete(tempFile);
using (XpsDocument xpsDoc = new XpsDocument(tempFile, FileAccess.ReadWrite))
{
XpsDocumentWriter writer = XpsDocument.CreateXpsDocumentWriter(xpsDoc);
VisualsToXpsDocument vToXpsD = (VisualsToXpsDocument)writer.CreateVisualsCollator();
vToXpsD.BeginBatchWrite();
for (byte i = 0; i < tab.Items.Count; i++)
{
if (tab.Items[i] is TabItem ti)
{
tab.SelectedItem = ti;
lblPagine.Text = $"Pag. {i+1}";
mainGrid.InvalidateVisual();
vToXpsD.Write(mainGrid);
}
}
vToXpsD.EndBatchWrite();
}
Valuto tranquillamente alternative.
Grazie in anticipo!