Страницы: 1
RSS
Работа с PDF средствами Excel. Решения, Макросы Excel для работы с PDF
 

Здесь выложены несколько простеньких макросов для работы с PDF из Excel
Как ни странно, но из Excel можно получить доступ к PDF.

Причём сделать это на двух разных языках - IAC(AcroExch) и JavaScript
третий, самый полный доступ к PDF можно получить только через *.api плагины, выход на которые не доступен с VBA

один и тот же результат можно получить четырьмя разными способами:
Код
AVDoc.GetAVPageView.ZoomTo 1, 1
doc.zoomtype = jso.zoomtype.fitP
Exch.MenuItemExecute ("FitPage")
doc.app.execMenuItem ("FitPage")

После этих познаний такие темы как эта решаются в одну строку:
Код
jso.getField("Name").Value = "text"

1. К сообщению прикреплен только xls файл с кодом
2. По ссылке есть полный комплект
https://yadi.sk/d/Xcs9E4HseAmfm , зеркало https://cloud.mail.ru/public/8e338c0db206/ExcelPDF
(xls, pdf файлы для тестирования, SDK и другая документация)
(всего 152 Мб - из них 150 Мб Документация + 2 Мб рабочие файлы)
ссылки умерли - новые ниже в теме

Макросы:
Info                        Информация о PDF файле (Debug.print)
BM                         Создание закладки в файле (Настроено на merge.pdf)
BMPage                 Куда переходит закладка (Debug.print Настроено на merge.pdf)
TreeBookmarks    Создание дерева закладок (Настроено на merge.pdf -> tree.pdf)
BookmarkNames  Перебор имён всех закладок (Debug.print Настроено на merge.pdf)
Экспорт                Экспорт информации о закладках на лист (Настроено на tree.pdf)
mergePDF             Объединить файлы PDF в одной папке (Настроено на папку Join)
mergePDF_BM     Объединить файлы PDF в одной папке и создать закладки (Настроено на папку Join)
ListMenuItems     Изъять названия пунктов меню на лист
PDF2TXT               Вариант 1 (adobe.pdf -> adobe.txt)
PDF2TXT_2           Вариант 2 (adobe.pdf -> adobe2.txt)
jsodoc                   Тестовый файл. много разных команд. Рекомендуется запускать в пошаговом F8 режиме (создает jso.pdf и jso.txt)

Файл AcquireMenuItemNames.pdf выполняет ту же функцию, что и ListMenuItems, но делает это более наглядно в самом pdf и возможно выдаёт больше значений из меню

В первый раз все макросы рекомендуется запускать по порядку.
Либо для запуска одного конкретного макроса нужно уточнить файл, к которому обращается макрос.
Изменено: KUDRIN - 30.04.2026 07:43:46
 
Информация полезная спору нет,  но вот в чем вопрос? Может тему лучше в другую ветку перенести?
С уважением,
Федор/Все_просто
 
был выбор создать тут или в Курилке, создал тут
 
Я смотрю для работы должен быть установлен Distiller? Или можно проще извернуться?
 
Acrobat. это всё равно что с xls файлами работать без Экселя
а дистиллер там подключён по старой памяти. для работы этих макросов он не нужен
Изменено: KUDRIN - 22.01.2015 22:20:48
 
Т.е. нужен полный платный Акробат?
 
да, так же как и Excel
в ссылку в первом сообщении добавил Example.zip, чтобы можно было посмотреть те файлы, которые формируются макросами
Изменено: KUDRIN - 22.01.2015 23:39:58
 
Не смотрел. Но, спецы - может, в Приемы переместить?
 
Приемы = Копилка? )
 
Да, системное название (от "систематически путаю") :)
 
Всем здравствуйте!

Други, подскажите пожалуйста, можно ли сцеплять файлы PDF с помощью программы PDF24 (или для какой-то другой)?
 
roche380, Ваш вопрос не совсем в тему топика и уж точно к Excel отношения не имеет. Спросите то же самое у любого поисковика - полно ссылок
Согласие есть продукт при полном непротивлении сторон
 
Имелось в виду работа с программой PDF24 при помощи EXCEL.

Ранее у меня все работало как надо (спасибо KUDRIN за матчасть). При помощи VBA EXCEL можно было объединять PDF файлы. Это происходило при помощи Acrobat.

Теперь Acrobat (по определенным причинам) у меня на компе не работает.

Ищу альтернативы..... Может у кого-нибудь есть подсказки..?
 
roche380, посмотрите, может быть это поможет.
 
в первом посте ссылки сдохли
вот новые

ExcelPDF.zip 3MB
https://zippyshare.day/VG50HEOCvN0kQNk/file
https://drive.google.com/file/d/1rNS-V-umIWpESh1aRh_iFzvJE8Qpufud
https://mega.nz/file/OIkUQDQa#b6b7Xw4VG5NJhyBnI4G5vjFLL1A6DZlJ2NChj4sCrX4

Acrobat js SDK API 2003-2015.zip 339 MB
https://zippyshare.day/9UcBXrfUSu4VRZ1/file
https://drive.google.com/file/d/1n0UB7Sl8r5FZoEk2TY4cWsIboZnZvOF6
https://mega.nz/file/jEURBLaZ#T8lkbBBWGzmvCrQdVjGK1k4Eir49ySxEaxULL1hgOoo
Изменено: KUDRIN - 30.04.2026 07:39:02
 
нашлись даты создания и изменения для Sub Info() :
Код
Debug.Print "Info::CreationDate ---> " & PDDoc.GetInfo("CreationDate")
Debug.Print "Info::ModDate ---> " & PDDoc.GetInfo("ModDate")
результат выдаётся строкой в таком виде D:YYYYMMDDHHMMSS+UTC :
Код
Info::CreationDate ---> D:20150122133638+03'00'
Info::ModDate ---> D:20150122172833+03'00'

насколько я помню - в прикрепленном коде в этой теме были пустые заглушки
Код
Debug.Print "Info::Created ---> " & PDDoc.GetInfo("Created")
Debug.Print "Info::Modified ---> " & PDDoc.GetInfo("Modified")
т.к. приходилось находить часть свойств наугад или перебором. и в то время эти две даты я так и не нашёл

вот второй способ снятия дат:
Код
Set jso = PDDoc.GetJSObject
d1 = jso.Info.CreationDate
d2 = jso.Info.ModDate
результат выдаётся сразу уже в формате даты

вот ещё тема, если нужно выдрать только даты без установки акробата = бинарно с текстовым поиском или через exiftool

вот ещё док по PDDoc
https://opensource.adobe.com/dc-acrobat-sdk-docs/pdflsdk/apireference/PD_Layer/PDDoc.html
в котором даже нету ссылки на список свойств, которые можно получить через PDDoc.GetInfo
ещё можно поковырять
PDDocGetInfoASText()
PDDocGetXAPMetadataProperty()

даже в наши дни вот человек 4 года назад искал как стянуть дату
https://community.adobe.com/questions-18/where-is-the-documentation-for-of-adobe-s-10-0-type-library...
на что ему один ответил, что это "закрытая инфа", а второй ответил вообще "никак"

примерно так же было и в 2015 - многое приходилось долго находить (даже при наличии папки "\InterAppCommunicationSupport\VBSamples\" ), прежде чем создать эту тему и файл с примерами, т.к. эксельщиков работающих с PDF видимо не так много
т.е. документации было много, но глубина небольшая, даже в старых js_api.PDF порой было больше инфы чем в более новых от 201* года

да и чего говорить, если при вводе в гугл PDDoc.GetInfo("ModDate") первыми ссылками мы получим форум AutoHotkey, японский сайт https://pdf-file.nnn2.com/?p=103 , гитхаб 2018 года, который в своём же коде ссылается на этот японский сайт. но никак не официальный js SDK от Adobe по этой функции. и результатов в гугле будет аж две страницы, две карл, вместо 50

в MSDN инфа намного лучше расписана по VBA функциям, нежели в официальных доках от Adobe по js или PDDoc. да и к тому же в VBA свой внутренний отладчик через Locals очень удобен, но при работе в VBA с внешней библиотекой акробата весь кодинг приходится делать наугад без обратной связи и без мониторинга отработки кода, т.е. при ошибке библиотека тебе просто выдаст пустую строку и сиди кукуй. ну и при нажатии на F1 на фразу PDDoc.GetInfo тоже ничего не получим
MSDN он один, а этих разношёрстных доков от Adobe целая куча и все по-разному структурированы

вот пример:
тут https://opensource.adobe.com/dc-acrobat-sdk-docs/library/jsdevguide/Reader_JavaScript.html
есть список
Цитата
Object
Document

Properties
alternatePresentations, author, baseURL, bookmarkRoot, calculate, creationDate, creator, dataObjects, delay, disclosed, docID, documentFileName, dynamicXFAForm, external, fileSize, hidden, hostContainer, icons, info, innerAppWindowRect, innerDocWindowRect, isModal, keywords, layout, media, modDate, mouseX, mouseY, noautocomplete, nocache, numFields, numPages, numTemplates, path, outerAppWindowRect, outerDocWindowRect, pageNum, pageWindowRect, permStatusReady, producer, requiresFullSave, securityHandler, selectedAnnots, sounds, spellDictionaryOrder, subject, templates, URL, viewState, xfa, XFAForeground, zoom, zoomType

Methods
addAnnot, addField, addIcon, bringToFront, calculateNow, closeDoc, createDataObject, deletePages, embedDocAsDataObject, exportAsFDF, exportAsFDFStr, exportAsText, exportAsXFDF, exportAsXFDFStr, exportDataObject, exportXFAData, getAnnot, getAnnot3D, getAnnots, getAnnots3D, getDataObject, getDataObjectContents, getField, getIcon, getLinks, getNthFieldName, getNthTemplate, getOCGs, getOCGOrder, getPageBox, getPageLabel, getPageNthWord, getPageNthWordQuads, getPageNumWords, getPageRotation, getPageTransition, getPrintParams, getSound, getTemplate, getURL, gotoNamedDest, importAnFDF, importAnXFDF, importDataObject, importIcon, importSound, importTextData, importXFAData, mailDoc, mailForm, openDataObject, print, removeDataObject, removeField, resetForm, saveAs, scroll, selectPageNthWord, setDataObjectContents, setPageAction, submitForm, syncAnnotScan
только
PDDoc.GetInfo("author") не выдаст ничего, т.к. регистр влияет и надо писать PDDoc.GetInfo("Author")
PDDoc.GetInfo("creationDate") не выдаст ничего, т.к. регистр влияет и надо писать PDDoc.GetInfo("CreationDate")

в "2015 AcrobatDC_js_api_reference.pdf", который на 779 страниц,
в списке "Doc properties" свойство у "Doc" написано - "author" "creationDate" "modDate", т.е. которое не сработает для PDDoc.GetInfo
и так везде у Adobe

ещё список функций виден через VBA - View - Object Browser F12 - Acrobat
он конечно не покажет второй список внутренних js функций

Цитата
roche380 написал:
Други, подскажите пожалуйста, можно ли сцеплять файлы PDF с помощью программы PDF24 (или для какой-то другой)? Имелось в виду работа с программой PDF24 при помощи EXCEL.
в этом и есть прелесть, что на примере кода из этой темы можно работать с PDF через VBA полностью, по любым правилам, хоть собственный PDF24 пиши с блекджеком. только в PDF24 у тебя нет доступа к твоим XL ячейкам, а тут есть
например всё в той же теме - вместо обработки PDF напрямую - человеку всем форумом предлагали конвертировать его PDF файл в xls или в word

--
Изменено: KUDRIN - 30.04.2026 09:24:27
Страницы: 1
Читают тему
Наверх