powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Про отображение pdf
12 сообщений из 12, страница 1 из 1
Про отображение pdf
    #37309810
Фотография barl_alibek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно
если создать свойство класса %Stream.GlobalBinary и хранить там pdf файлы, то можно ли написать компоненту зен для отображения этого свойства в браузере?

Или тут нужно написать типа акробатовского плагина?
...
Рейтинг: 0 / 0
Про отображение pdf
    #37309824
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
barl_alibek, можно сделать страницу, изменить ее content-type на "application/pdf", переопределить метод OnPage, в котором выводить содержимое pdf из потока. В большинстве случаев браузер дальше попытается справиться сам (например, запустит указанное в настройках приложение-обработчик)
...
Рейтинг: 0 / 0
Про отображение pdf
    #37334445
Фотография barl_alibek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint,

чето не очень получается
<csp:content type="application/pdf"> переопределяю


Код: plaintext
1.
2.
3.
4.
5.
6.
ClassMethod OnPage() As %Status
{
	
	set ggg=##class(data.books).%OpenId("3")
	write ggg.file
	kill ggg
	}
только вот выводить содержимое pdf из потока не получается
...
Рейтинг: 0 / 0
Про отображение pdf
    #37334544
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А оно там у вас точно есть?
Вы с длинными строками работаете? Но у длинных строк тоже ограничение?
Меня смущает, что вы содержимое в одно свойство затолкали.
...
Рейтинг: 0 / 0
Про отображение pdf
    #37334592
Фотография barl_alibek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.,

содержимое есть))))
свойство - Property file As %Stream.GlobalBinary;
...
Рейтинг: 0 / 0
Про отображение pdf
    #37334597
Фотография barl_alibek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.,

Блок А.Н.Меня смущает, что вы содержимое в одно свойство затолкали.
смущает то что не просто ссылка на файл?
...
Рейтинг: 0 / 0
Про отображение pdf
    #37334844
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
barl_alibekсодержимое есть))))
свойство - Property file As %Stream.GlobalBinary;если это поток, то надо делать
d file.OutputToDevice()
...
Рейтинг: 0 / 0
Про отображение pdf
    #37334937
Фотография barl_alibek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за подсказку Блок А.Н., doublefint

на страничке пищу скрипт
Код: plaintext
1.
2.
3.
4.
5.
<script language="Cache" runat="server">
set ggg=##class(data.books).%OpenId("3")
		
	d ggg.file.OutputToDevice()
	kill ggg
</script>
...
Рейтинг: 0 / 0
Про отображение pdf
    #37335444
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
barl_alibekИнтересно
если создать свойство класса %Stream.GlobalBinary и хранить там pdf файлы, то можно ли написать компоненту зен для отображения этого свойства в браузере?

Или тут нужно написать типа акробатовского плагина?Если хотите что-то похожее , то
+
ZEN-примерClass sql.ru Extends %ZEN.Component.page
{

XData Contents [ XMLNamespace = " http://www.intersystems.com/zen"  ]
{
<page xmlns=" http://www.intersystems.com/zen" >

  <button caption="view pdf1 1" onclick="zen('html').getEnclosingDiv().innerHTML=zenPage.GetPDF(1);"/>
  <button caption="view pdf1 2" onclick="zen('html').getEnclosingDiv().innerHTML=zenPage.GetPDF(2);"/>
  <button caption="view pdf1 3" onclick="zen('html').getEnclosingDiv().innerHTML=zenPage.GetPDF();"/>

  <!-- или
  <button caption="view pdf2 1" onclick="zenPage.ViewPDF(1);"/>
  <button caption="view pdf2 2" onclick="zenPage.ViewPDF(2);"/>
  <button caption="view pdf2 3" onclick="zenPage.ViewPDF();"/>
  -->

  <html id="html"/>

</page>
}


ClassMethod GetPDF(id As %String) As %String [ ZenMethod, CodeMode = expression ]
{
$s(##class(data.books).%ExistsId(id):"<object data=%25CSP.StreamServer.cls?STREAMOID="_..Encrypt(##class(data.books).%OpenId(id).file.%Oid())_" type='application/pdf' width='540' height='350'></object>",1:"")
}

ClassMethod ViewPDF(id As %String) [ ZenMethod ]
{
  //или &js<zen('html').getEnclosingDiv().innerHTML=zenPage.GetPDF(#(id)#);>
  &js<zen('html').getEnclosingDiv().innerHTML=#(..QuoteJS($s(##class(data.books).%ExistsId(id):"<object data=%25CSP.StreamServer.cls?STREAMOID="_..Encrypt(##class(data.books).%OpenId(id).file.%Oid())_" type='application/pdf' width='540' height='350'></object>",1:"")))#;>
}

/// This client event, if present, is fired when the page is loaded.
ClientMethod onloadHandler() [ Language = javascript ]
{
  /* если нужно
  zen('html').getEnclosingDiv().innerHTML=zenPage.GetPDF(1);
  zenPage.ViewPDF(1);
  */
}

}
По умолчанию использовался Foxit PDF Reader . Тестировал для IE8, Opera 11.50 и FF5.

PS: под CSP и для других браузеров, надеюсь, сможете адаптировать сами.

PPS: и не забывайте про защиту входных данных, идущих от клиента (FireBug, Opera Dragonfly и т.д.)
...
Рейтинг: 0 / 0
Про отображение pdf
    #37336463
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
barl_alibek,

получилось?
...
Рейтинг: 0 / 0
Про отображение pdf
    #37336504
Фотография barl_alibek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.,

Да получилось, спасибо
...
Рейтинг: 0 / 0
Про отображение pdf
    #37336506
Фотография barl_alibek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit,

потребовалось установить акробатовский плагин, а потом все пошло как по маслу)))

Спасибо, теперь можно просматривать он-лайн)))
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Про отображение pdf
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]