Конвертация PDF в 1С

20.11.20

Разработка - Разработка внешних компонент

COM-компонента для работы с PDF (32/64 bit)

Скачать исходный код

Наименование Файл Версия Размер
Конвертация PDF в 1С (x86 + x64):
.7z 15,62Mb
191
.7z 1.5 15,62Mb 191 Скачать

Предлагаю вашему вниманию удобный инструмент для работы с PDF форматом.

Несмотря на то, что на ИС существует множество подобных вещей, но для универсальности и простоты пришлось собрать собственный велосипед.

Это обыкновенная COM-компонента под Win, позволяющая преобразовывать PDF файлы в изображения (с отличным качеством), изображения в PDF, а также разбивать PDF на более мелкие файлы и склеивать файлы PDF в единый документ, извлекать текст из PDF, имеющих текстовые слои, вставлять на страницы PDF водяные знаки, логотипы, печати.

Есть поддержка x86 и x64 платформ.

В основе движка лежат две мощные библиотеки: iTextSharp 5 и PdfiumViewer .

Как пользоваться:

сначала просто проинсталлировать в систему пакет "SetupArrowPDF.msi" (выбираем что-то одно: из папки "x86" или из "x64") -> необходимые библиотеки скопируются в программные файлы, а компонента зарегистрируется автоматически.

далее инициализируем:

Конвертер = Новый COMОбъект("ArrowPDF.Converter");

можно сразу посмотреть версию:

Сообщить(Конвертер.Version());

[пока] есть <8> прикладных методов:

1) для сборки изображений в единый PDF файл:

 
 IMG2PDF()

2) для конвертации страниц PDF в изображения:

 
 PDF2IMG()

3) для дробления PDF:

 
 SplitPDF()

4) для слияния PDF:

 
 MergePDF()

5) для извлечения текста из PDF:

 
 GetText()

6) для вставки в PDF логотипов, водяных знаков, печатей и штампов:

 
 AddWatermark()

7) для сжатия PDF файлов:

 
 Compress()

8) для защиты PDF файлов от печати и изменений:

 
 Protect()

Почти все свойства данной компоненты, за исключением диапазонов или номеров страниц, можно не указывать принудительно, тогда они будут выставлены по умолчанию.

 

Горизонты использования компоненты не ограничены только 1с. Можете использовать её аналогично и в других ЯП.

Если будут пожелания на расширение функционала - высказывайтесь. Вместе сделаем мир лучше )


P.S. Просьба не сообщать, что можно сделать подобное через ghostscript или другие библиотеки или приложения. Перепробовал несколько разных инструментов - либо оч. сложно, либо не то качество или удобство.

 

Так как публикация вызвала интерес у сообщества, буду развивать функционал по мере появления новых идей и свободного времени.

Upd. 03.04.2020 - v.1.1

Доработка регистрации библиотеки типов. Исправление ошибки COM-взаимодействия из других ЯП.

Upd. 04.04.2020 - v.1.2

Добавлены методы GetText() и AddWatermark(). Свойство ImgPages заменено на PdfPages, которое может использоваться в нескольких методах.

Upd. 19.05.2020 - v.1.3

Добавлено сжатие PDF файлов - метод Compress().

Upd. 08.07.2020 - v.1.4

Добавлена возможность установки пароля на PDF документ - метод Protect().

Upd. 20.11.2020 - v.1.5

Добавлена 64-х разрядная версия компоненты.

 

PDF COM внешняя компонента конвертация x64

См. также

Медиадисплей. Рекламный информационный монитор для покупателя.

Разработка внешних компонент POS терминал Рабочее место Розничная торговля Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Рестораны, кафе и фаст-фуд Реклама, PR и маркетинг Управленческий учет Платные (руб)

Монитор покупателя может отображать текущую покупку на кассовом месте, показывать видеорекламу, баннеры, во время простоя разворачивать рекламу на весь экран. Можно использовать в качестве графического меню-борда в кафе и видеовывески. Управление выводом на телевизор через hdmi-приставку на базе Windows или Android. В качестве устройства отображения можно использовать Android-планшеты, фоторамки с Android, монитор любого Windows-компьютера, доступного по сети. Настраивается ЛЮБОЙ ДИЗАЙН экрана!

16800 руб.

30.05.2017    52229    34    69    

43

Внешняя компонента для сканирования (замена TWAIN-компоненты БСП) (Native Win 32/64)

Разработка внешних компонент Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Внешняя компонента позволяет работать c TWAIN-совместимым оборудованием (сканерами, камерами) . Полностью совместима со стандартной TWAIN-компонентой из БСП и может применяться как ее замена без изменения вызовов, при этом может работать с 64-разрядной платформой, а так же имеет расширенную функциональность, например, сохранение результата непосредственно в PDF без использования сторонних утилит. Прекрасно работает на сервере, тонком клиенте и веб-клиенте (проверена работа в браузерах Google Chrome, Mozilla Firefox и Microsoft Internet Explorer).

2400 руб.

12.05.2020    26410    132    99    

84

Внешняя компонента печати PDF (Native Win 32/64)

Разработка внешних компонент Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Внешняя компонента позволяет печатать PDF файлы непосредственно из 1С, не используя при этом сторонних программ. Прекрасно работает на сервере, тонком клиенте и веб-клиенте. Основана на проекте PDFium из состава проекта Chromium/Chrome

1500 руб.

17.09.2018    35242    106    127    

112

Внешняя компонента для подключения 1С к телефонии Asterisk

Разработка внешних компонент Телефония, SIP Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Внешняя компонента выполнена по технологии Native API для 1С 8.х, обеспечивает доступ к программным АТС Asterisk (FreePBX, Elastix) через AMI интерфейс. Через него можно управлять многими функциями Asterisk (определение номеров, перевод звонков, набор телефона и т. д.)

2400 руб.

04.05.2018    45131    117    66    

61

Мастер создания внешних компонент 1С (технология COM) для DELPHI 6/7/8/2005/2006/2007/2008/2010/XE/XE2/XE3

Разработка внешних компонент Платформа 1С v8.3 Платные (руб)

Средство для сверхбыстрой разработки внешних компонент 1С:Предприятия 7.7 и 8 по технологии COM на всех версиях DELPHI, начиная с 6.

2000 руб.

28.03.2013    54060    35    14    

68

QR-код с логотипом компании (обычная и управляемая форма)

Разработка внешних компонент Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Как известно, стремление сделать свою рекламную продукцию запоминающейся и выделяющейся — верный путь к успеху. Сегодня, мы поговорим с вами о том, что можно сделать с обычным черно-белым QR-кодом, чтобы он стал более живым и привлекательным. Если вам не терпится попробовать сделать QR-код с логотипом компании, то эта обработка для вас!

2400 руб.

22.06.2016    30880    4    4    

8

Внешняя компонента 1С и С++. Продолжаем разговор.

Разработка внешних компонент Платформа 1С v8.3 Бесплатно (free)

А давайте запилим 8.3.26 до релиза, или оповещение с сервера...

19.02.2024    4169    starik-2005    28    

53

Внешние компоненты 1С и язык C++

Разработка внешних компонент Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Некоторые практические аспекты создания внешних компонент на языке С++ для платформы 1С 8.3++.

26.01.2024    4926    starik-2005    32    

39
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
96. FReIM 8 27.08.21 15:05 Сейчас в теме
Добрый день.
При конвертации pdf в Jpg
В результат выдает:
Absolute path information is required.
Код:
ПутьКФайлу=Выборка.ПутьКФайлу;
				ПутьКФайлу="C:\Temp\Азопирам-К Эоми ТЕСТ (ВИНАР).pdf";
				Файл = новый Файл(ПутьКФайлу);
				Если  Файл.Существует() тогда
					Если Найти(ПутьКФайлу,".pdf")>0 тогда
						Конвертер = Новый COMОбъект("ArrowPDF.Converter");
						Папка="С:\Temp\Images";
						Конвертер.ImgFormat="JPG";
						// размеры изображений
						Конвертер.ImgWidth = 4000;
						Конвертер.ImgHeight = 6000;
						// разрешающая способность
						//Конвертер.ImgDpiX = 1200;
						//Конвертер.ImgDpiY = 1200;
						Результат = Конвертер.PDF2IMG(ПутьКФайлу, Папка);
						Если НЕ ПустаяСтрока(Результат) Тогда
							Сообщить(Результат);
						КонецЕсли;
					КонецЕсли;
				КонецЕсли;
Показать
+
98. SerVer1C 750 30.08.21 21:51 Сейчас в теме
(96) Код у вас правильный. Скорее всего, PDF-файл какой-то проблемный...
+
100. FReIM 8 13.09.21 10:37 Сейчас в теме
(98)
А код обязательно должен быть на клиенте? Или можно на сервере?
Я на сервер компоненту поставил, и на сервере код выполняется.
Что в модуле объекта что с директивой &НаСервере.
Название файла может быть ни кириллице?
+
101. FReIM 8 13.09.21 11:10 Сейчас в теме
На другом сервере выдают такую ошибку
"The given path's format is not supported."
+
102. FReIM 8 13.09.21 12:24 Сейчас в теме
Поменял имя файла на латиницу - заработало.
Но сразу обнаружился странный артефакт, при сохранении изображения, ландшафт портретом стал.
Хотя если убрать параметры, то уже нормально.

(101)
+
103. IceEvgen 22 05.10.21 12:37 Сейчас в теме
Подскажите, что не так??? Выдает ошибку: Данный формат пути не поддерживается.

Конвертер = Новый COMОбъект("ArrowPDF.Converter");

Исходный = "С:/Temp/Book.pdf";
Папка = "С:/Temp/Images";

Конвертер.PdfPages = "1"; // номера страниц через запятую

Конвертер.ImgFormat = "JPG"; // или "bmp", или "TiF", или "Png" (по умолчанию)

// размеры изображений
Конвертер.ImgWidth = 4000;
Конвертер.ImgHeight = 6000;

// разрешающая способность
//Конвертер.ImgDpiX = 1200;
//Конвертер.ImgDpiY = 1200;

Результат = Конвертер.PDF2IMG(Исходный, Папка);

Если НЕ ПустаяСтрока(Результат) Тогда
Сообщить(Результат);
КонецЕсли;
+
104. IceEvgen 22 05.10.21 13:00 Сейчас в теме
Все разобрался, извините, уже не актуально..
+
129. triviumfan 93 30.06.22 11:20 Сейчас в теме
(104) Зато для других актуально. Можно было и ответить в чем заключалась такая ошибка "Данный формат пути не поддерживается"
Прикрепленные файлы:
+
130. SerVer1C 750 30.06.22 18:41 Сейчас в теме
(129) Проверьте наличие данных путей и их доступность (пути на сервере или на клиенте?)
+
131. triviumfan 93 01.07.22 16:12 Сейчас в теме
(130) проверял: через imagemagik работает, а через вашу компоненту - нет. пути на сервере
+
132. SerVer1C 750 01.07.22 16:37 Сейчас в теме
(131) Если пути на сервере, то и компонента должна быть на сервере.
+
133. triviumfan 93 01.07.22 16:44 Сейчас в теме
(132) разумеется, она там =(
+
105. selena72 07.10.21 12:27 Сейчас в теме
Подскажите, пожалуйста, метод Protect() может устанавливает пароль на открытие файла? или только на изменение, а открыть pdf без ввода пароля можно?
+
106. SerVer1C 750 07.10.21 14:19 Сейчас в теме
(105) метод Protect() может защитить только от изменения.
+
107. oleg1979 33 31.01.22 16:28 Сейчас в теме
Если PDF в ландшафте, то на выходе получаем JPG в портрете. Как сделать так, что бы конвертация была корректной относительно ориентации страниц PDF?
+
108. SerVer1C 750 31.01.22 17:20 Сейчас в теме
(107) Задайте размер по высоте больше размера по ширине.
+
109. oleg1979 33 31.01.22 21:27 Сейчас в теме
(108) В файле PDF может быть страницы с разной ориентацией, поэтому выставление размеров некорректно.
+
110. oleg1979 33 31.01.22 21:38 Сейчас в теме
(108) Кроме того, предполагается, что на вход компоненты поступает файл с изначально неизвестной ориентацией страниц и хотелось бы что бы компонента автоматически определяла её, а затем уже конвертировала в jpg.
+
111. SerVer1C 750 31.01.22 22:55 Сейчас в теме
(110) Учту в новой версии.
+
112. sergivanov 10 10.02.22 15:38 Сейчас в теме
Вопрос в следующем. jpg сформировался на диск но при помещении во временное хранилище проблема. Я думаю , что файл какой то нестандартный получается. FF D8 FF E0 00 10 4A 46 49 46 00 01 01 01 00 60 00 60 00 00 FF DB 00 43 00 08 06 06 07 06 05 08 07 07 07 09 09 08 0A 0C 14 0D 0C 0B 0B 0C 19 12 13 0F 14 1D 1A 1F 1E 1D 1A 1C 1C 20 24 2E 27 20 22 2C 23 1C 1C 28 37 29 2C 30 31 34 34 34 1F 27 39 3D 38 32 3C 2E 33 34 32 FF DB 00 43 01 09 09 09 0C 0B 0C 18 0D 0D 18 32 21 1C 21 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 FF C0 00 11 08 07 D0 0F A0 03 01 22 00 02 11 01 03 11 01 FF C4 00 1F 00 00 01 05 01 01 01 01 01 01 00 00 00 00 00 00 00 00 01 02 03 04 05 06 07 08 09 0A 0B FF C4 00 B5 10 00 02 01 03 03 02 04 03 05 05 04 04 00 00 01 7D 01 02 03 00 04 11 05 12 21 31 41 06 13 51 61 07 22 71 14 32 81 91 A1 08 23...
Конвертер = Новый COMОбъект("ArrowPDF.Converter");
			  Сообщить(Конвертер.Version());  			  
			  Исходный = ПутьКФайлу; 
			  Папка = стр; 			  
			  Конвертер.PdfPages = "1,2,3,4,5,8,16, 19 ,28 "; // номера страниц через запятую 			  
			  Конвертер.ImgFormat = "jpg"; // или "bmp", или "TiF", или "Png" (по умолчанию)			  
			  // размеры изображений
			  Конвертер.ImgWidth = 4000;
			  Конвертер.ImgHeight = 3000; 			  
			  // разрешающая способность
			  //Конвертер.ImgDpiX = 1200;
			  //Конвертер.ImgDpiY = 1200;
			  
			  Результат = Конвертер.PDF2IMG(Исходный, Папка);
			  Сообщить(Результат); 	
			  Если ПустаяСтрока(Результат) Тогда 
				  ИмяФайлаРезультата = НайтиФайлы(Папка,"*.jpg");
				  Для каждого н из ИмяФайлаРезультата Цикл  
					  ВложенияДок = Новый Структура;
					  ВложенияДок.Вставить("АдресВоВременномХранилище",ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(н.ПолноеИмя)));
					  Если Не ПустаяСтрока(ВложенияДок.АдресВоВременномХранилище) Тогда
						  Хранилище = ПолучитьИзВременногоХранилища(ВложенияДок.АдресВоВременномХранилище);
						  Если ТипЗнч(Хранилище) <> Тип("ДвоичныеДанные") Тогда
							  Результат = Хранилище.Получить();							  
						  Иначе
							  Результат = Хранилище.;
						  КонецЕсли; 
						  Область = Макет.ПолучитьОбласть("Изображение");		 
						  Рисунок = Область.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка); 
						  Рисунок.Высота = 297;
						  Рисунок.Ширина = 210;
						  
						  Рисунок.ГраницаСверху = Ложь;
						  Рисунок.ГраницаСнизу = Ложь;
						  Рисунок.ГраницаСлева = Ложь;
						  Рисунок.ГраницаСправа = Ложь;
						  Рисунок.РазмерКартинки = РазмерКартинки.АвтоРазмер;
						  Рисунок.Картинка = Новый Картинка(Результат);
						  Рисунок.Линия = Новый Линия(ТипЛинииРисункаТабличногоДокумента.НетЛинии);
						  ТабличныйДокумент.Вывести(Область);
					  КонецЕсли;	
					  Возврат ТабличныйДокумент;
Показать
+
113. SerVer1C 750 10.02.22 16:22 Сейчас в теме
(112)
jpg сформировался на диск но при помещении во временное хранилище проблема. Я думаю , что файл какой то нестандартный получается.

во временное хранилище можно поместить любые двоичные данные.
+
114. sergivanov 10 10.02.22 22:14 Сейчас в теме
(113) Данный файл не помещается на картинку в табличный документ
+
115. SerVer1C 750 10.02.22 22:42 Сейчас в теме
(114) Скорее всего, с конвертером это никак не связано.
+
118. rif-nrr 14 24.02.22 22:22 Сейчас в теме
Добрый день, скачал компоненту, не получается сделать водяной знак, прошу помочь разобраться.
На входе два ПДФ:
1. Прайс лист, сохраненный в pdf из 1С (на ПДФ файле при выделении таблица с колонками)
2. Водяной знак - pdf файл, сохраненный из 1с табличного документа с картинкой в середине листа.

При выполнении команды добавления водяного знака получается что водяной знак не видно совсем, он как-бы за таблицей прайса остается невидим. Как сделать чтобы водяной знак получился как водяной знак, то есть фоновым рисунком под таблицей?
+
119. SerVer1C 750 25.02.22 10:40 Сейчас в теме
(118) Попробуйте сделать pdf с прайсом без текстового слоя, т. е. чтобы была монолитная картинка. Ещё вариант: попробуйте поменять местами параметры ИсходныйПДФ и ВодянойЗнак в методе AddWatermark().
+
120. rif-nrr 14 08.03.22 10:58 Сейчас в теме
(119) Спасибо за ответ, только увидел его. В общем так и сделал уже: пришлось разбирать ПДФ на картинки, наносить на каждую знак и потом склеивать обратно в ПДФ
+
121. Aspire1C 736 17.03.22 17:22 Сейчас в теме
Добрый день. Скачал вашу обработку. А можно как то отрезать пустую область листа?

Этими параметрами не получается:
Конвертер.ImgWidth = 6000;
Конвертер.ImgHeight = 4000;
+
122. SerVer1C 750 17.03.22 17:32 Сейчас в теме
(121) Конвертер преобразовывает лист из pdf в графический формат целиком как есть. Воспользуйтесь любым графическим редактором.
+
123. Aspire1C 736 17.03.22 17:33 Сейчас в теме
(122) Это понятно, но мне надо автоматом. Думал вдруг есть какие то параметры... жаль
+
124. soi 133 08.04.22 08:53 Сейчас в теме
Добрый день,

При инициализации выводит ошибки:

2147221164(0x80040154): Класс не зарегистрирован
{ВнешняяОбработка.ТестКонвертерПДФ.Форма.Форма.Форма(5)}:Конвертер = Новый COMОбъект("ArrowPDF.Converter");
{ВнешняяОбработка.ТестКонвертерПДФ.Форма.Форма.Форма(29)}:ПодписатьНаСервере();

по причине:
-2147221164(0x80040154): Класс не зарегистрирован

или

2147221005(0x800401F3): Недопустимая строка с указанием класса
{ВнешняяОбработка.ТестКонвертерПДФ.Форма.Форма.Форма(5)}:Конвертер = Новый COMОбъект("ArrowPDF.Converter");
{ВнешняяОбработка.ТестКонвертерПДФ.Форма.Форма.Форма(29)}:ПодписатьНаСервере();

по причине:
-2147221005(0x800401F3): Недопустимая строка с указанием класса

ОС: Windows 7 Проф x64
1С:Предприятие 8.3 (8.3.20.1674)

Пробовал разворачивать и 32х и 64х версии PDFКонвертера
Пробовал запускать 1С как x32 так и x64

Результат одинаковый - с ошибкой.
Прошу помочь в решении проблемы.
+
125. soi 133 08.04.22 09:09 Сейчас в теме
126. Natuseeq 13.05.22 11:38 Сейчас в теме
Добрый день! Инициализирую компоненту в общем модуле. При вызове gettext() текст преобразования пустой, а в Pdf файле есть данные. В чем может быть причина? Помогите, пожалуйста
Прикрепленные файлы:
+
127. SerVer1C 750 14.05.22 19:46 Сейчас в теме
(126) Скорее всего pdf не содержит текстового слоя.
+
134. triviumfan 93 05.07.22 14:15 Сейчас в теме
(127) Снова вернулся к это компоненте - теперь получаю "В GDI+ возникла ошибка общего вида.". Вообще не информативная ошибка.
ЧЯДНТ?
я поставил х64, ошибок при создании обертки нету, версию пишет 1.5, но при конвертации выдавало сначала одну ошибку, теперь другую.
Я один такой что ли? Не работает ни на клиенте, ни на сервере.
+
135. SerVer1C 750 05.07.22 14:52 Сейчас в теме
(134) Предлагаю вам проверить работоспособность компоненты на другой системе.
+
138. triviumfan 93 11.07.22 20:11 Сейчас в теме
(135) Проверил на локальном компе - та же ошибка, что и на рабочем сервере. Не знаю, что это за капризная компонента, но у меня она не работает на двух машинах)
Прикрепленные файлы:
+
139. SerVer1C 750 11.07.22 22:36 Сейчас в теме
(138) Предлагаю скопировать путь из проводника, либо написать его вручную посимвольно. Возможно, что-то из-за кодировок расходится... А лучше создайте новый каталог (чтобы весь путь был на латинице) с доступом 1с-ному процессу.
-----
Воспроизвел вашу ошибку, написав имя диска <Ц> как "С" русская. Проблема на вашей стороне...
+
140. triviumfan 93 12.07.22 09:08 Сейчас в теме
(139)
А лучше создайте новый каталог (чтобы весь путь был на латинице) с доступом 1с-ному процессу.

я ведь скопировал ваш код из публикации + вставил СоздатьКаталог(), показав, что путь реален и подкаталог был создан.
Но вы оказались правы - в публикации как раз русская "С" :D
+
141. SerVer1C 750 12.07.22 10:11 Сейчас в теме
128. triviumfan 93 30.06.22 11:10 Сейчас в теме
@SerVer1C, добрый день. А можно ли взять одну лишь dll, запихнуть её в макет и регистрировать из 1с, если потребуется?
В общем, по феншую можно сделать или установщик msi не только регистрирует библиотеку. Мне нужна лишь dll без всяких установщиков.
+
136. SerVer1C 750 05.07.22 15:02 Сейчас в теме
(128) COM dll зависит от двух дополнительных dll . Инсталлятор располагает библиотеки в нужных местах и регистрирует COM-компоненту.
+
137. triviumfan 93 05.07.22 15:49 Сейчас в теме
(136) может мне вручную их зарегать? C:\Program Files\ArrowPDF\ itextsharp.dll, PdfiumViewer и ArrowPDF?
Попробовал на локальном компе - тут вообще регистрация не проходит (класс не зарегистрирован). А что регать - не понятно. Запускал под админом. Хоть бы инструкция была для ручной регистрации
+
154. Diyversus 28.06.23 16:55 Сейчас в теме
(137) Класс не зарегистрирован - у меня была такая ошибка, когда я устанавливал Arrow PDF х-64 , а платформа была х-32. Не верно понял назначение установщиков.
После установки Arrow pdf х-32 ком-коннектор стал нормально создаваться.
+
142. user1718284 28.11.22 17:59 Сейчас в теме
Добрый день.
Подскажите пожалуйста, можете добавить в вашу библиотеку метод для наложения водного знака с точки зрения планов "на оборот"?
Т.е. если файл будет одной страницей, то Результат = Конвертер.AddWatermark(ВодянойЗнак, ИсходныйПДФ, НовыйПДФ);

Или в кратце описать как можно пересобрать ваш dll.

А то мне кажется, что дробить и пересобирать pdf не совсем правильное решение.

P.S. Также кажется что для полного комплекта вам нужен метод, который возвращает количество страниц.
Спасибо.
+
143. SerVer1C 750 28.11.22 22:11 Сейчас в теме
(142) Не совсем понял, что вы хотите сделать. Про кол-во страниц отметил у себя.
+
144. user1718284 29.11.22 01:12 Сейчас в теме
(143)
Я формирую штамп на документ, с помощью табличного документа 1С. Далее сохраняю табличный документ в PDF.

Потом накладываю этот PDF по вашей инструкции.

Результат = Конвертер.AddWatermark(ИсходныйПДФ, ВодянойЗнак, НовыйПДФ);


Но если документ состоит из сканируемых страниц, то штам не видно. Он находится за кратинкой.
Но если я меняю водяной знак и исходный ПДФ местами, то видно.

По этому вопрос, можете ли вы доработатать и сделать отдельный метод?
+
145. DrWeb3 71 13.06.23 16:19 Сейчас в теме
Добрый день. Благодарю за полезную компоненту. Скачал, установил, всё работает.

Вопрос, может ли компонента обрезать полученную картинку по размерам изображения. Конвертирую с её помощью небольшой отчет, по высоте с пол страницы, по ширине 2/3 страницы. Соответственно возникают лишние белые поля. Можно как-то от них избавиться с помощью настроек?
+
146. SerVer1C 750 13.06.23 16:23 Сейчас в теме
(145) Здравствуйте! С помощью данной компоненты - нет. Используйте для подобных целей любой графический редактор или встроенный в 1С (с 8.3.14+) объект ОбрабатываемаяКартинка.
+
147. DrWeb3 71 13.06.23 16:26 Сейчас в теме
(146) Да, спасибо, графическим редактором то я пользоваться умею. Хотел как-то научить этому 1С, чтобы потом слать полученную картинку пользователям в телегу. Но ответ понял )

Не в курсе есть ли какая-нибудь внешняя компонента реализующая подобное или в целом возможность редактирования изображений?
+
148. SerVer1C 750 13.06.23 16:27 Сейчас в теме
(147) добавил в предыдущее сообщение - можно сделать с помощью "ОбрабатываемаяКартинка".
+
149. DrWeb3 71 13.06.23 16:47 Сейчас в теме
(148)
ОбрабатываемаяКартинка


Спасибо! Век живи, век учись )
+
150. Diyversus 20.06.23 17:09 Сейчас в теме
Теоретически можно поместить такую компоненту в бинарные данные, выгружать по необходимости и через Запустить() "просить" её делать, что надо?
+
151. SerVer1C 750 20.06.23 17:31 Сейчас в теме
(150) Можно сделать всё, нельзя сделать всего.
+
152. Diyversus 28.06.23 16:15 Сейчас в теме
При попытке использовать метод "PDF2IMG"
Результат = Конвертер.PDF2IMG(Исходный, Папка);

Возвращает "отказано в доступе к папке(параметр "Исходный")

Давали все возможные права, запускали на разных компах - всё равно выдает отказ в доступе к папке.

Компонента хорошая, полезная, но как это обойти?
+
153. SerVer1C 750 28.06.23 16:26 Сейчас в теме
(152) Посмотрите комментарии №№ 139, 140. Также надо понимать, откуда вы запускаете компоненту (с сервера или с клиента), если с сервера, то надо давать путь, видимый с сервера 1с и права на папку должны быть предоставлены пользователю, из-под которого запущена служба 1с.
+
155. Diyversus 28.06.23 16:59 Сейчас в теме
(153) Всё бы ничего, но пробовал на домашнем ПК (Windows 7 x64)
Учетка с админскими правами, у пользователя ОС, под которым работаю, есть доступ к папке.
Однако ловлю, указанную мной, ошибку
+
156. SerVer1C 750 28.06.23 17:05 Сейчас в теме
(155) однозначно, вы что-то делаете не так. Посмотрите внимательно пример в публикации. Укажите ТОЧНЫЕ пути к PDF файлу и папке.
+
157. Diyversus 28.06.23 17:10 Сейчас в теме
(156) Для исключения человеческого фактора, путь копировал из проводника.
Прикрепил скриншот, на нём - показано, что на папку, в Разрешениях, предоставлены полные права. np300 - пользователь ОС, под которым работаю,
Пользователь np300 относится, как к администраторам, так и к пользователям. для обоих случаев к папке даны полные права.
Попробую запустить 1С от имени администратора. Уже не знаю , что еще можно проверить.

В режиме отладки копировал из переменных пути и переходил по ним в проводнике, т.е. пути указаны верно
Прикрепленные файлы:
+
158. SerVer1C 750 28.06.23 17:14 Сейчас в теме
(157) Давайте ваш код на 1с в студию.
+
159. Diyversus 28.06.23 17:16 Сейчас в теме
(158) Простая проба компоненты
Процедура ВыгрузкаИзображений()
	Конвертер = Новый COMОбъект("ArrowPDF.Converter");
	Сообщить(Конвертер.Version);
	Исходный = "D:\temp\Input";
	Папка = "D:\temp\Output";
	
	Конвертер.PdfPages = "*"; // номера страниц через запятую
	
	Конвертер.ImgFormat = "png"; // или "bmp", или "TiF", или "Png" (по умолчанию)
	
	// размеры изображений
	Конвертер.ImgWidth = 4000;
	Конвертер.ImgHeight = 6000;
	
	// разрешающая способность
	Конвертер.ImgDpiX = 1200;
	Конвертер.ImgDpiY = 1200;
	
	Результат = Конвертер.PDF2IMG(Исходный, Папка);
	
	Если НЕ ПустаяСтрока(Результат) Тогда 
		Сообщить(Результат);
	КонецЕсли;	
КонецПроцедуры

Показать
+
160. SerVer1C 750 28.06.23 17:19 Сейчас в теме
(159) А теперь возвращайтесь к публикации и читайте заново. Особенно описание метода PDF2IMG ["2) для конвертации страниц PDF в изображения:"]. Потом пробуйте опять, если не получается, снова возвращайтесь к чтению описания. И так в цикле до тех пор, пока не получится.
simuljakr; +1
161. Diyversus 28.06.23 17:27 Сейчас в теме
(159)
(160)
Не папка, а файл.
Благодарю ))
SerVer1C; +1
162. simuljakr 203 19.01.24 14:12 Сейчас в теме
Что-то не работает...
Компоненту установил, комп перезагрузил...
Но вот эта штука:

Результат = Конвертер.PDF2IMG(АдресФайлаНаКлиенте, АдресКартинки);


на выходе всегда выдает пустую строку.

Компоненту ставил 64-х битную...
Файл по указанному адресу - существует...

В конфигураторе
Конвертер = Новый COMОбъект("ArrowPDF.Converter"); 

- определяется как COM-объект...

Вот код:
Код


Что я делаю не так ?
+
164. SerVer1C 750 19.01.24 14:45 Сейчас в теме
(162) см. 163
Если Результат пустой, то метод отработал корректно. Смотрите наличие графических файлов в указанной папке.
+
163. SerVer1C 750 19.01.24 14:43 Сейчас в теме
(162) Проверяйте правильность путей (если компонента на сервере, то и пути должны быть относительно сервера)
+
165. simuljakr 203 19.01.24 14:47 Сейчас в теме
(164)
У меня сервер и клиент на одной машине.
Использовал КаталогВременныхФайлов()

Картинка
+
166. SerVer1C 750 19.01.24 14:51 Сейчас в теме
(165) Если доступ на запись есть, то в папке должен появиться файл "[0]1.jpg"
+
167. simuljakr 203 19.01.24 15:11 Сейчас в теме
(166)
Да, появляется "1.jpg"
Но при этом метод все равно возвращает пустую строку....
+
168. SerVer1C 750 19.01.24 15:14 Сейчас в теме
(167) В "Результат" возвращаются ошибки компоненты
simuljakr; +1
169. simuljakr 203 19.01.24 15:37 Сейчас в теме
(168) Аааааа....
А я-то думал - туда возвращается путь, по которому создался новый файл....
Получается, что конвертированный файл всегда будет создаваться с этим именем ?
+
170. SerVer1C 750 19.01.24 15:41 Сейчас в теме
(169) Если укажете несколько страниц, то создадутся несколько файлов с именем по шаблону "[0]N.ext" - т.е. впереди лидирующие нули, если нужно, далее номер страницы и соответствующее расширение.
simuljakr; +1
173. Vegner 26 02.04.24 07:45 Сейчас в теме
(170) доброго времени суток.
а можно сделать, что бы создавался один файл, в котором будут все страницы файла pdf ?
+
174. SerVer1C 750 02.04.24 09:08 Сейчас в теме
(173) Приветствую! Метод IMG2PDF() создает единый файл из нескольких изображений. Метод MergePDF() склеивает несколько PDF в единый файл.
+
175. Vegner 26 02.04.24 09:13 Сейчас в теме
(174) нет, я сохраняю табличный документ в pdf, потом конвертирую его в картинку и отправляю картинкой. в некоторых случаях табличный документ не помещается на одну страницу и в pdf сохраняет несколько страниц, в итогде получается количество картинок равное количеству страниц в файле pdf. а мне надо разместить все страницы фала pdf в одной картинке. такое возможно?
+
176. SerVer1C 750 02.04.24 10:17 Сейчас в теме
(175) Нет. В PDF нет информации, что следующая страница является, например, продолжением таблицы из предыдущей страницы.
+
171. simuljakr 203 19.01.24 17:22 Сейчас в теме
А под Линукс есть рабочие варианты ?
+
172. SerVer1C 750 19.01.24 21:53 Сейчас в теме
(171) Пока только идеи. Там же на плюсах надо писать...
simuljakr; +1
Оставьте свое сообщение