|
Как получить из web pdf документ | ☑ | ||
---|---|---|---|---|
0
FeeL86
24.11.14
✎
15:32
|
Добрый день.
Люди добрые помогите разобраться, сервер возвращает файл pdf в виде строки: %PDF-1.4 %âãÏÓ 3 0 obj <</Type /Page /Parent 1 0 R /MediaBox [0 0 595.280 841.890] /TrimBox [0.000 0.000 595.280 841.890] /Resources 2 0 R /Group << /Type /Group /S /Transparency /CS /DeviceRGB >> /Contents 4 0 R>> endobj 4 0 obj <</Filter /FlateDecode /Length 6074>> stream xœí]믷q?ö“>¹FÒN*¯å •[kÍ7¹’«‡m¥²Á±~ˆ£ÈÃa5µS ÿ~g¸$—äry¸{ι–®îÕÜá¼8g†ärêYÿô¤Òýßo<zÞðü!ý@ÅïOn¼óäSÚñ·ÀEúçßÜøýzÒÿ)üîÈ÷þë~F9"½`ƒd¤§jК÷Z끎ºÿã‹þ§ýûí?YˆÃÞù÷l2éù_Ð̯ûé__ô=ZÔãtÐDôz¤ƒºþ§¾¿ÝÝìÞívwßêŸ ã"é“»V6ëÇH´ dà„õ†ÉRÝSm¿½ã,ÿæÏý_¢°f0,.l‚ҁFƒÙ@U6TP1pɈY°èAš:cÃxŒE ŒÍ,|`"g?)V7—‹Á¨º"n§KŠàâˆ")q$.bLœ.)’rমHš£N+ˆ®¨+Ræè4jøÔ‰‹†è²#RÌ@TÝ\çKRŒLœ.ÙbÆÄé’¢QìH2Œú?Ó’ÐÄé‚"IÔ@ë¶HJQ·ER%¡n…èÖ'@2š8]’5UŸ#É ºõÊ á£vä+ù?LcÉ\u°žR@Õ=Æ2&é]2Wò£NË1ÉÝ’GŠË]©ä Ø¢t2ÓS=ÞÊ⛜o‚….#Ôä´†.®ËèÀ;øN^vœ´ódÝm¬77èÛ%ø0Ž£ëm¯u¬3Ý£ŽtïuÂOÏ}w¾~”»ð¥»Ç‡þ´Öáƃ;ûî~÷èÐÃOøó?ÿžu´{€€‚¾ˆVûWºu쌀æ??QÀߣûo¾¸A%|î [C<%Ð%ØÓjC¦éèKqp£ ÊSíãðz×CŸÿI÷J÷j÷ÓîW³å~]¾1ìN€Ä%sØïââʆƒ!ŸUTäÂ4 ’É=ÜH‡[‡·aZøa как этот текст преобразовать в pdf файл. Делаю так: ТекстОтвета = ПолучитьPDFССервера(); Текст = Новый ЗаписьТекста("C:\Temp\Test.pdf", КодировкаТекста.ANSI); Текст.ЗаписатьСтроку(ТекстОтвета); Текст.Закрыть(); файл pdf получается пустой. |
|||
1
Рэйв
24.11.14
✎
15:39
|
ты так, для иллюстрации, попробуй открыть в блокноте ехешник, сохранить как .exe и запустить:-)
|
|||
2
Рэйв
24.11.14
✎
15:40
|
со строки все сохраняется совсем не с теми кодами что поднималось.
|
|||
3
Господин ПЖ
24.11.14
✎
15:42
|
>сервер возвращает файл pdf в виде строки
не держи его так |
|||
4
FeeL86
24.11.14
✎
15:46
|
ребят можете примером кода подсказать как ответ преобразовать в файл.
|
|||
5
mehfk
24.11.14
✎
15:46
|
А ты примером кода покажи как ты его получаешь.
|
|||
6
FeeL86
24.11.14
✎
15:48
|
Процедура СформироватьПечатнуюФормуКвитанции() Экспорт
ДатаДокумента = ДатаВНужномФормате(Дата("20141122")); // формирование XML-файла Запись = Новый ЗаписьXML; Запись.УстановитьСтроку(); Запись.ЗаписатьОбъявлениеXML(); //1.Корень DeliveryRequest Запись.ЗаписатьНачалоЭлемента("OrdersPrint"); Запись.ЗаписатьАтрибут("Date", ДатаДокумента); Запись.ЗаписатьАтрибут("Account", ПараметрыИнтеграции.Пользователь); Запись.ЗаписатьАтрибут("Secure", РасчетХЭШ(ДатаДокумента + "&" + ПараметрыИнтеграции.Пароль)); Запись.ЗаписатьАтрибут("OrderCount", "1"); Запись.ЗаписатьАтрибут("CopyCount", "2"); Запись.ЗаписатьНачалоЭлемента("Order"); Запись.ЗаписатьАтрибут("DispatchNumber", "1012800412"); Запись.ЗаписатьКонецЭлемента(); Запись.ЗаписатьКонецЭлемента(); СтрXML = Запись.Закрыть(); ТекстОтвета = ОтправитьPOSTЗапросНаСервер(СтрXML, ПараметрыИнтеграции.АдресПечатнаяФормаКвитанцииКЗаказу); Текст = Новый ЗаписьТекста("C:\Temp\Test.pdf", КодировкаТекста.ANSI); Текст.ЗаписатьСтроку(ТекстОтвета); Текст.Закрыть(); КонецПроцедуры |
|||
7
mehfk
24.11.14
✎
15:51
|
А, ну тут все просто: обратись к автору функции ОтправитьPOSTЗапросНаСервер чтобы он тебе рассказал результат какого типа она возвращает.
|
|||
8
Господин ПЖ
24.11.14
✎
15:55
|
>Текст = Новый ЗаписьТекста("C:\Temp\Test.pdf", КодировкаТекста.ANSI);
бугага |
|||
9
Господин ПЖ
24.11.14
✎
15:56
|
если тупой текст обозвать ".pdf" он им не станет
|
|||
10
FeeL86
24.11.14
✎
16:06
|
Хорошо, как тупой текст преобразовать в pdf?
функции ОтправитьPOSTЗапросНаСервер всего лишь отправляет http post запрос с параметром xml. Сервер в ответ возвращает файл pdf (http://imgur.com/WZO8ojv). Проблема в том как этот ответ превратить в файл pdf средствами платформы 1С 8.1 |
|||
11
Господин ПЖ
24.11.14
✎
16:10
|
через ДвоичныеДанные?
скриншот больше похож на какой-то "слепок" из хранилищазначений |
|||
12
FeeL86
24.11.14
✎
16:23
|
ТекстОтвета = ОтправитьPOSTЗапросНаСервер(СтрXML, ПараметрыИнтеграции.АдресПечатнаяФормаКвитанцииКЗаказу);
ДвоичныеДанные = Base64Значение(ТекстОтвета); ДвоичныеДанные.Записать("C:\Temp\Test.pdf"); Так? |
|||
13
FeeL86
24.11.14
✎
16:32
|
Господин ПЖ, Вы похоже сами не знаете как это сделать.
|
|||
14
Господин ПЖ
24.11.14
✎
16:37
|
сделать что? сохранить хз что как pdf средствами 1С? понятия не имею... "текст" != "двоичный поток" из хранилища, и табличного документа с "save as" тоже не вижу
но >Текст = Новый ЗаписьТекста("C:\Temp\Test.pdf", КодировкаТекста.ANSI); явный бред |
|||
15
FeeL86
24.11.14
✎
16:40
|
ваш ответ = "я не знаю как это сделать"
|
|||
16
mehfk
24.11.14
✎
17:05
|
читал (7) ?
|
|||
17
FeeL86
24.11.14
✎
17:08
|
Я автор этой функции, возвращает тип строка
|
|||
18
Господин ПЖ
24.11.14
✎
17:11
|
(17) >Я автор этой функции
поздравляю... и какого ... ты нас тогда спрашиваешь как сохранить? тебе в (1) и (2) все написали... >возвращает тип строка толково |
|||
19
Господин ПЖ
24.11.14
✎
17:13
|
двоичный поток затолкать в текст, а потом текст сохранить ".pdf"
|
|||
20
FeeL86
24.11.14
✎
17:25
|
Функция ОтправитьPOSTЗапросНаСервер(СтрXML, АдресСтраницы)
СтрURL = ПреобразоватьКURL(СтрXML); // Заголовок POST запроса говорит о том что отправляется УРЛ кодированная форма Заголовки = Новый Соответствие(); Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded"); Попытка WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1"); WinHttp.Option(2,"utf-8"); WinHttp.Open("POST","http://" + ПараметрыИнтеграции.Сервер + ":" + ПараметрыИнтеграции.Порт + АдресСтраницы, 0); WinHttp.SetRequestHeader("Accept-Language", "ru"); WinHttp.SetRequestHeader("Accept-Charset","utf-8"); WinHttp.setRequestHeader("Content-Language", "ru"); WinHttp.setRequestHeader("Content-Charset", "utf-8"); WinHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8"); ПараметрыПОСТ = "&xml_request=" + СтрURL; WinHttp.Send(ПараметрыПОСТ); ТекстОтвета = WinHttp.ResponseText(); Возврат ТекстОтвета; Исключение Сообщить("Ошибка WinHttp запроса: " + ОписаниеОшибки()); Возврат Неопределено; КонецПопытки; КонецФункции |
|||
21
mehfk
24.11.14
✎
17:50
|
||||
22
FeeL86
24.11.14
✎
17:50
|
У COM объекта WinHttp.WinHttpRequest.5.1 есть метод ResponseStream() который вернет не строку а поотк, как дальше с этим потоком работать?
|
|||
23
mehfk
24.11.14
✎
17:53
|
||||
24
FeeL86
24.11.14
✎
17:58
|
не понятно что дальше делать. mehfk можешь кусок кода в пример привести?
|
|||
25
mehfk
24.11.14
✎
18:30
|
в (21) оно есть
|
|||
26
FeeL86
25.11.14
✎
11:37
|
Получилось вот так:
Процедура ОтправитьPOSTЗапросНаСервер(СтрXML, АдресСтраницы) СтрURL = ПреобразоватьКURL(СтрXML); // Заголовок POST запроса говорит о том что отправляется УРЛ кодированная форма Заголовки = Новый Соответствие(); Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded"); Попытка WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1"); WinHttp.Option(2,"utf-8"); WinHttp.Open("POST","http://" + ПараметрыИнтеграции.Сервер + ":" + ПараметрыИнтеграции.Порт + АдресСтраницы, 0); WinHttp.SetRequestHeader("Accept-Language", "ru"); WinHttp.SetRequestHeader("Accept-Charset","utf-8"); WinHttp.setRequestHeader("Content-Language", "ru"); WinHttp.setRequestHeader("Content-Charset", "utf-8"); WinHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8"); ПараметрыПОСТ = "&xml_request=" + СтрURL; WinHttp.Send(ПараметрыПОСТ); Буфер = WinHttp.ResponseBody(); Поток = Новый COMОбъект("ADODB.Stream"); Поток.Type = 1; //Бинарный Поток.Mode = 3; Поток.Open(); Поток.Write(Буфер); Поток.SaveToFile("C:\Temp\Test.pdf"); Поток.Close(); Исключение Сообщить("Ошибка WinHttp запроса: " + ОписаниеОшибки()); Возврат; КонецПопытки; КонецПроцедуры mehfk, спасибо за помощь |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |