Получение свойств документа PDF

26.05.17

Разработка - Универсальные функции

Пример получения свойств документа PDF с помощью Adobe Acrobat.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Получить данные документа PDF:
.epf 7,34Kb
5 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

В данной статье приведу пример получения количества страниц PDF и определения формата бумаги.

Основные требования:

  • необходимо наличие программы Adobe Acrobat.

Ниже текст процедуры. 

&НаКлиенте
Процедура ПолучитьДанныеДокументаPDF(Команда)
	
	// создаем экземлпяр COM объекта программы Adobe Acrobat «AcroExch.PDDoc»
	// Для возможности создания данного объекта необходимо установить программу Adobe Acrobat
	// Внимание: Acrobat Reader не содержит данной компоненты!!!
	
	PDDoc = Новый COMОбъект("AcroExch.PDDoc");
	// открываем pdf документ 
	PDDoc.Open(ПутьКФайлу);
	
	// определяем количество страниц
	КоличествоСтраниц = PDDoc.GetNumPages();
	
	// определяем размерность листа (страницы) по первой странице (Нумерация страниц начинается с 0)
	// В Adobe размерность указывается в компьютерных пунктах.
	x = PDDoc.AcquirePage(0).GetSize().x; 
	y = PDDoc.AcquirePage(0).GetSize().y; 
	
	// Компьютерный пункт (нем. Punkt — точка) — единица измерения кегля шрифта 
	// и основная единица измерения в типографике. Один пункт равен 1R60;12 цицеро (пайка) = 1R60;48 квадрата. 
	// В типографиях стран на постсоветском пространстве пункт равен 0,3759 мм. 
	// В программах компьютерной вёрстки широко используется введённый компанией Adobe пункт, 
	// приравненный к 1R60;72 дюйма, т. е. 25,4R60;72 мм = 0,3527 мм. Такой пункт 
	// называют также пунктом PostScript.	
	
	// переведем пункты в миллиметры
	x1 = Окр(x * 0.3527);
	y1 = Окр(y * 0.3527);
	
	// основные форматы бумаги
	// А0 : 841 мм * 1189 мм 
	// А1 : 841 мм * 594 мм
	// А2 : 420 мм * 594 мм
	// А3 : 297 мм * 594 мм
	// А4 : 210 мм * 297 мм
	// А5 : 148 мм * 210 мм
	// А6 : 105 мм * 148 мм
	
	// определим формат бумаги
	ФорматБумаги = "";
	Если (x1 = 841 И y1 = 1189) ИЛИ (x1 = 1189 И y1 = 841) Тогда
		ФорматБумаги = "А0";
	ИначеЕсли (x1 = 841 И y1 = 594) ИЛИ (x1 = 594 И y1 = 841) Тогда
		ФорматБумаги = "А1";
	ИначеЕсли (x1 = 420 И y1 = 594) ИЛИ (x1 = 594 И y1 = 420) Тогда
		ФорматБумаги = "А2";
	ИначеЕсли (x1 = 297 И y1 = 594) ИЛИ (x1 = 594 И y1 = 297) Тогда
		ФорматБумаги = "А3";
	ИначеЕсли (x1 = 297 И y1 = 210) ИЛИ (x1 = 210 И y1 = 297) Тогда 
		ФорматБумаги = "А4";
	ИначеЕсли (x1 = 148 И y1 = 210) ИЛИ (x1 = 210 И y1 = 148) Тогда
		ФорматБумаги = "А5";
	ИначеЕсли (x1 = 105 И y1 = 148) ИЛИ (x1 = 148 И y1 = 105) Тогда
		ФорматБумаги = "А6";
	КонецЕсли;	
		
КонецПроцедуры

Вступайте в нашу телеграмм-группу Инфостарт

PDF количество страниц формат бумаги формат бумага количество adobe acrobat AcroExch.PDDoc

См. также

Универсальные функции Работа с интерфейсом Программист 1С v8.3 Бесплатно (free)

Порой необходимо временно отключить расширение 1С, не удаляя его, чтобы не потерять данные. Но в этом случае при каждом запуске всем будет лезть уведомление о неактивном расширении, хотя очевидно, это техническая информация, которой не стоит лишний раз пугать пользователей.

14.05.2025    3949    DeerCven    9    

48

Универсальные функции Программист 1С v8.3 1C:Бухгалтерия Бесплатно (free)

Благодаря этим пяти строчкам можно больше не заморачиваться с загрузкой из внешних файлов. Пользуюсь везде, всегда и постоянно.

21.05.2024    42638    dimanich70    83    

158

Универсальные функции Программист 1С v8.3 1C:Бухгалтерия Абонемент ($m)

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    6312    6    John_d    12    

58

Универсальные функции Программист Стажер 1С v8.3 1C:Бухгалтерия Бесплатно (free)

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    51926    atdonya    31    

67

Универсальные функции Программист 1С v8.3 Бесплатно (free)

На заключительных этапах, когда идет отладка или доработка интерфейса, необходимо много раз переоткрыть внешний объект. Вот один из способов автоматизации этого.

30.11.2023    8064    ke.92@mail.ru    17    

66

WEB-интеграция Универсальные функции Механизмы платформы 1С Программист 1С v8.3 1C:Бухгалтерия Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    21532    YA_418728146    8    

174
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. spenser123 26.04.17 10:36 Сейчас в теме
жаль что нет бесплатных варинтов работы с PDF и формами PDF для заполнения, обязательное наличие платной версии Acrobat сводит на нет пользу...
5. AlX0id 26.04.17 18:00 Сейчас в теме
(1)
жаль что нет бесплатных варинтов работы с PDF и формами PDF для заполнения

libreoffice - не?
7. spenser123 26.04.17 22:09 Сейчас в теме
(5) если правильно понял это тот же open office, с ним не нашел варианта заполнения напрямую из макета, только через временные файлы туда сюда гонять и в части pdf - заполнения форм и переменных там тоже не нашел, только текстовки подменять и сохранять как пдф.
14. DAL 26.05.17 14:17 Сейчас в теме
Зачем Акробат для PDF?

Можно и через офис

MSWord = Новый COMОбъект("Word.Application");
MSWord.Visible = Ложь;
MSWord.Documents.Open(ИмяФайла);
Документ = MSWord.Application.Documents(1);
Документ.SaveAs(ИмяФайлаПДФ, 17);
MSWord.Application.Quit();
15. Isonic 244 26.05.17 14:19 Сейчас в теме
(14)
скажи, а как с помощью "Word.Application" получить из pdf файла (который тебе пользователь загрузил, прислал .....)
- количество страниц ?
- формат бумаги ?
- автор создания? и тд и тп
17. DAL 26.05.17 14:21 Сейчас в теме
19. Isonic 244 26.05.17 14:25 Сейчас в теме
(17)
это не решает моих вопросов =)

И вообще разные задачи - распознать, создать, просто получить инфу о файле.

PS: PDF бывает разный - например с рисунками, чертежами и таблицами.
25. Isonic 244 26.05.17 14:30 Сейчас в теме
(22)данная статья не про чтение файла, а про просмотр свойств
26. DAL 26.05.17 14:37 Сейчас в теме
(25)

Тогда быстрее xpdf.
Формируешь текстовик и парсишь. Экономия времени на открытие COM-объекта

http://www.foolabs.com/xpdf/download.html
27. Isonic 244 26.05.17 14:40 Сейчас в теме
(26) сторонние продукты конечно удобнее, если заказчик не против (что бывает не часто)
28. DAL 26.05.17 14:44 Сейчас в теме
(27)

в состав пакета входит консольная утилита pdfinfo.
Делаешь pdfinfo.exe НашФайл.pdf > ТекстовыйФайл.txt
Потом парсишь.

Утилита бесплатная. Никаких сторонних продуктов.
29. Isonic 244 26.05.17 14:48 Сейчас в теме
(28)
Потом парсишь

ты опять за свое...
как ты таким способом определишь формат бумаги?!
30. DAL 26.05.17 15:17 Сейчас в теме
(29)

В комплект входят консольные утилиты, позволяющие:

Получить информацию из заголовка и описание метаданных файла PDF. распаковки PDF, извлечения изображений, шрифтов, преобразования в форматы png, ppm, ps, txt, html.

The 'Info' dictionary contains the following values:

title
subject
keywords
author
creator
producer
creation date
modification date

In addition, the following information is printed:

tagged (yes/no)
form (AcroForm / XFA / none)
page count
encrypted flag (yes/no)
print and copy permissions (if encrypted)
page size and rotation
file size
linearized (yes/no)
PDF version
metadata (only if requested)
simuljakr; +1 Ответить
31. Isonic 244 26.05.17 15:29 Сейчас в теме
(30)спасибо. Есть еще утилита Exiftool - она еще мощнее, так как работает с разными файлам (видео, аудио и тд и тп)
32. DAL 26.05.17 15:35 Сейчас в теме
(29)

Ну в данном случае это комплект консольных утилит. Каждая размером 1 мб., т.е. можно кинуть в хранилище. Заточены только под работу с PDF.
Это на тему "как быстро и безболезненно, не покупая доп софта решить проблему".
39. levan 24.09.20 07:01 Сейчас в теме
(28)
состав пакета входит консольная утилита pdfinfo.
Делаешь pdfinfo.exe НашФайл.pdf > ТекстовыйФайл.txt


в командной строке работает выгрузка в txt, но ту же команду, один в один закускаю через 1с, возвращает ошибку. причем если выполнить команду без выгрузки ( pdfinfo.exe НашФайл.pdf ), то все в порядке. проблема имеено в выгрузке в txt когда делаешь pdfinfo.exe НашФайл.pdf > ТекстовыйФайл.txt

Права на запись в каталог есть. В чем может быть дело?
40. dimasikus31 87 15.03.21 21:56 Сейчас в теме
(39) та же проблема была. Сделал через КомандаСистемы

ТекстКоманды = ЭтотОбъект.ПутьКПрограмме + " " + ИсходноеИмяФайла + " > " + КаталогФайла + "1.txt";


КомандаСистемы(ТекстКоманды);
2. Isonic 244 26.04.17 11:01 Сейчас в теме
Тем не менее, это не сторонний программный продукт, а непосредственно сам Adobe.
6. spenser123 26.04.17 22:04 Сейчас в теме
(2)с этим не поспоришь, продукт качественный, но цена при установке на сервер где 1000 и более пользователей, просто заоблачная
3. gradi 5 26.04.17 11:59 Сейчас в теме
А вносить изменения в документ эта компонента позволяет?
4. Isonic 244 26.04.17 15:12 Сейчас в теме
(3)
Да, эта компонента позволяет создавать и редактировать PDF документ.
8. AlX0id 26.04.17 22:17 Сейчас в теме
А, если в программной части - то только через какие-нить pdftk думаю, есть возможность.. https://www.pdflabs.com/tools/pdftk-server/ например
9. Mic 26.05.17 13:29 Сейчас в теме
что нужно установить, чтобы в программе создался объект AcroExch.PDDoc??
10. Isonic 244 26.05.17 13:57 Сейчас в теме
(9)
Для возможности создания объекта AcroExch.PDDoc необходимо установить "Acrobat Pro DC" (на оф. сайте доступна пробная (бесплатная) версия на 30 дней).
11. Mic 26.05.17 14:08 Сейчас в теме
т.е. сом объект можно создать только при установке платной версии Адоба или триальной?
12. Isonic 244 26.05.17 14:12 Сейчас в теме
(11)Да, все верно.
В бесплатной версии Acrobat Reader com объект "AcroExch.PDDoc" отсутствует
13. Isonic 244 26.05.17 14:15 Сейчас в теме
(11)Что Вы хотите получить из PDF файла? Просто есть другой вариант получения данных, правда набор данных будет ограничен
16. Isonic 244 26.05.17 14:21 Сейчас в теме
а руками пробовал открыть файл pdf в ворде? что у тебя получается?
21. DAL 26.05.17 14:25 Сейчас в теме
(16) С какой целью?

Я для работы с pdf пользуюсь ActiveX Adobe PDF Reader
24. Isonic 244 26.05.17 14:28 Сейчас в теме
(21)Ты ж сам прислал код с открытием pdf в word. Я не знаю зачем ты это прислал, это фигня полная

ActiveX Adobe PDF Reader - чтение файла, просмотр файла.
Acrobat Pro DC - чтение файла, создание файла, получения/изменение свойств файла

Чувствуешь разницу?
18. Mic 26.05.17 14:23 Сейчас в теме
нужно выводить 2 страницы из pdf файла на форму для просмотра и пакетная печать pdf файлов из 1С.
20. Mic 26.05.17 14:25 Сейчас в теме
желательно страницы выводить раздельно
33. romankoav 4 01.06.17 18:37 Сейчас в теме
Получить количество страниц просто: считываете файл pdf как текст, далее проходя по строкам ищите вхождение "/Count". Как находите, смотрите следующие цифры после - это и будет количество страниц. Смотреть до конца строки или следующего "/". Проверялось на файлах формата 1.2 и 1.5
34. Isonic 244 02.06.17 11:26 Сейчас в теме
(33) делал я так, не все файлы можно разобрать на текстовые строки.
Итог - метод Count не сработает и мы не получим результата
38. Isonic 244 05.06.17 09:30 Сейчас в теме
я проверял метод (который предлагался в (33)) на более чем 10 000 файлов, и из 10 файлов 3-4 определял количество листов, а в остальных нет. Поэтому, имхо, это неверный подход.

Таким способом хорошо WORD файлы определять, но для него в 1С есть отдельная компонента. Так что....
35. romankoav 4 02.06.17 14:45 Сейчас в теме
(34) Это как - не все? Пример?
36. romankoav 4 02.06.17 15:13 Сейчас в теме
Сейчас проанализировал 1000 первых попавшихся файлов - в некоторых слово /Count не нашлось. Файлы формата 1.4
37. brr 184 02.06.17 15:46 Сейчас в теме
Для отправки сообщения требуется регистрация/авторизация