TIdHTTPServer + pdf zanużony w html - jak obsłużyć

0

Cześć!

Napisałem prosty serwer w oparty na TIdHTTPServer. W pliku html, który wczytuję do ResponseInfo z dysku jest odnośnik do pdf-a, który jest w tym samym folderze i powinien być wyświetlany w ramce jako obiekt, kod html wygląda tak:

<!DOCTYPE html>
<html lang="pl">
<head>
	<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body>
	<object width="1950" height="1050" type="application/pdf" data="dok1.pdf"></object> 
</body>
</html>

Gdy serwer odbierze request obsługuję go z grubsza tak:

AResponseInfo.ContentStream := TFileStream.Create(fname, fmOpenRead or fmShareDenyWrite);

gdzie fname jest nazwą pliku html.
Otóż okazuje się, że Indy rozpoznaje to jako dwa requesty i przetwarza je jeden po drugi, osobno plik html i osobno pdf.

Niestety zamiast pożądanego efektu otrzymuję tylko pdf. Próbowałem wcześniej metodami AresponseInfo.SmartServeFile() i Aresponseinfo.ServeFile() i wynik jest podobny, tyle, że zamiast pdfa w przeglądarce, przeglądarka próbuje mi go zapisać na dysku.

Napisałem więc równie prosty serwer korzystając z innego komponentu THTTPServerThread i tam podobnie w metodzie HandleRequest wczytuję plik html do MemoryStream z MemoryStream do Response.ContentStream i działa tak jak tego oczekuje. Mam pdf zanurzony w ramce HTML jeżeli mogę tak powiedzieć.

Co robię nie tak w Indy? A może to Indy nie obsługuje poprawnie <objectu>?

Proszę o Pomoc.

1

Sorki, że odpowiadam sobie, ale zastosowałem obejście. Zamieniłem <object> na <iframe> i działa.
Tak czy inaczej nie wiem czy problem tkwi w Indy10 czy mojej obsłudze komponentu.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.