Страницы: 1
RSS
Изменить значения в файлах pdf, Vba
 
Приветствую!
В папке есть более 40 файлов pdf.
Надо изменить в этих файлах значения(цену).
На скриншоте сверху как есть, а снизу как надо.

Прошу помочь.
 
Здравствуйте.
Формат не редактируемый, соответственно, навряд ли решение (именно с помощью vba) будет найдено, тема уже появлялась неоднократно.
 
Цитата
nilske написал:
навряд ли решение (именно с помощью vba) будет найдено
Здравствуйте
Подойдет любой скрипт.
Я думал нередактируемый формат  - это фото. А так файлы открываются в ABBYY PDF Transformer+ и изменяются неспеша.
 
Цитата
написал:
Я думал нередактируемый формат  - это фото. А так файлы открываются в ABBYY PDF Transformer+ и изменяются неспеша
Открываете фотошоп (да хоть Пэинт) - и вот вам и фото редактируемый формат....ну по вашей логике
 
Цитата
Sanim написал:
....ну по вашей логике
Вы, наверное, имеете ввиду что нужно задействовать стороннюю программу.
Я так и рассчитывал, что через vba будет обращение, например, к adobe reader.
 
Цитата
написал:
ы, наверное, имеете ввиду что нужно задействовать стороннюю программу.
Выше имелось ввиду что ПДФ бывает редактируемый (с распознанным текстом , объектом), а бывает не редактируемый - когда страница просто ввиде картинки отсканирована/создана и добавлена в ПДФ
 
не бывает pdf "редактируемый", бывает "копируемый" и "извлекаемый", со всеми следующими из этого возможностями, в т.ч. и по "замене" в новом pdf символов на другие.
копируем исходный pdf в новый pdf документ, при этом добавляем в правильные места правильные объекты, получаем "заменённые" символы ))
но используем для этого полноценный ЯП, а обсуждаем на другой планете или форуме.
 
Цитата
Sanim написал:
ввиде картинки отсканирована/создана и добавлена в ПДФ
Если б была картинка, то я бы и не создал тему.
Файлы редактируются.
 
Цитата
написал:
Файлы редактируются.
Тогда странно что выше вам кто-то писал что НЕ редактируются
 
Добрый день, Михаил.
Файлы PDF с помощью VBA можно открывать в Word, менять их там и экспортировать в PDF.
Вот шаблон кода для этого:
Код

В том, что конкретно и на что менять в WordContent - не разбирался, это уже самостоятельно
Изменено: ZVI - 06.02.2024 08:38:08
 
ZVI, Владимир, Спасибо!
Макрос действительно работает.

Надеюсь кто-нибудь поможет добавить код для поиска и замены значений.
Как я вижу действия макроса:
1. Найти EUR ***.** и заменить на EUR 0.00   - вместо звездочек может быть любой знак.
2. Найти все UZS ******* и удалить    - вместо звездочек может быть любой знак.
3. Найти  / Jami miqdori: и заменить на / Jami miqdori:                        UZS 0.0
 
Цитата
Михаил Л написал: ...Надеюсь кто-нибудь поможет добавить код для поиска и замены значений...
Доброе утро, Михаил!
Вот вариант кода:
Код
Изменено: ZVI - 07.02.2024 10:06:05
 
ZVI, Владимир, спасибо!

Племянница рада даже редактору)

Макрос не осилил этот файл.
Как смог изменил код. В принципе результат подходит, только как бы назначить черный цвет для 0.00UZS   ?
Код
Sub Edit_Pdfs_In_Word2()
' ZVI:2024-02-07 https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&TID=162848
  
  '=> Change In/Out folders to suit
  Const InFldr = "D:\Новая папка\Download"
  Const OutFldr = "D:\Новая папка\aa"
  '<=
  
  Const wdExportFormatPDF = 17
  Dim WordApp As Object, WordContent As Object, oWordPar As Object, File As Object
  Dim IsTotal As Boolean
  
  If Dir(InFldr, vbDirectory) = "" Then
    MsgBox "Input Folder not found " & InFldr, vbCritical
    Exit Sub
  End If
  
  If Dir(OutFldr, vbDirectory) = "" Then
    MsgBox "Output Folder not found " & OutFldr, vbCritical
    Exit Sub
  End If
 
  Set WordApp = CreateObject("Word.Application")
  WordApp.Visible = True
  WordApp.Activate
  
  For Each File In CreateObject("Scripting.FileSystemObject").GetFolder(InFldr).Files
    With WordApp.Documents.Open(Filename:=File.Path, ConfirmConversions:=False)
      For Each oWordPar In .Range.Paragraphs
        If oWordPar.Range Like "EUR*" Then
          oWordPar.Range = "EUR 0.00"

        ElseIf oWordPar.Range Like "UZS*" Then
              oWordPar.Range = ""
        ElseIf oWordPar.Range Like "Total Amount / Jami miqdori:*" Then
          oWordPar.Range = "Total Amount / Jami miqdori:      UZS 0.00"
        End If
      Next
      .ExportAsFixedFormat OutputFileName:=OutFldr & "\" & File.Name, ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False
      .Close False
    End With
  Next
  
  WordApp.Quit False
  Set WordApp = Nothing

End Sub
 
ZVI, Владимир, Со всем Уважением, но
Цитата
ZVI написал:
Файлы PDF с помощью VBA можно открывать в Word
Я понимаю, что слова Макросы и VBA ассоциируется, у большинства, с Excel, но..., со всем уважением...В Курилку?
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Sanja написал:... Владимир, Со всем Уважением, но...
Добрый день, Виталий!
Конечно, пусть тема будет здесь.
Кто же знал, куда заведет решение  ;)
Код для VBA Excel, но, как я отметил в сообщении #10, с использованием объектной модели Word для редактирования PDF.

Цитата
Михаил Л написал:... Макрос не осилил этот файл. Как смог изменил код. В принципе результат подходит, только как бы назначить черный цвет для 0.00UZS
Михаил, уточните, пожалуйста, что конкретно не сработало с моей версией кода из сообщения #12.
Вроде все норм., включая цвет результата - посмотрите приложенный результат.
Изменено: ZVI - 09.02.2024 07:15:21
 
Цитата
ZVI написал:
с использованием объектной модели Word для редактирования PDF
в #10 всё-таки были слова более точные - экспорт документа word в формат pdf )
 
Цитата
nilske написал:... в #10 всё-таки были слова более точные - экспорт документа word в формат pdf )
Алексей, напомнило:
- Выпить не хочете?
- Нужно говорить "не хотите"!
- Ну, не хотите, как хочете.
:)
Изменено: ZVI - 09.02.2024 13:57:33
 
Цитата
ZVI написал:
что конкретно не сработало с моей версией кода из сообщения #12
Не знаю почему так, макрос полностью отрабатывает на первом файле, на втором и последующих файлах работает с EUR правильно, но неправильно с UZS.
На скриншоте три файла после работы макроса.

Причем если удалить из источника файл 1 — копия.pdf, то макрос отработает правильно только на другом первом файле.
у меня Microsoft® Office LTSC , 64-разрядная версия
Изменено: Михаил Л - 09.02.2024 11:54:15
 
Михаил Л, посмотрите вот эти особенности на сайте Microsoft, возможно дело в них
Элементы документов, которые плохо преобразуются
 
Михаил, сделал немного по-другому: проще, быстрее и надежнее.
И размер подправил под Legal, как в исходных PDF файлах.
Код
Изменено: ZVI - 09.02.2024 13:50:21
 
ZVI, теперь билеты готовы хоть к возмещению проезда))
Изменено: nilske - 10.02.2024 08:38:34
 
ZVI, Спасибо за макросы!
Мне кажется Word для форматирования pdf не очень подходит, т.к. при открытии файла программа Word видоизменяет содержимое и сохраняет в файл pdf эти изменения.
На скрине внешний вид сильно изменен. Даже между синей и желтой линиями строки меняются местами.

А так, что есть возможность редактировать pdf - уже круто. Для других задач обязательно применю.
Без обид!
Изменено: Михаил Л - 10.02.2024 10:19:55
Страницы: 1
Наверх