ABRIR ARQUIVO PDF DIRETO BANDO DE DADOS

Bom dia pessoal.
Sou novo aqui no forum pois adquiri o scriptcase a pouco tempo e começando os trabalhos com programação. Me deparei com o primeiro projeto a qual eu preciso resgatar um arquivo PDF que está salvo dentro de uma coluna do meu banco de dados - MYSQL. Este PDF é um lauda de um outro sistema, a qual quero exibir o pdf sem a necessidade de fazer o download. Em um post que eu encontrei usando o scriptcase e estou tentando desenvolver.
A estrutura foi feita assim:
Formulário que resgata o registro da tabela. Neste mesmo formulário eu fiz um Mestre-Detalhe que busca uma grid. Nesta grid eu pego a mesma tabela e faço a busca apenas da coluna da tabela que tem o PDF-Arquivo passando o parâmetro do formulário ID do registro, para abrir o PDF no mestre detalhe do registro selecionado no formulário.

Para recuperar o arquivo eu passeio o seguinte SQL no GRID

SELECT laudopdf FROM laudoweb_pdfwhere id = [id]

Depois no evento OnRecord o codigo PHP: " a ideia aqui e recuperar o arquivo pdf que está no banco de dados e enviar ele para função", que deveria abrir o PDF e exibir na Grid - Mestre Detalhe.

[code] if(!empty({laudopdf})){
echo pdf({laudopdf});

$tmpName = {laudopdf};

$fp = fopen($tmpName, ‘r’);
$content = fread($fp, fiesize($tempName));

$binary_contents_rom_database = $content ;

header(‘Content-type: application/pdf’);
header(“Cache-Control: no-cache”);
header(“Pragma: no-cache”);
header(“Content-Disposition: inline,filename=‘document.pdf’”);
//header("Content-length: ".strlen($binary_contents_rom_database = $content));

echo $binary_contents_rom_database;[/b] [/code]

===========================================================
Só que está dando o seguinte erro ao testar:

Fatal error: Uncaught Error: Call to undefined function pdf() in C:\Program Files\NetMake\v9\wwwroot\scriptcase\app\Laudos\grid_laudoweb_pdf\grid_laudoweb_pdf_grid.class.php:1931 Stack trace: #0 C:\Program …

Aguardo.
Obrigado.

o cabeçalho da aplicação já foi escrito pelo SC você não pode reescrevê-lo.

Use uma blank.

Haroldo.
Obrigado pela contato.
Fiz uns ajuste e a apllicação executo… mas agora da o seguinte erro ao abrir a grid.

Fatal error: Allowed memory size of 2111832064 bytes exhausted (tried to allocate 262144 bytes) in C:\Program Files\NetMake\v9\wwwroot\scriptcase\app\Laudos\grid_laudoweb_pdf\grid_laudoweb_pdf_grid.class.php on line 3766

Tentei ver no arquivo php.ini. O meu está assim:

max_execution_time = 3600
max_input_time= 3600
max_input_vars = 10000
memory_limit= 1024M
post_max_size = 512M
upload_max_filesize = 512M
max_file_uploads = 50

OBS: Os arquivos PDF que estou tentando abrir são arquivos pequenos. Menor que 1 Mega.

O que pode ser?
Obrigado.

Precisa analisar a linha do erro e ver qual comando esta gerando o erro

Haroldo.

Se for para usar uma blank qual seria a melhor formar de recuperar o pdf pela consulta e abrir ele na blank.
Pode me passar como seria isto?
Obrigado.

Haroldo.
O codigo de erro está abaixo. Na execução ele diz que erro é na linha 3766.

Fatal error: Allowed memory size of 2111832064 bytes exhausted (tried to allocate 262144 bytes) in C:\Program Files\NetMake\v9\wwwroot\scriptcase\app\Laudos\grid_laudoweb_pdf\grid_laudoweb_pdf_grid.class.php on line 3766

Segue o codigo abaixo. Praticamente é a minha função php para abrir o pdf.

3759| function pdf() 3760| { 3761| $_SESSION['scriptcase']['grid_laudoweb_pdf']['contr_erro'] = 'on'; 3762| 3763| if(!empty($this->laudopdf )){ 3764| echo$this->pdf($this->laudopdf ); 3765| } 3766| 3767| $tmpName = $this->laudopdf ; 3768| 3769| $fp = fopen($tmpName, 'r'); 3770| $content = fread($fp, fiesize($tempName)); 3771| 3772| $binary_contents_rom_database = $content ; 3773| 3774| header('Content-type: application/pdf'); 3775| header("Cache-Control: no-cache"); 3776| header("Pragma: no-cache"); 3777| header("Content-Disposition: inline,filename='document.pdf'"); 3778| 3779| echo $binary_contents_rom_database; 3780| 3781| 3782| $_SESSION['scriptcase']['grid_laudoweb_pdf']['contr_erro'] = 'off'; 3783| } 3784| } 3785| ?> 3786|

Da uma olhada ai.
Obrigado.

Desconheço esse código seu.
Nao imagino o qie esta tentando fazer.

Haroldo.

Consegui resolver fazendo uma blank conforme me instruiu. Deu certo.
Só que ficou uma pequena questão.
Quando eu testo a aplicação no Mozilla o PDF abre normalmente.
Porem no Chromer da erro de carregamento do arquivo PDF.
Sabe o que pode ser isto?

O código que utilizei segue abaixo:

header('Content-type: application/pdf'); header('Content-Disposition: inline; filename="' . $filename . '"'); //header('Content-Transfer-Encoding: binary'); //header('Content-Length: ' . filesize($tmpName)); //header('Accept-Ranges: bytes'); readfile($tmpName);

Obrigado…
Grande Abraço.

Ai precisamos investigar melhor.

Haroldo.
Boa tarde.
Eu descobri o problema da minha aplicação não abrir o pdf no google chromer.
É que nativamente o google chromer usa uma função do navegador conforme o codigo abaixo. Veja.

<embed name="plugin" type="application/pdf" ...> <!-- PDF viewer UI !--> <embed id="plugin" type="application/x-google-chrome-pdf"></embed> </embed>

O que acontece na minha aplicação veja o codigo em execução.

<embed id="plugin" type="application/x-google-chrome-pdf" src="http://127.0.0.1:8090/scriptcase/app/Laudos/blank_PDF/" stream-url="blob:chrome-extension://mhjfbmdgcfjbbpaeojofohoefgiehjai/31a052e4-8573-4546-ae49-57bf23e14b08" headers="Cache-Control: no-store, no-cache, must-revalidate Connection: Keep-Alive Content-Disposition: inline; filename=&quot;laudo.pdf&quot; Content-Encoding: gzip Content-Type: application/pdf Date: Mon, 30 Jul 2018 19:37:00 GMT Expires: Thu, 19 Nov 1981 08:52:00 GMT Keep-Alive: timeout=50, max=500 Pragma: no-cache Server: Apache/2.4.25 (Win64) mod_fcgid/2.3.9 Transfer-Encoding: chunked Vary: Accept-Encoding X-Powered-By: PHP/7.0.15 " background-color="0xFF525659" top-toolbar-height="56" full-frame="">

src="http://127.0.0.1:8090/scriptcase/app/Laudos/blank_PDF/ passagem do caminho fisico. mas eu não tenho o arquivo fisicamente. O mesmo é recuperado direto do banco de dados e enviou para a minha aplicação blank.

Por isto que o chromer diz erro ao carregar o arquivo. Pois ele criar o caminho “http” mas não tem o caminho fisico para passar o arquivo PDF.

Como eu poderia resolver isto
Obrigado.

detecte o browser e implemente o código conforme o navegador:

https://pt.stackoverflow.com/questions/46871/identificar-browser-e-sua-versão
https://github.com/sinergi/php-browser-detector