Como posso transmitir um documento XPS para um navegador e incorporá-lo em uma página da Web?

StackOverflow https://stackoverflow.com/questions/154318

Pergunta

Eu estou procurando algumas sugestões sobre como ir sobre isso. Qualquer entrada é apreciada!

Atualmente, eu tenho uma aplicação ASP.NET MVC. No cliente, eu tenho um link com um ID de um documento XPS. Quando o usuário clica no link, eles são levados para uma página com detalhes sobre o documento. Além desta informação, gostaria de exibir o documento ao lado dessas informações, na mesma página.

No lado do servidor, uma vez que tenho o ID, eu posso obter o documento, serializado como um array de bytes, a partir do banco de dados. A questão é, qual é a melhor maneira de obter esse documento serializado na página da Web?

Eu severamente preferem não ter que largar esse documento para o sistema de arquivos e, em seguida, munge juntos um caminho de arquivo. Eu gostaria de ser capaz de transmitir o documento para o navegador como um tipo de conteúdo "application / vnd.ms-XpsDocument".

Eu tentei usar um controle web para lidar com isso (não pode escrever binário), pensou em criar um HTTP handler para fazer isso (a menor idéia por onde começar), e têm fuddled por aí com um par de outras formas de obter o fluxo de documento para o navegador.

Além disso, há também a questão de como incorporar o documento na página da web. Faço para usar um tag EMBED? Ou um objeto? Ou eu usar um iframe e definir a fonte para apontar para o que quer que entrega o documento?

Mais uma vez, eu não espero que uma solução embrulhado em uma curva. Estou à procura de alguns conselhos sobre como ir sobre isso. E, embora esta questão é sobre documentos XPS, que se aplica a qualquer aplicativo que transmite um arquivo binário que é para ser hospedado em um navegador (PDFs, etc).


Ok, como para a exibição no navegador, uma palavra: Silverlight. Isso é resolvido. Eu ainda tenho o problema de descobrir a melhor maneira de enviá-lo a partir do servidor para o navegador.


greve que. Parece Silverlight não é suficiente avançada para exibir um documento XPS apenas bastante ainda. Estou pensando em um apontar iframe a uma http manipulador agora ... As obras iframe. Pena que joga a coisa toda para baixo a tubulação. Acho que eu poderia sempre retirar a primeira página e enviar esse filhote de cachorro ...


Wow. Não há necessidade de um manipulador HTTP. A ActionResult personalizada no MVC é tudo que você precisa. Como friggen impressionante é isso?

Foi útil?

Solução

Eu acho que a maneira mais simples seria a de fornecer o documento como um link (target = "_ blank") a partir da página de detalhes. Isto tem várias vantagens:

  • Você não precisa se recuperar e transmitir todo o doc menos que o usuário pede para ele.
  • No meu sistema, pelo menos IE já está registrado como o XPS viewer padrão, assim dando o doc é própria janela a evitar toda a questão de como incorporá-lo.
  • Ele torna mais simples para fornecer uma fonte de streaming para o documento:. É só usar um HTTP Handler com um ID para um parâmetro de cadeia de consulta

Mesmo se você não gosta dessa idéia, definitivamente ir com um HTTP Handler para a transmissão de documentos. É realmente simples de fazer: quando você cria um novo HTTP Handler no Visual Studio deve dar-lhe uma página agradável com toda a ocupado com o trabalho já feito.

Outras dicas

Há um controle Silverlight capaz de exibir documentos XPS. Consulte http://firstfloorsoftware.com/blog/announcement-document-toolkit- para-Silverlight / para mais

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top