«Проверка файла PDF не удалась». При попытке отправить сгенерированный файл PDF по электронной почте — DocuSign

У нас есть код, который загружает файл PDF с Google Диска с помощью API Диска, после чего мы используем файл для создания нового конверта и отправки его клиенту.

При использовании одного и того же файла некоторые из этих запросов работают, а некоторые возвращаются с ошибкой «PDF_VALIDATION_FAILED».

У меня есть файл журнала (файл), который содержит base64 файла и информацию о запросе, используя внешний инструмент для преобразования base64 в PDF, он кажется действительным, а также я попытался открыть файл с помощью Adobe Acrobat и документ выглядит нормально.

Есть ли какая-либо документация о том, что делает PDF недействительным?

Заранее спасибо

Если вы попытаетесь вручную загрузить его из веб-приложения, а не через API, это сработает? или вы получаете ту же ошибку?

Inbar Gazit 17.12.2020 17:53

Я провел тест с использованием веб-приложения и того же файла, и он работает, он позволил мне загрузить файл, не зная, почему API говорит, что он недействителен.

Conary Hernandez 17.12.2020 18:00

PDF-файл в вашем запросе неполный. DocuSign правильно возвращает PDF_VALIDATION_FAILED.

mkl 17.12.2020 18:01

какой внешний инструмент вы используете для преобразования в base64? Вы всегда можете использовать двоичную загрузку вместо base64, возможно, у вас проблема с кодировкой.

Inbar Gazit 17.12.2020 18:10

Я попытался использовать двоичную передачу вместо кодировки base64 и получил ту же ошибку, следуя инструкциям документа ссылка . В файле журнала отображается та же ошибка, поэтому я думаю, что какое-то правило проверки препятствует загрузке pdf (иногда это работает).

Conary Hernandez 17.12.2020 19:32

Похоже, у меня проблема с файлом. Я открыл ваш журнал, скопировал base64, расшифровал его и сохранил как файл .pdf. Этот файл не открывался в Foxit Reader и не загружался в веб-консоль DocuSign. Во-первых, в конце отсутствует %%EOF, но, вероятно, есть и другие проблемы, из-за которых это не PDF.

Drew 17.12.2020 23:36

Я тоже так думал, но я протестировал base64 на этом инструменте и расшифровал его, и файл, похоже, в порядке. Я также использовал этот веб-сайт для проверки файла, и он говорит, что все в порядке. Я использую Nodejs для чтения файла const fileBytes = fs.readFileSync(filePath); const doc2b64 = Buffer.from(fileBytes).toString('base64');

Conary Hernandez 17.12.2020 23:55

декодировал, и с файлом все в порядке" - я не знаю, что именно вы расшифровали, но PDF-файлы в запросах, которыми вы поделились (с 16:35:20 и с 23:30:48 вчера), оба обрезаны . Первый имеет длину 61761 байт (но должен был быть 62353 байт), а второй — 52067 байт (но должен был иметь длину 55913 байт).

mkl 18.12.2020 09:55

Да мой плохой. Проблема была в кодировке файлов. Я загружал файлы с Диска с помощью API Диска и устанавливал тип ответа на поток, поэтому я изменил его на arrayBuffer, а затем на base64, и теперь он работает. Этот другой вопрос помог мне решить мою проблему: ссылка Спасибо всем за ваше время и ответы!

Conary Hernandez 18.12.2020 19:02
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
9
3 897
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы можете загрузить файл в конверт DocuSign с помощью веб-приложения DocuSign, но это не работает при использовании API:

  1. Если тип файла не pdf, укажите расширение файла в атрибуте name. Например, контракт.docx. Атрибут fileExtension иногда не используется платформой.
  2. У вас проблема с методом кодирования Base64. Измените один из примеров кода DocuSign, чтобы отправить свой файл, и он будет работать.

Да, ты был прав. Проблема была в кодировке файлов. Я загружал файлы с Диска с помощью API Диска и устанавливал тип ответа на поток, поэтому я изменил его на arrayBuffer, а затем на base64, и теперь он работает. Этот другой вопрос помог мне решить мою проблему: ссылка Спасибо, Ларри!

Conary Hernandez 18.12.2020 19:03

Спасибо за продолжение и проверку! Рад, что это работает для вас!

Larry K 21.12.2020 20:35

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