none
IPreviewHandler für Pdf liefert E_FAIL RRS feed

  • Frage

  • Hallo,

    ich habe ein Problem mit IPreviewHandler und PDF. Ich habe folgende Implementierung:

    object o = Activator.CreateInstance(a);
    
    IInitializeWithFile fileInit = o as IInitializeWithFile;
    IInitializeWithStream streamInit = o as IInitializeWithStream;
    
    bool isInitialized = false;
    if (streamInit != null)
    {
    	_currentStream = File.Open(fileName, FileMode.Open);
    	StreamWrapper wrapper = new StreamWrapper(_currentStream);
    	streamInit.Initialize(wrapper, 0);
    	isInitialized = true;
    }
    else if (fileInit != null)
    {
    	fileInit.Initialize(fileName, 0);
    	isInitialized = true;
    }
    
    
    if (isInitialized)
    {
    	_pHandler = o as IPreviewHandler;
    	if (_pHandler != null)
    	{
    		RECT r = new RECT(viewRect);
    		_pHandler.SetWindow(handler, ref r);
    
    		_pHandler.DoPreview();
    	}
    }

    Für Office-Dokumente funktioniert die Implementierung, die Vorschau wird richtig angezeigt. Hier kommt IInitializeWithFile zum Einatz.

    Bei der Pdf-Vorschau wird IInitializeWithStream genutzt und DoPreview liefert E_FAIL.

    Eine Umstellung des Streams auf ein IStream-COM-Object im Speicher brachte auch keine Änderung:

            private IStream GetStream(string filename)
            {
                IStream stream;
                byte[] fileData = File.ReadAllBytes(filename);
                IntPtr hGlobal = Marshal.AllocHGlobal(fileData.Length);
                Marshal.Copy(fileData, 0, hGlobal, fileData.Length);
                CreateStreamOnHGlobal(hGlobal, true, out stream);
                return stream;
            }
    
    
    Muss ich noch etwas anderes aufrufen ? Was mache ich hier falsch?

    Mit freundlichen Grüßen

    Sebastian

    Donnerstag, 29. Januar 2015 09:21

Alle Antworten