我需要在TWebBrowser对象中显示一个pdf文件。WebBrowser1.navigate(PDFFileName)
工作正常。
但是我想从TMemoryStream加载PDF文件。
我有一个base64编码的PDF文件内容作为我的程序和搜索谷歌的输入,我写了这样的东西:
procedure WriteOnWB(EncodedPDFString: WideString);
var
Bytes: TBytes;
MS: TMemoryStream;
begin
Bytes := TNetEncoding.Base64.DecodeStringToBytes(EncodedPDFString);
MS := TMemoryStream.Create;
MS.WriteBuffer(Bytes, Length(Bytes));
MS.Seek(0, 0);
WebBrowser1.Navigate('about:blank');
(WebBrowser1.Document as IPersistStreamInit).Load(TStreamAdapter.Create(MS));
end;
结果是这样的:TWebBrowserResult web浏览器无法识别文档的内容是pdf文件。我想我忘了设置页面的内容类型,比如SetContentType('Application/pdf')
我做错了什么?这可能吗?
PS:我正在使用 Delphi XE7
2条答案
按热度按时间hc2pp10m1#
TWebBrowser是一个嵌入式IE示例,如果你不将其保存为物理文件,IE不允许你显示PDF。
因此,要显示它,您应该编写如下内容:
另一种解决方案是使用Chromium(正如Olivier建议的),Chromium(因为它是Chrome)允许您通过base64编码字符串显示PDF文件,例如,在iframe标签中(参见answer):
zbdgwd5y2#
像流一样无文件