Как получить производителя PDF в скрипте приложения Google

Я пытаюсь написать надстройку Gmail, в которой я перебираю все электронные письма и создаю отчет на основе их производителей. Итерация по электронной почте - самая простая часть, и я сделал это, однако я не могу найти способ получить строку производителя каждого PDF-файла. До сих пор я пытался

  • анализ блоба, однако это похоже на написание библиотеки PDF для разбора всего синтаксиса. тег производителя явно не присутствует
  • добавление pdf.js, который является сторонним инструментом с открытым исходным кодом для извлечения такой информации. Однако я не мог добавить его из-за проблемы с поддержкой ES3 - ES6.

Каков наилучший способ получить строку производителя PDF-файла в сценарии приложения Google?

Спасибо

Если возможно, можете ли вы предоставить образцы PDF-файлов, которые хотите использовать?

Tanaike 19.04.2019 01:01

Спасибо за предоставленный образец. Могу я спросить вас о ценности, которую вы хотите получить от образца PDF?

Tanaike 19.04.2019 09:21

@Tanaike Я дал ссылку на документ, который не содержит строки производителя :) Это хороший документ: 1drv.ms/b/s!AhueqKzeEHo9ZoKn7urs-BzMciU Я ожидаю получить «Библиотека Adobe PDF 15.00»

Dundar 19.04.2019 10:59

Спасибо за обновление. Из вашего обновленного PDF-файла я могу получить Adobe PDF library 15.00. Чтобы развеять ваши опасения, можете ли вы предоставить несколько примеров, включая формат метаданных с различными шаблонами?

Tanaike 20.04.2019 04:40

Рискуя сбоем пользовательского интерфейса, вы можете сделать всю клиентскую часть ES6 в браузере в боковой панели / модальных диалогах из надстройки, где вы можете использовать pdf.js.

TheMaster 20.04.2019 21:58

@Tanaike извините за мой поздний ответ. Если это сработает для всех этих PDF-файлов, я буду более чем счастлив и благодарен: 1drv.ms/f/s!AhueqKzeEHo90StHZ2qjNRJeAqEZ

Dundar 23.04.2019 08:20

@Dundar Спасибо за ответ и добавление образцов. Из ваших общих файлов PDF я предложил образец сценария в качестве ответа. Не могли бы вы подтвердить это? Я не уверен, можно ли использовать этот скрипт для всех файлов PDF. Так что, если это не сработало и это не тот результат, которого вы хотели, приношу свои извинения.

Tanaike 23.04.2019 10:07
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
7
147
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
  • Вы хотите получить значение Producer из файла PDF.

Я мог понять, как указано выше. Если я правильно понимаю, как насчет этого примера сценария? В этом примере скрипта из ваших общих 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 23.04.2019 11:29

@Dundar Спасибо за ответ. Что касается вашего нового вопроса, когда я запускаю оба ваших сценария, я могу подтвердить, что значения Producer из ваших 3 образцов могут быть получены из обоих сценариев. Поэтому я не мог воспроизвести вашу проблему. Я прошу прощения за неудобства. Кстати, можно вас спросить по вопросу моего ответа? Если мой ответ не был полезен для вашей ситуации, пожалуйста, сообщите мне. Потому что я должен извиниться и изменить его.

Tanaike 23.04.2019 14:13

Другие вопросы по теме