2015-06-01 5 views
2

Мне предоставлен PDF-файл с формой. Форма не отформатирована как таблица. Мое требование - извлечь значения поля формы и записать их в файл CSV, который можно импортировать в Excel. Я попытался использовать автоматическое меню «Объединить данные в таблицу» в Acrobat Pro, но вывод включает в себя как метки, так и значения полей формы. Меня интересуют в основном только значения полей формы.Извлечение данных в формате PDF с использованием JavaScript и запись в файл CSV

Я хотел бы использовать JavaScript для извлечения данных формы и указания JavaScript, как писать CSV (так как я знаю, как должна выглядеть конечная таблица). Я дошел до извлечения полой формы:

this.getField("Today_s_Date").value;

И следуя этот пост: How to write a text file in Acrobat Javascript, я пытался писать в CSV, используя:

var cMyC = "abc"; var doc = this.createDataObject({cName: "test.txt", cValue: cMyC});

, но я получаю следующее сообщение об ошибке:

"SyntaxError: ошибка синтаксиса 1: Консоль: Exec"

В идеале я не хочу использовать онлайн-инструмент сторонних разработчиков для этого, потому что данные чувствительны. Но, пожалуйста, дайте мне знать, если у вас есть предложения. Идеальным результатом будет CSV-файл, который конечный бизнес-пользователь может открыть в Excel, чтобы увидеть формат электронной таблицы по своему выбору.

Кто-нибудь сделал это раньше? Открыт для прослушивания любых альтернативных решений. Заранее спасибо!

+0

Downvoter Не могли бы вы объяснить, как улучшить вопрос? Спасибо – dgp

ответ

1

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

По соображениям безопасности вы ограничены тем, что вы можете выводить из Acrobat без взаимодействия с пользователем. Существует хорошее обсуждение того, что может быть выведено из файла PDF here, и если вы еще этого не сделали, обязательно проверьте, что возможно с exportDataObject() в reference.

Пример, который поможет вам перейти - вы можете поместить кнопку в форму, которая будет проходить через каждое из полей в форме, добавляя их в массив, который затем может быть выведен как csv.

Что-то вроде:

var fieldValues = []; 

for (var i = 0; i < this.numFields; i++) 
    fieldValues.push(this.getField(this.getNthFieldName(i)).value); 

this.createDataObject('output.csv', fieldValues.join()); 
this.exportDataObject({ cName:'output.csv', nLaunch:'2'}); 

В этом примере .csv будет открыт как временный файл с помощью программы в формате CSV по умолчанию на компьютере. В качестве альтернативы вы можете опустить nLaunch и предоставить пользователю диалог сохранения файлов.

+0

Большое спасибо за фрагмент кода. Я думаю, что не понимаю, как использовать createDataObject и exportDataObject. Ваш ответ поможет мне продвинуться дальше в моем доказательстве концепции. Еще раз спасибо! – dgp

+0

@jss, если вы предоставили полный «.tex» этот фрагмент кода, он может быть полезен другим, включая меня. – alhelal

Смежные вопросы