Ajuda com um código de pdf que está no banco de dados
05/04/2021
0
%PDF-1.3 3 0 obj <</Type /Page /Parent 1 0 R /Resources 2 0 R /Contents 4 0 R>> endobj 4 0 obj <</Filter /FlateDecode /Length 2723>> stream ... 00000 n 0000003355 00000 n trailer << /Size 9 /Root 8 0 R /Info 7 0 R >> startxref 3458 %%EOF
Jonathan
Post mais votado
05/04/2021
Emerson Nascimento
Mais Posts
06/04/2021
Jonathan
06/04/2021
Emerson Nascimento
31/01/2024
André Silveira
Boa tarde Devs, sei que o post é antigo, mas estou passando pelo mesmo problema, peguei um projeto para fazer onde tem uma base de dados SQL Server, armazenaram os arquivos em um campo do tipo ntext, não sei que forma foram gerados e não tenho contato com a empresa que desenvolveu.
Não consigo de forma nenhuma extrair os arquivos
Criei uma coluna do tipo blob e converti para essa coluna para tentar extrair, mas sem sucesso
ALTER TABLE dbo.AD_ComissaoPerm_ExpedienteAtaImagem
ADD ColunaBlob VARBINARY(MAX);
-- Atualizando os dados na nova coluna com a conversão de ntext para varbinary(max)
UPDATE dbo.AD_ComissaoPerm_ExpedienteAtaImagem
SET ColunaBlob = CAST(CAST(Imagem AS NVARCHAR(MAX)) AS VARBINARY(MAX));
Utilizei Python, C#, o próprio SQL Server, mas nenhum extrai o arquivo.
Tentei salvar o conteúdo em um arquivo usando o note++, mas também não deu certo, creio que seja em função de imagens armazenadas no arquivo e pelo que entendi na lógica que cliente me disse, esses arquivos são arquivos do word que de alguma forma o sistema converte para PDF e grava nessa tabela já que existe uma tabela também que tem coluna do tipo ntext com arquivos .doc que também não consigo extrair, porém, o sistema de origem extrai os arquivos.
Todos os arquivos iniciam com:
%PDF-1.4
%âãÏÓ
1 0 obj
<<
/Type/ExtGState
/SA false
/SM 0.02
/TR2 /Default
>>
endobj
2 0 obj
[/DeviceRGB]
endobj
3 0 obj
<</Filter/FlateDecode/Length 2681>>
Alguém tem tem mais alguma ideia do que possa ser?
31/01/2024
Arthur Heinrich
As colunas do tipo BLOB (Binary Large Object) são adequadas para armazenar esse tipo de informação, pois não fazem nenhum tipo de transformação no dado.
Ao se criar uma coluna do tipo TEXT ou NTEXT, o banco entende que serão armazenados dados em formato texto, podendo haver conversões em função da acentuação. Além disso, alguns caracteres, em especial os de código <32, costumam ser caracteres de controle, não muito bem interpretados por aplicações que exibem texto.
Para garantir que não haja nenhum problema usando colunas desse tipo, a aplicação precisa lidar com estes detalhes. Uma forma de fazer isso é codificando o "bloco de bytes", utilizando caracteres "imprimíveis", os chamados "printable characters", que geralmente vão do código 32 ao 127 (subconjunto do código ASCII). Neste caso, o conteúdo do arquivo é convertido para um texto codificado e armazenado. Ao ler os dados, a aplicação faz o processo inverso, decodificando o texto para o mesmo bloco de bytes original.
Caso isto não tenha sido feito, basta ler o conteúdo da coluna como binário, em um buffer de memória, gravando este conteúdo binário em um arquivo binário, com nome e extensão adequados para que o Windows chame o aplicativo adequado para a abertura.
Clique aqui para fazer login e interagir na Comunidade :)