Имя: Пароль:
1C
1С v8
разделение файла PDF на отдельные страницы
,
0 alexsandrinia
 
16.03.16
13:18
Подскажите, может кто сталкивался - как можно при помощи 1С обработать многостраничный файл pdf - нужно постранично разбить на файлы (одна страница - один файл).
На форме добавил ActiveX AdobePDFReader, вывожу туда файл. Выводится целиком весь. Нужно по странично.
1 Garykom
 
гуру
16.03.16
13:43
2 alexsandrinia
 
17.03.16
08:31
есть ещё другие варианты? по этой ссылке нет dll
3 Rie
 
17.03.16
08:40
(2) Зато по этой ссылке есть волшебное слово "itextsharp", а кто имеет доступ к этому форуму - того и в гугде не банят.

Есть и другой способ. PDF - это текстовый файл. Его можно распарсить, найти нужную страницу, вырезать, сформировать как отдельный документ - и всё это штатными средствами 1С, не обращаясь к сторонним библиотекам.
4 alexsandrinia
 
17.03.16
08:42
(3) так там вроде библиотеку собирать надо
5 Rie
 
17.03.16
08:44
(4) "Собирать" - это "скачать архив и распаковать"?
6 alexsandrinia
 
17.03.16
08:49
(5) я скачал архив, распаковал. но при регистрации библиотеки выходит ошибка
модуль такой-то загружен, но точка входа такая-то не найдена
7 Кирпич
 
17.03.16
09:00
(0) щас в гугле поищу
8 Кирпич
 
17.03.16
09:00
это смотрел?
https://ru.wikipedia.org/wiki/Pdftk
9 Кирпич
 
17.03.16
09:01
10 alexsandrinia
 
17.03.16
09:09
(8) программу там нужно устанавливать, что не хотелось бы
11 Кирпич
 
17.03.16
09:18
(10) тогда сразу напиши как хотелось бы. чо я как придурок по интернету буду скакать и искать неизвестно что.
12 alexsandrinia
 
17.03.16
09:19
(11) так я же вроде так и написал, нужна dll
13 Кирпич
 
17.03.16
09:23
и чо ты с этой dll делать будешь? или тебе ВК нужно? если ВК нужно, то найми программиста, он тебе напишет.
14 NikVars
 
17.03.16
09:26
(10) А длл-ку не нужно "устанавливать"?!
BullZip Умеет разбивать на страницы.
1C xls PDF
Пост 10 как это в 1С.
15 DDwe
 
17.03.16
09:29
(3) Может и ссылку на формат дашь?
16 Кирпич
 
17.03.16
09:37
(15) вот тебе ссылка, в гугле забаненый.
http://www.adobe.com/devnet/pdf/pdf_reference.html
17 Одинесю
 
17.03.16
09:40
(16) ая.
18 Кирпич
 
17.03.16
09:42
(17) тогда просто "вот ссылка"
19 Провинциальный 1сник
 
17.03.16
09:44
(3) "PDF - это текстовый файл."
В общем случае - не текстовый. Он может быть текстовым, но не обязан.
20 NikVars
 
17.03.16
09:46
(19) Ну вот разрушил красивую теорию...
21 Rie
 
17.03.16
09:47
(19) Обязан. Другой вопрос - как в этом тексте закодирована информация (и упакованные блоки - тоже ведь в определённом смысле текст).
22 RomaH
 
naïve
17.03.16
09:51
ИмяИсходногоФайла = ПолучитьИмяВременногоФайла("pdf");
        
    ДД = ФайлИсследований.Получить();
    
    Если ТипЗнч(ДД) = Тип("ДвоичныеДанные") Тогда
        
        ДД.Записать(ИмяИсходногоФайла);
        
        Пока Выборка.Следующий() Цикл
            
            ИмяСводногоФайла = Выборка.Получатель + " " + Формат(ДатаФайла,"ДФ=ддММгг_ЧЧ_мм") + ".pdf";
            
            Скрипт = Новый COMОбъект("WScript.Shell");
            ИмяКаталогаУтилит = """C:\Program Files (x86)\PDFtk Server\bin\";
            
            Страницы = "";
            
            ВыборкаСтраниц = Выборка.Выбрать(ОбходРезультатаЗапроса.Прямой);
            
            Пока ВыборкаСтраниц.Следующий() Цикл
                
                Страницы = Страницы + " " + ВыборкаСтраниц.Страницы;
                
            КонецЦикла;
            
            ИмяФайлаРезультата = КаталогОбмена + "Сводные\" + ИмяСводногоФайла;
            
            ТекстКоманды = ИмяКаталогаУтилит + "pdftk.exe"" " + ИмяИсходногоФайла + " cat" + Страницы + " output " + """" + ИмяФайлаРезультата + """";
            
            Скрипт.Run(ТекстКоманды, 0, 1);
            
            //ДД.Записать(КаталогОбмена + "Сводные\" + ИмяСводногоФайла);
        
            ФайлАнализа = Новый Файл(КаталогОбмена + "Сводные\" + ИмяСводногоФайла);
            
            ФайлАнализа.УстановитьВремяИзменения(ДатаФайла);
            
        КонецЦикла;
23 RomaH
 
naïve
17.03.16
09:53
pdftk
можно не устанавливать - можно во временные файлы распаковывать и пользовать
24 RomaH
 
naïve
17.03.16
09:54
вроде бы - мы не заморачивались - поставили на сервер и забыли
25 Кирпич
 
17.03.16
09:58
(23) вот именно. а если хочет обязательно DLL, то пускай переименует pdftk.exe в pdftk.dll. работать будет так же.
26 alexsandrinia
 
17.03.16
10:07
спасибо большое, помогли!
27 Провинциальный 1сник
 
17.03.16
10:20
(21) Вот если бы блоки были закодированы в текст - тогда можно было бы говорить о текстовом формате pdf. Иначе это текст с бинарными вставками, то есть - бинарник.
28 Rie
 
17.03.16
12:00
(27) Они из текста в текст закодированы. И это явно оговорено - насчёт 8-битного байта и т.п. Способ хранения не меняет сущности. Если я упакую, к примеру, fb2 - он перестанет быть текстом? Если да - то это вопрос терминологии, а не по сути.
29 Rie
 
17.03.16
12:08
+(27) Это не размышлизмы, а реальная задача: "Ростелеком" лет десят назад (а может, и сейчас так) биллинги рассылал в PDF,  а на предложения иных форматов отвечал что-то вроде "сами половосношайтесь". Вот и пришлось парсить.
30 Кирпич
 
17.03.16
12:22
(28) так там есть бинарные вставки или нету? я щас глянул, вроде есть.
31 Rie
 
17.03.16
16:49
(30) Есть.
32 Провинциальный 1сник
 
17.03.16
16:54
(28) Если вы упакуете бинарные данные в base64, uue или hex - тогда это текст. Суть в том, что там не должно быть нетекстовых символов.