Я пытаюсь написать надстройку Gmail, в которой я перебираю все электронные письма и создаю отчет на основе их производителей. Итерация по электронной почте - самая простая часть, и я сделал это, однако я не могу найти способ получить строку производителя каждого PDF-файла. До сих пор я пытался
Каков наилучший способ получить строку производителя PDF-файла в сценарии приложения Google?
Спасибо
Спасибо за предоставленный образец. Могу я спросить вас о ценности, которую вы хотите получить от образца PDF?
@Tanaike Я дал ссылку на документ, который не содержит строки производителя :) Это хороший документ: 1drv.ms/b/s!AhueqKzeEHo9ZoKn7urs-BzMciU Я ожидаю получить «Библиотека Adobe PDF 15.00»
Спасибо за обновление. Из вашего обновленного PDF-файла я могу получить Adobe PDF library 15.00. Чтобы развеять ваши опасения, можете ли вы предоставить несколько примеров, включая формат метаданных с различными шаблонами?
Рискуя сбоем пользовательского интерфейса, вы можете сделать всю клиентскую часть ES6 в браузере в боковой панели / модальных диалогах из надстройки, где вы можете использовать pdf.js.
@Tanaike извините за мой поздний ответ. Если это сработает для всех этих PDF-файлов, я буду более чем счастлив и благодарен: 1drv.ms/f/s!AhueqKzeEHo90StHZ2qjNRJeAqEZ
@Dundar Спасибо за ответ и добавление образцов. Из ваших общих файлов PDF я предложил образец сценария в качестве ответа. Не могли бы вы подтвердить это? Я не уверен, можно ли использовать этот скрипт для всех файлов PDF. Так что, если это не сработало и это не тот результат, которого вы хотели, приношу свои извинения.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я мог понять, как указано выше. Если я правильно понимаю, как насчет этого примера сценария? В этом примере скрипта из ваших общих PDF-файлов значение Producer извлекается с помощью двух регулярных выражений из содержимого файла. Пожалуйста, подумайте об этом как об одном из нескольких ответов.
Когда вы используете этот скрипт, установите идентификатор папки, в которую помещаются файлы PDF. Этот сценарий извлекает значение из всех файлов PDF в папке.
var folderId = "### folderId ###";
var files = DriveApp.getFolderById(folderId).getFilesByType(MimeType.PDF);
var regex = [/Producer\((\w.+)\)/i, /<pdf:Producer>(\w.+)</pdf:Producer>/i];
var result = [];
while (files.hasNext()) {
var file = files.next();
var content = file.getBlob().getDataAsString();
var r = regex.reduce(function(s, e) {
var m = content.match(e);
if (Array.isArray(m)) s = m[1];
return s;
}, "");
result.push({
fileName: file.getName(),
fileId: file.getId(),
vaueOfProducer: r,
});
}
Logger.log(result); // Result
Этот образец результата был извлечен из папки (мой Google Диск), в которую были помещены общие 3 файла PDF.
[
{
"fileName": "2348706469653861032.pdf",
"fileId": "###",
"vaueOfProducer": "iText� 7.1.5 �2000-2019 iText Group NV \(iText; licensed version\)"
},
{
"fileName": "Getting started with OneDrive.pdf",
"fileId": "###",
"vaueOfProducer": "Adobe PDF library 15.00"
},
{
"fileName": "DITO-Salesflow-040419-1359-46.pdf",
"fileId": "###",
"vaueOfProducer": "iText 2.1.7 by 1T3XT"
}
]
2348706469653861032.pdf, символы, которые не могут быть отображены, включены в значение Producer.Привет @Tanaike. Спасибо большое. Я адаптировал ваш код к своему, который просто перебирает все электронные письма с PDF-вложением пользователя. Затем добавляет вложение на Диск и открывает его оттуда. Я получаю пустую строку производителя для всех PDF-файлов. Я уверен, что делаю ошибку в своем коде. Вы можете помочь мне? textuploader.com/1da6i или просто без Диска: textuploader.com/1da68
@Dundar Спасибо за ответ. Что касается вашего нового вопроса, когда я запускаю оба ваших сценария, я могу подтвердить, что значения Producer из ваших 3 образцов могут быть получены из обоих сценариев. Поэтому я не мог воспроизвести вашу проблему. Я прошу прощения за неудобства. Кстати, можно вас спросить по вопросу моего ответа? Если мой ответ не был полезен для вашей ситуации, пожалуйста, сообщите мне. Потому что я должен извиниться и изменить его.
Если возможно, можете ли вы предоставить образцы PDF-файлов, которые хотите использовать?