RTF Import cu imagini din XBAP

voturi
1

Am nevoie pentru a importa un document RTF într-un FlowDocument pentru parsare în continuare .. Dar am o problemă foarte ciudat:

public string ConvertRTF(byte[] bytes)
{
    if (bytes == null)
    {
        throw new ArgumentNullException();
    }

    FlowDocument document = new FlowDocument();

    // open the file for reading
    using (MemoryStream stream = new MemoryStream(bytes, true))
    {
        // create a TextRange around the entire document
        TextRange documentTextRange = new TextRange(document.ContentStart, document.ContentEnd);
        if (documentTextRange.CanLoad(DataFormats.Rtf))
            documentTextRange.Load(stream, DataFormats.Rtf);
    }

    return XamlWriter.Save(document);

}

Am testat această metodă în trei proiecte diferite:

  • WPF stau singur app : îmi dă nici o problemă ce așa vreodată, dar din păcate, nu pot folosi acest tip de aplicație.
  • Consola app : de multe ori funcționează, dar se rupe pe documentele cu imagini din când în când, și eu nu pot obține în jurul valorii de degetul meu când se rupe și de ce ... Eroarea am primit este pe metoda de încărcare a TextRange: „nerecunoscută structura de date în format „rich Text format“ Parametru:. flux“
  • Cerere XBAP : Nici măcar nu trece de metoda CanLoad ... :( Deci , dă - mi Jack whathisname ca rezultat ...

Stange lucru este, că, atunci când l-am testat cu aplicația consola funcționează fără erori în următoarea construcție:

[STAThread]
static void Main(string[] args)
{
    OpenFileDialog dialog = new OpenFileDialog
    {
        Filter = import files (*.rtf)|*.rtf
    };

    if (dialog.ShowDialog() != DialogResult.OK)
        return;


    byte[] data;
    using (Stream filestream = dialog.OpenFile())
    {
        int offset = 0;
        data = new byte[filestream.Length];
        int remaining = data.Length;
        while (remaining > 0)
        {
            int read = filestream.Read(data, offset, remaining);
            if (read <= 0)
                throw new EndOfStreamException
                    (String.Format(End of stream reached with {0} bytes left to read, remaining));
            remaining -= read;
            offset += read;
        }
    }

    FlowDocument document = new FlowDocument();

    using (MemoryStream stream = new MemoryStream(data))
    {
        // create a TextRange around the entire document
        TextRange documentTextRange = new TextRange(document.ContentStart, document.ContentEnd);
        documentTextRange.Load(stream, DataFormats.Rtf);
    }

    Console.WriteLine(test ok);
}

Ceea ce face doar mă Clueless, pentru că este exact ceea ce fac, dar apoi eliminate în două etape ... mai întâi prelua biții, apoi utilizați MemoryStream pentru a face într-un RTF ... :(

Poate fi că ar putea exista un conflict într-o versiune oarecum dll? Folosim 3.5 SP1 pentru proiectul nostru ...

Poate cineva să mă ajute să găsească o soluție pentru una din ultimele două posibilități menționate mai sus?

Mulțumiri

Întrebat 12/03/2009 la 15:08
sursa de către utilizator
În alte limbi...                            


2 răspunsuri

voturi
0

Aveți probabil probleme cu nivelul de încredere. XBAP aplicații Internet implicite pentru încredere parțială. Puteți utiliza certificatul pentru a permite încredere deplină cu aplicatii internet xpab.

Publicat 28/09/2010 la 17:25
sursa de către utilizator

voturi
0

Nu se poate face aparent.

Ceea ce am terminat cu este de a trimite la serverul RTF, care are mai multe privilegii, și trimite rezultatul înapoi la client. Nasty, dar funcționează.

Publicat 21/12/2010 la 12:02
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more