Import RTF s obrázky v XBAP

hlasů
1

Musím importu dokumentu RTF do FlowDocument pro další analýzu .. Ale mám velmi podivný problém:

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);

}

Testoval jsem tuto metodu ve třech různých projektech:

  • WPF samostatná aplikace : dává mi žádné problémy, co tak vůbec, ale bohužel, nemohu použít tento druh aplikace.
  • Aplikace Console : to často funguje, ale to se zlomí na dokumenty s obrazem z času na čas, a já nemohu dostat můj prst u toho, když to zlomí a proč ... Tato chyba se mi zobrazuje je na metodě Load TextRange: „Neznámá struktura v datovém formátu ‚RTF‘ Název parametru:. stream“
  • XBAP aplikace : Má vůbec dostat přes metody CanLoad ... :( Tak mi dává jack whathisname jako výsledek ...

Stange věc je, že když jsem otestovat s konzolovou aplikací to funguje bez chyb v následující konstrukci:

[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);
}

Což jen abych bezradní, protože to je přesně to, co dělám, ale potom postupně ve dvou krocích ... První načtení bitů, pak použijte MemoryStream, aby se to do RTF ... :(

Může se stát, že by mohlo dojít ke konfliktu v nějaké dll verze nějak? Použili jsme 3.5 SP1 pro náš projekt ...

Může mi někdo pomoci najít řešení pro jednu z posledních dvou možnostech výše uvedených?

dík

Položena 12/03/2009 v 15:08
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
0

Pravděpodobně máte problémy s úrovní důvěryhodnosti. XBAP aplikace Internet výchozí pro částečnou důvěru. Můžete použít certifikát, který má umožnit plnou důvěru xpab internetových aplikací.

Odpovězeno 28/09/2010 v 17:25
zdroj uživatelem

hlasů
0

Nemůže být provedeno podle všeho.

To, co jsme skončili s, je zaslání rtf na server, který má více privilegií a odeslat výsledek zpět klientovi. Ošklivé, ale funguje to.

Odpovězeno 21/12/2010 v 12:02
zdroj uživatelem

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