Распечатать программно pdf из 1с
(17) погодите с категоричностью. Я уже изложил, что раз в пользовательском варианте возможность сделать это есть, должна быть и в программном.
(18) ничего там такого нет. Только в разрешенные поля внести текст, больше ничего. Это просто бланки с графическим оформлением. Причем, это оформление сыпется при попытке именно изменить pdf. Внести данные текстовые поля - никаких проблем, пользователь может легко это сделать и сохранить результат.
Соббсно, вроде как из jsсript в рамках страницы можно достучаться до форм внутри
>раз в пользовательском варианте возможность сделать это есть, должна быть и в программном.
это ложная ассоциация
(25) можно. Я ж об этом и говорил. Но через jscript из 1С немного неудобно. Во-первых, java практически не знаю, то есть, у меня нет примеров обращений к объектам, из которых можно было бы как-то подчерпнуть методы и/или имена объектов. Во-вторых, 1С для работы даже через java все равно требуется COM-объект, имя которого мне неизвестно.
(26) если Вам неизвестно решение, это не значит, что его нет. Или Вы - сотрудник Adobe и знаете наверняка? Да и насчет ложности могу сказать, что у меня большие сомнения в том, что такая фирма как Adobe не предусмотрела чего-то такого.
(28) мне на надо быть сотрудником адоба
помню они чего-то в jscript докручивали у себя не так давно - pdf с "плохим" внедренным скриптом мог сделать что-то вредоносное на компе(34) открылась форма, а поверх другая со смещением - куда кликать будешь?
(39) Т.е. заполнение будет происходить на экране, хоть и программно?
А если Esc нажмут?
Может не заниматься копанием канала выданной лопатой?
А сделать "Дано" > "Надо" простым способом?
Задача то отвлекаясь от PDF какая?
Или вообще нафик эти PDF и с чем то другим работать (начальные PDF можно сконвертить на другом компе/сервере)
все клиенты (банк или биллинг) что видел допускали кроме pdf еще экспорт в xls или csv как минимум.
парсинг pdf это "распечатать 2 камаза бумаги, чтобы потом эти 2 камаза распознавать"
(44) Задача - данный pdf (и именно его и именно в pdf), нарисованный в векторе (и именно поэтому не допускающий переконвертаций, дабы не потерять расцветку для типографии) заполнить и сохранить в виде другого pdf. Заполнение изначальным pdf-ом предусматривается (так называемая, форма заполнения) и работает в пользовательском режиме в Acrobat Reader. Мне необходимо тоже самое провернуть программно из 1С.
(44) забыл сказать, софтовая расширяемость практически отсутствует. Клиентов не уговорить поставить что-то еще.
(46) pdf в векторе для типографии. )) откройте для себя корел дроу.
(47) у клиентов есть интернет?
просто задача из разряда хочу на легковушке гараж перетащить.
варианты решения:
1. имитация из 1С действий юзверя по работе с реадером
2. отправка исходника и данных заполнения на другой комп/сервер возможно через инет
3. установка доп.софта, любого от полного акробата или корел дроу или ВК для 1с
(48) В котором и делались эти pdf и который никто не собирается покупать. Он стоит только у дизайнера этих pdf.
(49) Ни одно из решений не является приемлемым.
1. Лишние окна.
2. Куда? И зачем? Как будто кто-то одобрит установку софта на другом компе той же компании. А свой домашний я этим нагружать не стану, и уж тем более, он не будет включен, пока я на работе, это электричество это никто не оплатит.
3. Не обсуждается даже. ВК разве что протолкнуть, и то, если для ее установки нужны права администратора (а скорее всего так оно и есть) - админ не пропустит.
Есть версии, подходящие под условия, которые у меня имеются?
(50) есть. ценник озвучьте для операций на гландах. ректально
сразу все появится и админский доступ и софт какой надо купят и поставят
А если серьезно, расценки назначаю не я, так что выставить дикий ценник попросту не в моих силах.
а зачем нужно именно в пдф засовывать данные?
и потом из 1с просто в нужные места печатать что надо?
Блин, сейчас сижу и попросту не въезжаю. неужели без извращений и окольных путей не существует варианта приобщить 1с к Adobe Reader?
(56) я так понимаю, проблема не в приобщении, а в том, что адобе ридер не предоставляет COM-интерфейса, который позволял бы автоматизированно заполнять PDF формы. Т.е. вопрос в данном случае к фирме адобе, а не к 1С.
(57) Может, и так. Хотя на java можно это сделать, очевидно, через иной интерфейс. Тут вопрос в том, что java я почти не знаю, а хоть сколь-нибудь рабочего примера, на который можно было бы опереться в экспериментах, найти не удалось.
(59) я точно знаю, что из 1С можно дотянуться через javascript до глубин OpenOffice, уже проделывал это (но у меня был под рукой sdk и множество рабочих примеров, которые я, правда, переводил из, кажется, vb на 1С). Можно ли через те же скрипты дотянуться до ридера - фиг знает.
(61) спасибо, но это перебор. И что-то мне подсказывает, что эта компонента несколько иначе реализована, чем мне нужно, то есть даже разобрав ее, я не получу искомого. То есть, такой функционал - явно больше, чем можно получить от ридера.
(62) Отпишись если решишь задачу в заданых условиях.
Как вариант через скрипты операционки иметировать деятельность пользователя, но боюсь документы не имеют шаблона.
(13) По поводу этого AcroExch. только что проверил идею.
на компе полный Акробат не стоит. Попробовал в Ворде вставить объект "Adobe Acrobat Document", сохранив действия в макрос. Вот что получилось:
Sub Макрос1()
Из чего делается предположение, что AcroExch - таки объект Ридера. И работать с ним - можно. И обращаться к его коллекции Fields, и прописывать в нужные поля ФИО участника семинара, название, город, и проч.
Ну а дальше - пробуйте. Результат очень интересен и полезен. Хотелось бы, чтобы у Вас получилось! Успехов!
AppShell = Новый COMОбъект ( "Shell.Application" );
AppShell . ShellExecute ( PDF_File , "" , "" , "print" , 0 );
Процедура Печать_PDF_Файла_Фоновая ( МассивФайловPDF , ИмяУстройства = "" ) Экспорт
// Процедура печатает pdf-файлы (из списка) в фоновом режиме (без участия пользователя)
// Параметры процедуры:
// МассивФайловPDF - массив элементов типа "Файл" или массив структур с ключами "ПолноеИмя" и "Имя"
// ИмяУстройства - имя МФУ или принтера в системе
WbemScripting = Новый COMОбъект ( "WbemScripting.SWbemLocator" );
ConnectServer = WbemScripting . ConnectServer ( "" , "" , "" , "" ); //Задания от всех пользователей
ConnectServer . Security_ . impersonationlevel = 3 ; // Получение нужных прав
ConnectServer . Security_ . Privileges . AddAsString ( "SeLoadDriverPrivilege" );
Для Каждого ФайлPDF Из МассивФайловPDF Цикл
WScriptShell . Run ( Путь_AdobeReader + " /N /T " + ФайлPDF . ПолноеИмя + ?( ЗначениеЗаполнено ( ИмяУстройства ), " " + ИмяУстройства , "" ), 0 );
ДобавленоЗадание = Ложь;
ТекущееВремя = ТекущаяДата ();
// 40 секунд на добавление задания см.ОбработкаПрерыванияПользователя
Пока Не ДобавленоЗадание И ТекущаяДата () ТекущееВремя + 40 Цикл
ОбработкаПрерыванияПользователя ();
Для Каждого PrintJob Из ConnectServer . InstancesOf ( "Win32_PrintJob" ) Цикл
ОбработкаПрерыванияПользователя ();
ДобавленоЗадание = PrintJob . Document = ФайлPDF . Имя ;
КонецЦикла;
КонецЦикла;
// Ожидание завершения печати
Пока ConnectServer . InstancesOf ( "Win32_PrintJob" ). Count > 0 Цикл
КонецЦикла;
// Получение имени процесса
НомерСимвола = Найти ( Путь_AdobeReader , "\" );
Пока НомерСимвола > 0 Цикл
Путь_AdobeReader = Сред ( Путь_AdobeReader , НомерСимвола + 1 );
НомерСимвола = Найти ( Путь_AdobeReader , "\" );
КонецЦикла;
// Удаление процесса
WScriptShell . Run ( "taskkill /f /im " + Путь_AdobeReader , 0 );
Как выяснилось во время печати в pdf есть проблема с передачей прозрачности картинки. Если вставлять прозрачную печать в счет поверх подписи, то в pdf-документе печать будет непрозрачной и затрет все собой. У меня был частный случай, когда печать находилась на одном и том же месте документа и за ней постоянно было одно и то же. Решением в данном случае стала генерация картинки печати с фоном, на котором она должна быть и вставка её в макет.
Так же решением может быть печать не в pdf а xps документ. Там с прозрачностью все нормально.
Автор: Андрей Данилюк
Экспорт печатных форм и любых данных из 1С в BMP, JPEG, PCX, PDF, PNG и TIFF.
Похожие FAQ
QR код в 1С 20Столкнулся с интересной задачей реализации генерации QR-кода в 1С 8.2 ( QR-код — матричный код (двухмерный штрихкод) ) Для генерации было использовано api от google (http://chart.apis.google.com/chart). Вот сайт , который работает с ним. После тог Внешние обработки, печатные формы, обработки по заполнению табличных частей 3
Справочник «Внешние обработки, печатные формы, обработки по заполнению табличных частей» содержит список произвольных обработок, произвольных отчетов, дополнительных печатных форм, обработок для заполнения ТЧ объектов, обработок, подключаемых к отч Выборка документа по номеру и вывод на Печать, в Табличный Документ 0
Процедура Печать() Если (ПустоеЗначение(ДатаНач)=1) или (ПустоеЗначение(ДатаКон)=1) Тогда Предупреждение(" Не задан период отчета" ); Возврат; КонецЕсли; Заг=" За период с " +ДатаНач+" по " +ДатаКон; Таб=СоздатьОбъект(" Таблица" ); Таб.Выв Выбрать Остатки и Обороты по указанным счетам, отбор по субконто и выгрузка результата в EXCEL 0
Запрос=Новый Запрос; Запрос.Текст https://helpf.pro/faq/view/315.html" title="Вывести справочник в таблицу, табличный документ">Вывести справочник в таблицу, табличный документ 1
//Выведем весь справочник Номенклатура Запрос=новый Запрос; Запрос.Текст=" |ВЫБРАТЬ | Номенклатура.* |ИЗ | Справочник.Номенклатура КАК Номенклатура |" ; РезультатЗ = Запрос.Выполнить(); //Далее использовать функцию вывода Результата запрос Посмотреть все результаты поиска похожих
Еще в этой же категории
1C и Google Maps 20была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш QR код в 1С 20
Столкнулся с интересной задачей реализации генерации QR-кода в 1С 8.2 ( QR-код — матричный код (двухмерный штрихкод) ) Для генерации было использовано api от google (http://chart.apis.google.com/chart). Вот сайт , который работает с ним. После тог Как сделать, задать паузу при выполнении кода? 12
Если это какая-нибудь обработка и запускается на клиенте(у пользователя) то можно использовать обработчик ожиданий у встроенных функций: //Самый простой и доступный способ - использовать диалог " Предупреждение" // с заданным в качестве параметра Как подключиться (присоединится) к базе 1С 8 через СОМ 6
//Пример 1 v8 = CreateObject(" V8.COMConnector" ); //Строку подключения можно получить так: Если ФайловаяБазаДанных Тогда СтрокаПодключения = " file=" + КаталогБазыДанных + " ; usr=" + Пользователь + " ; pwd=" + Пароль + " ;" ; Иначе COM-подключение к базе 7.7 из 8.2 1С 6
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине. Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)): НаКлиенте Процедура Загрузки() ПутьКБазе=" D: ВашаБаза 1с77 " ; Пользователь= Посмотреть все в категории COM-объекты, WMI, WSH
Ключевые слова и Изображения
Слова упорядочены по частоте использования в тексте
Изображения
все сделал через Foxit Reader с отличным ключем /p, спасибо за содействие )) hanio, для adobe будет другой, ищи в документации к нему А есть такой же код как к bioPDF для Adobe Reader? или он аналогичен?hanio, проще всего использовать встроенные средства Adobe Readera:
Тихая печать (без открытия окон) - AcroRd32.exe /N /T PdfFile PrinterName [ PrinterDriver [ PrinterPort ] ]
или использовать [PDF Viewer] - Просмотр PDF в 1С - поищи в интернете
+ Другие параметры камандно строки:
Open a PDF file:
AcroRd32.exe PdfFile
Open a PDF file in a new instance of Adobe Reader:
AcroRd32.exe /N PdfFile
Open a PDF file at page 7:
AcroRd32.exe /A "page=7=OpenActions" PdfFile
Open a PDF file with navigation pane active, zoom out to 50%, and search for and highlight the word "batch":
AcroRd32.exe /A "zoom=50&navpanes=1=OpenActions&search=batch" PdfFile
Print a PDF file with dialog:
AcroRd32.exe /P PdfFile
Print a PDF file silently:
AcroRd32.exe /N /T PdfFile PrinterName [ PrinterDriver [ PrinterPort ] ]
Все платформы 1С, начиная с версии 8.2, а следовательно 8.3 и 8.4 могут сохранять табличные документы, печатные формы и отчеты в формате PDF, причем для этого не нужно устанавливать другие программы.
Как сохранить из 1С 8.2 в PDF
Для этого нужно подготовить документ к печати и перейти в меню «Файл — Сохранить как…» и в поле «Тип файла» выберите Документ PDF (*.pdf). Для примера сохраним в программе 1С Управление торговлей, редакция 10.3 печатную форму «Приходный кассовый ордер (ПКО)»:
Как сохранить документ из 1С 8.3 в файл PDF
В платформе 8.3 сохранение происходит аналогично, только здесь меню «Файл — Сохранить как…» находится под кнопочкой со стрелкой внизи в поле «Тип файла» выберите Документ PDF (*.pdf). Дальше, аналогично – в поле «Тип файла» выбрать «Документ PDF.
Если пункт меню «Сохранить как…» недоступен в 1С, то сначала нажмите левой кнопкой мыши в любом месте документа, который хотите сохранить и после этого пункт меню должен стать доступным:
Куда пропало меню «Сохранить» в 1С 8.3.15
После обновления платформы на версию 8.3.15 изменилось расположение пунктов «Сохранить как…», теперь для его вызова нужно нажать на кнопку с тремя вертикальными точками, в правом верхнем углу формы:
Как программно сохранить табличный документ в PDF?
Часто программистам нужно программно сохранить табличный документ 1С в формате PDF. Для этого нужно использовать метод Записать() и в качестве второго параметра указать ТипФайлаТабличногоДокумента.PDF
Читайте также: