Объединить PDF-файлы с VBA и Foxit - PullRequest
0 голосов
/ 09 февраля 2020

Я использую Foxit Phantompdf, полную версию и доступ. В нашей программе мы должны сохранить несколько файлов PDF, некоторые из них должны быть объединены в один файл при сохранении. Вот код, который я использую:

Dim phApp As PhantomPDF.Application

Dim n1 As String

Dim n2 As String

n1 = "c:\Temp\F3769-190136-GROUPE OCÉAN.pdf"

n2 = "c:\Temp\f3769-190136-GROUPE OCÉAN- facture.pdf"

Set phApp = CreateObject("PhantomPDF.Application")

Dim phCreator As PhantomPDF.Creator

Set phCreator = phApp.Creator

***'Call phCreator.CombineFiles("c:\Temp\F3769-190136-GROUPE OCÉAN.pdf|c:\Temp\f3769-190136-GROUPE OCÉAN- facture.pdf", "c:\Temp\F3769-190136-GROUPE OCÉAN.pdf", COMBINE_ADD_CONTENTS)***

Call phCreator.CombineFiles("""c:\Temp\" & n1 & "|'" & n2 & """" & ", " & """c:\Temp\F3769-190136-GROUPE OCÉAN.pdf"""" &", COMBINE_ADD_CONTENTS)

phApp.Exit

Когда я пробую его с полными именами файлов (выделены жирным шрифтом), код работает отлично. Однако, когда я пытаюсь использовать переменные, я получаю

«Аргумент не является обязательным»

. Кто-нибудь может мне помочь? Спасибо

Ответы [ 2 ]

0 голосов
/ 09 марта 2020

Я попробовал, но получил то же сообщение об ошибке. Так что я воспользовался тем, что функция работает, когда имена файлов представлены в виде простого текста. Я скопировал файлы для объединения во временную папку и переименовал их. Переименованные файлы используются в функции слияния. Он отлично работает, но Foxit добавляет страницу с контентом, и я пока не знаю, как ее удалить. Вот мое решение:

Private Sub Command4_Click()

Dim addi As String 'file to be merged to main file

Dim princi As String 'main file

Dim phApp As PhantomPDF.Application



'A temporary folder, in this case c:\t2, should be present

'In this example c:\Temp is the working folder



addi = "c:\Temp\filetomerge.pdf" 'full path of file to be merged

princi = "c:\Temp\mainfile.pdf" 'full path of main file



'fadd,pdf and fmain.pdf are the temporay files used in Foxit's function

FileCopy addi, "c:\t2\fadd.pdf" 'temporary file to be merged in temporary folder

FileCopy princi, "c:\t2\fmain.pdf" 'temporary main file in temporary folder



'Merge action

Set phApp = CreateObject("PhantomPDF.Application")

Dim phCreator As PhantomPDF.Creator

Set phCreator = phApp.Creator

Call phCreator.CombineFiles("c:\t2\fmain.pdf|c:\t2\fadd.pdf", "c:\t2\fmain.pdf", COMBINE_ADD_CONTENTS)



phApp.Exit



'Save merged file in working folder under main file name

Kill princi



FileCopy "c:\t2\fmain.pdf", princi



'delete temporary files

Kill "c:\t2\fadd.pdf"

Kill "c:\t2\fmain.pdf"

End Sub
0 голосов
/ 04 марта 2020

Ваши определения строк в строке вызова неверны.

Вы уже определили n1 и n2 с c: \ temp, и в своем преобразовании строк вы добавляете это снова. Я не знаю, является ли это причиной возникновения вашей проблемы.

Более того, я не знаю фактического необходимого синтаксиса для этого phcreator.combine (), но нельзя ли использовать только:

call pHcreator.combine(n1 & "|" & n2, …

Параметр «Аргумент не» может означать, что вы должны добавить еще один вход в pHcreator, я думаю, это может быть связано с настройками страницы функции объединения FOXIT. Попробуйте добавить целое число входной переменной в конце функции?

Но тот факт, что она работает при записи строк в открытом тексте, может указывать на неправильность манипуляций со строками?

I Я не профессионал VBA, но заинтересован в результате, работаю сам с Foxit, а также хочу объединиться с VBA. В настоящее время я не использую сом 9-й версии, мне, кажется, не повезло, и только обновить его, я знаю, что я хочу сделать, возможно.

...