Заменить слова / фразы в существующем pdf или docx на другие слова

Я пытаюсь создать динамический генератор PDF в качестве API .NET Core. Я хочу взять существующий файл PDF или .docx и отредактировать его, чтобы он заменил текущее имя (John Doe) чем-то, что можно заменить, например #NAME_PLACEHOLDER.

Затем я хочу преобразовать #NAME_PLACEHOLDER -> John Doe (или то, что есть в KeyValuePair или Dictionary<string, string>).

Я запускаю это в среде Docker, поэтому я могу легко выполнять команды, и я тоже хочу это делать.

Пока что я пробовал несколько вещей:

  • 1) pdf2htmlEX
    • Выполняется как pdf2htmlEX file.pdf
    • Хорошо справляется со своей работой
    • Может быть преобразован обратно в PDF с помощью безголового браузера Google Chrome или аналогичного
    • Проблема: для замены можно использовать только символы, используемые в PDF. Поэтому, если я использую только A, B, C в качестве символов, он превратит D в Times New Roman (или шрифт по умолчанию)
  • 2) LibreOffice ODT в PDF
    • Это было довольно приятно, потому что я мог просто разархивировать файл .odt, открыть content.xml, выполнить поиск и заменить, а затем снова сохранить его как файл .odt.
    • Может быть довольно легко преобразован в PDF с помощью soffice --convert-to pdf
    • LibreOffice довольно хорош
    • Проблема 1: Microsoft Word -> Сохранить как ODT имеет тенденцию нарушать форматирование, поэтому мы должны использовать LibreOffice, чтобы вернуться и снова изменить его
    • Проблема 2: мы не хотим отказываться от пакета Microsoft Office
  • 3) HTML в PDF с помощью Chrome Headless
    • Что вы видите, то и получаете
    • Безусловно, лучший вариант, если мы все разработчики и имеем неограниченное время
    • Проблема 1. Только наши разработчики могут вносить изменения, поскольку наш отдел маркетинга не знает HTML.
    • Проблема 2: существующие PDF-файлы необходимо переписать в HTML.

Как видите, я перепробовал множество вещей. Ни один из них, кроме Chrome Headless, не оправдал моих ожиданий. Что мне действительно нравится в № 3, так это что ты видишь, то и получаешь. Я могу сделать все это в HTML, нажать CTRL + P и посмотреть, как он выглядит в основном в виде готового PDF-файла.

Однако я ищу лучшее решение. Это можно заплатить. Это может быть бесплатно. Все, что мне нужно, это динамически заменять слова / фразы другими словами, что, по-видимому, кажется сложной задачей.

«Все, что мне нужно, это ... что, по-видимому, кажется непростым делом», - резюмирует это.

Jongware 11.04.2018 16:30

@ usr2564301 За исключением того, что я смогу все это легко сделать, если бы я мог найти хороший конвертер docx в PDF. Затем я могу просто отредактировать содержимое файла docx (разархивировать и снова заархивировать), а затем преобразовать его в PDF. Единственная проблема: платные опции, кажется, стоят буквально $ 1000 + в месяц. Я готов купить пожизненную лицензию, но не эту ерунду на сумму более 1000 долларов в месяц.

MortenMoulder 12.04.2018 08:07
0
2
488
1

Ответы 1

Спасибо, что четко указали то, что вы уже нашли. Очень помогает краткий ответ.

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

У меня есть опыт по пункту 2 «LibreOffice ODT в PDF», и я могу предложить несколько вещей для тестирования:

  1. Не используйте Microsoft для преобразования docx-> odt. Как вы понимаете, это нехорошо. Для этого используйте сам LibreOffice. Остальная часть вашего процесса останется прежней.
  2. Для некоторых документов Libre Office делает doc-> odt намного лучше. Таким образом, вместо этого вы можете работать с форматом DOC и получить лучший результат без каких-либо других изменений.
  3. Вы не сможете исключить разработчиков из процесса, но вы, безусловно, можете уменьшать их роль, позволяя вашим бизнес-командам / маркетинговым командам иметь более прямой вклад, просто:

    • предоставить разработчикам исходный документ для выполнения процесса преобразования. Разработчики могут «очистить» документ, чтобы он хорошо конвертировался.
    • сделайте эту версию документа «официальной» отправной точкой. Деловые или технические группы могут загрузить его, отрегулировать и снова включить в процесс.
    • Если возможно, предоставьте тестовую платформу бизнес-командам, чтобы они могли загружать, настраивать, выгружать и отображать в PDF. Этот цикл означает, что они смогут достичь большего и, если они будут хороши, делать впечатляющие вещи без участия разработчика.
    • Вышеупомянутые шаги просто означают, что не следует ожидать идеального преобразования произвольных сложных документов. Начинать с (даже сложной) рабочей базы - это здорово.

Некоторые из них могут показать вам, что ваш № 2 действительно даст наилучшие общие результаты.

Надеюсь, это поможет.

Большое спасибо за ваш вклад! Одна из проблем с использованием LibreOffice заключается в том, что бизнес-команда не хочет уходить от Word. Если бы мы все использовали LibreOffice, это было бы несложно. Вы бы сказали, что это лучше: 1) Сделайте документ в Word и сохраните как docx. 2) Используйте команду soffice для преобразования docx в odt. 3) Отредактируйте файл odt и сохраните его (все программно). 4) Конвертируйте odt в pdf с помощью команды soffice. Наша альтернатива прямо сейчас - это Acrobat + PDF Form Inputs, но для каждой итерации документа нам нужно редактировать исходный документ и снова вставлять все входные данные. Утомительный процесс.

MortenMoulder 23.04.2018 09:58

Пожалуйста. Конечно, ясно, что ваша команда должна придерживаться MS Office, если они к этому привыкли. Так что "да" - это мой ответ на ваш вопрос. Business / dev всегда работает с документом MS Office, а ваше приложение использует Libre Office для преобразования его в PDF. Вы можете выполнять программные манипуляции на этапе DOCX или ODT - в зависимости от того, что подходит вашей среде. Просто запомните первый пункт под моим ответом 3. выше - попросите команду разработчиков (вы сами) создать первую базовую версию DocX, поскольку вы знаете, что она хорошо конвертируется через Libre Office.

Paul Jowett 24.04.2018 03:00

Поэтому я попытался использовать soffice для преобразования моего docx -> odt -> pdf. Он действительно сработал и выглядит прилично, но не смог сделать две вещи: выровнять текст в заголовке по правому краю (используя TAB для табуляции между левым, центральным и правым), и он поместил одно из изображений в таблицу в центре вместо справа (3 столбца и центральный столбец был пуст, но теперь в нем есть изображение). Однако это вызывает ошибку изображения, когда я просто открываю docx в настольном приложении LibreOffice.

MortenMoulder 24.04.2018 11:50

Преобразования не являются 100% -ными для всех возможных макетов, но с большинством проблем можно справиться с небольшими изменениями в документе. Как только вы это сделаете, у вас будет хорошая базовая версия.

Paul Jowett 26.04.2018 10:29

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