2 messaggi dal 06 ottobre 2008
Buongiorno,
sto sviluppando in c# una utility che stampa degli ordini impaginati tramite un FlowDocument. Sto utilizzando Visual Studio 2022 Community ed il progetto è stato creato come App WPF.
Il FlowDocument è impaginato con delle sezioni e una tabella. Sia le sezione che le righe della tabella hanno delle caratteristiche di font diversi per dimensione e grassetto o regolare.
Ho creato una funzione per stampare questo FlowDocument.

Il problema è che se stampo in windows 10 il flowdocument vengono stampate correttamente sia per impaginazione che per le proprietà dei font grassetto e per le dimensioni.
Su windows 11 , solo per quanto riguarda il grassetto, questo non accade. Le altre proprietà vengono invece stampate come richiesto.

Ho provato a compilare il software aggiungendo ai riferimenti del progetto le dll WindowsBase e PresentationCore ma Visual Studio mi da errore di riferimento non valido o non supportato.
Ho provato anche a installare VCredist x64 e x86.
Ho anche provato ad aprire e compilare il progetto su un pc con Windows 11 e non ho risolto.

Questo è il codice che uso per inviare la stampa:
private static bool PrintDocument(FlowDocument Doc, string PrinterName, int Copie, int OrderCode)
{
    string txt = "";
    string str = "";
    IDocumentPaginatorSource idpSource = Doc;
    System.Windows.Controls.PrintDialog prnt = new System.Windows.Controls.PrintDialog();
    try
    {
        prnt.PrintQueue = new PrintQueue(new PrintServer(), PrinterName);
        for (int j = 0; j < Copie; j++) prnt.PrintDocument(idpSource.DocumentPaginator, str); 
    }
    catch (Exception ex)
    {
        string txtErr = DateTime.Now.ToString() + "; " + ex.Message + ";";
        Utility.LogEvent(txtErr);
    }
    
    return true;
}





Qualcuno ha avuto lo stesso problema e sa come posso risolvere?
310 messaggi dal 08 gennaio 2011
Ciao,
Secondo me dipende dalla composizione del documento.

il codice seguente l'ho provato creando un nuovo progetto WPF in Windows 11 in VS 2022 .Net 8 e ottengo senza problemi la stampa in grassetto.


L'esempio me lo ha fornito Bing Copilot.

// Creazione di un nuovo FlowDocument
FlowDocument flowDoc = new FlowDocument();
PrintDialog printDlg = new PrintDialog();

// Creazione di un nuovo paragrafo
Paragraph para = new Paragraph();

// Creazione del testo in grassetto
Bold bld = new Bold();
bld.Inlines.Add(new Run("Hello World"));

// Impostazione del font e della dimensione
bld.FontFamily = new FontFamily("Arial");
bld.FontSize = 24;

// Aggiunta di testo normale al paragrafo
para.Inlines.Add("Esempio di stampa in grassetto.\n");

// Aggiunta del testo in grassetto al paragrafo
para.Inlines.Add(bld);

// Aggiunta del paragrafo al FlowDocument
flowDoc.Blocks.Add(para);

printDlg.PrintDocument(((IDocumentPaginatorSource)flowDoc).DocumentPaginator, "My FlowDocument");

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.