• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Преобразование *.doc(x) В *.pdf

  • Автор темы Bob84
  • Дата начала
B

Bob84

Здравствуйте.
Преобразовываю doc(x) файлы из Лотуса в pdf посредством

Код:
Call wordDoc.ExportAsFixedFormat( filepath,_ 'OutputFileName
wdExportFormatPDF,_ 'ExportFormat
True,_ 'OpenAfterExport
wdExportOptimizeForPrint,_ 'OptimizeFor
wdExportAllDocument,_ 'Range
1,_ 'From
1,_ 'To
wdExportDocumentContent,_ 'Item
True,_ 'IncludeDocProps
True,_ 'KeepIRM
wdExportCreateNoBookmarks,_ 'CreateBookmarks
True,_ 'DocStructureTags
True,_ 'BitmapMissingFonts
False _ 'UseISO19005_1
)

Все хорошо, но после преобразования иногда книжная ориентация страницы меняется на альбомную. Когда тот же документ сохраняю из ворда в pdf - все нормально. Макрос при этом генериется с такими же параметрами как и выше. Сам ворд ориентацию страниц при открытии не меняет, это я проверял. Может кто-то сталкивался с таким?
 

garrick

Lotus Team
26.10.2009
1 352
151
BIT
201
По-моему в "сохранении" нет никаких параметров относительно ориентации страницы... Это всё где-то раньше, может быть зависит от дефолтных настроек Word или выбранного по умолчанию принтера. Ставьте принудительно нужную ориентацию перед сохранением документа.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
216
Код:
	If Not forceWord Then
ext={pdf}
On Error Goto DOC
CloseByFileName(fnam(0) & "." & ext)
worddoc.saveas2 fname & "." & ext, wdFormatPDF
Print {Saved as PDF}
worddoc.Application.Quit False
Set worddoc=Nothing
Goto CMN
End If
OLD:
forceWord=False
ext=tmpext
On Error Goto ErrH
worddoc.saveas(fname & "." & ext)
Goto CMN
DOC:
RaiseError
Resume OLD
CMN:
никто на повороты страниц еще не жаловался
МСявость рОзлива 2010
 
B

Bob84

При такой реализации при попытке открыть созданный пдф файл получил сообщение:
Adobe Reader не может открыть файл ... так как формат файла не поддерживается...
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
216
При такой реализации при попытке открыть созданный пдф файл получил сообщение:
выкинуть старый/глюкавый/дырявый адобаридер :)
попробуйте открывать через
 
B

Bob84

Контстанту неправильно указал, работает. Допишу только код для открытия и все. Спасибо
 

savl

Lotus Team
28.10.2011
2 599
311
BIT
192
Да, это как раз то что хотят услышать от меня администраторы заказчика)))
Вот вот...
Заменить AR на FR это конечно решение, но теперь на все компы в организации его ставить...
Особенно дизайнерам на Mac, если они есть... А спасибо они скажут за это, уж поверте.

Чтобы AR не ругался, по факту, MS рекомендует использовать именно ExportAsFixedFormat
И не просто так сделали они отдельную функцию, а не save as...
К тому же в записи макроса пишется именно ExportAsFixedFormat, со слов автора (я не проверял)
И работает это только после установки надстройки для офиса, которую MS и предлагают всегда ставить.

Что касается альбомной страницы, надо смотреть документ word.
Все сохраняется относительно документа, могут влиять настройки принтера, это не факт но возможно.
А в Word можно делать различные ориентации страниц для всего документа, особенно если там большая таблица.
Забавно она будет смотреться в портретной ориентации...
 
B

Bob84

При использовании метода saveas2 результат тот же.
Все сохраняется относительно документа, могут влиять настройки принтера, это не факт но возможно.
Какие именно настройки могут влиять? И при чем тут принетр, если я в файл сохраняю?
Сам Word перед сохранением точно с документов ничего не делает, это я проверял.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
216
Контстанту неправильно указал, работает. Допишу только код для открытия и все. Спасибо
че там писать-то :)
Код:
	fname=Replace(fname,{/},{\})'Windows specific
If ( rtitem.Type = RICHTEXT ) Then
Call rtitem.EmbedObject( EMBED_ATTACHMENT,{} , fname, fnam(0))
Call doc.Save(True, False)
If worddoc Is Nothing Then
Dim res, run As String
run={cmd.exe /c "start } &fname &{"}
Print {Shell calling...}, run
res=Shell(run)
End If
End If

Добавлено:
Вот вот...
Заменить AR на FR это конечно решение, но теперь на все компы в организации его ставить...
Особенно дизайнерам на Mac, если они есть... А спасибо они скажут за это, уж поверте.
не нужет никакой бадоба на Маке, уж поверьте (я лет 8 с маками) штатный вьюер как в линухах так и в маке, это тока в винде забота о юзерах такая оригинальная :)
а что там наворотил МС и что они рекомендуют - надо меньше "слушать" - ничего хорошего, для сторонних форматов, они не посоветуют ;)
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
216
Какие именно настройки могут влиять? И при чем тут принетр, если я в файл сохраняю?
Сам Word перед сохранением точно с документов ничего не делает, это я проверял.
уж опять же, поверьте, у МС все череж ж..пу настраивается, надысь прибежали с хухэлем (экселем) - грят - нецветной ПДФ получаецо...
но мы-то знаем как работает мосх прогерров МС, я сразу сказал - настройки печати ковырять надо, так и оказалось (настройки страницы и там...)
а в МС ресурсах послали в пэдж лэйаут, и разумеется - там ничего путного не получилось (все серое было - неактивные кнопки) :)

и так у них куда не ткнись (в их мануалах) - редкостно бестолковые
 
B

Bob84

До сохранения в пдф, был код который в колонтитулы документа добавлял две строки разделенные chr(13). Вот когда убрал chr(13), то проблема пропадает.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!