|
Сохранить в PDF из OpenOffice или LibreOffice с паролем | ☑ | ||
---|---|---|---|---|
0
Paradox
23.06.14
✎
13:31
|
Всем привет, кто нибудь сталкивался с задачей программного создания PDF-файла, защищенного паролем на открытие, из OpenOffice?
Сам файл создать получается, но не пойму, как же передать туда параметры, что бы при сохранении файл защищался паролем. Приведу код, может где косяк. Код нашел на мисте...но он что то пароль не получается установить. Спасибо! Процедура КнопкаВыполнитьНажатие(Кнопка) ТабДок = ЭлементыФормы.ПолеТабличногоДокумента1; Попытка ServiceManager = Новый COMОбъект("com.sun.star.ServiceManager"); Исключение Сообщить("Не смог!"); КонецПопытки; ВременныйФайл =ПолучитьИмяВременногоФайла(); ВременныйФайлXLS =ВременныйФайл + ".xls"; ВременныйФайлPDF =ВременныйФайл + ".pdf"; ТабДок.Записать(ВременныйФайлXLS, ТипФайлаТабличногоДокумента.XLS97); НастройкиОткрытия = Новый COMSafeArray("VT_VARIANT", 1); PropertyValue = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue"); PropertyValue.Name = "Hidden"; PropertyValue.Value = Истина; НастройкиОткрытия.SetValue(0, PropertyValue); ВременныйФайлXLS_какУРЛ = "file:///" + СтрЗаменить(ВременныйФайлXLS, "\", "/"); // приводим путь к файлу из виндового формата в опен офисный // Откроем файл в опене офисе Desktop = ServiceManager.createInstance("com.sun.star.frame.Desktop"); ОпенОфис = Desktop.LoadComponentFromURL(ВременныйФайлXLS_какУРЛ, "_blank", 0, НастройкиОткрытия); Стили = ОпенОфис.StyleFamilies.getByName("PageStyles"); Для поз = 0 по Стили.count - 1 Цикл МойСтиль = Стили.getByIndex(поз); МойСтиль.ScaleToPagesX = 1; // уместить на одной странице вширь //МойСтиль.PageScale = 50; // масштаб 50% КонецЦикла; НастройкиСохранения = Новый COMSafeArray("VT_VARIANT", 2); //Указали, что сохранили в PDF PropertyValue = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue"); PropertyValue.Name = "FilterName"; PropertyValue.Value = "calc_pdf_Export"; НастройкиСохранения.SetValue(0, PropertyValue); //Дополнительные параметры сохранения файла PDF PropertyValue1 = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue"); PropertyValue1.Name = "FilterData"; МассивПараметра = Новый COMSafeArray("VT_VARIANT", 41); ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 0, "UseLosslessCompression", 0, false); ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 1, "Quality", 0, 90); ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 2, "ReduceImageResolution", 0, false); ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 3, "MaxImageResolution", 0, 300); ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 4, "UseTaggedPDF", 0, false); ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 5, "SelectPdfVersion", 0, 0); ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 6, "ExportNotes", 0, false); ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 7, "ExportBookmarks", 0, true); ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 8, "OpenBookmarkLevels", 0, -1); ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 9, "UseTransitionEffects", 0, true); ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 10, "IsSkipEmptyPages", 0, true); ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 11, "IsAddStream", 0, false); ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 12, "FormsType", 0, 0); ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 13, "ExportFormFields", 0, true); ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 14, "HideViewerToolbar", 0, false); ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 15, "HideViewerMenubar", 0, false); ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 16, "HideViewerWindowControls", 0, false); ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 17, "ResizeWindowToInitialPage", 0, false); ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 18, "CenterWindow", 0, false); ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 19, "OpenInFullScreenMode", 0, false); ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 20, "DisplayPDFDocumentTitle", 0, true); ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 21, "InitialView", 0, 0); ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 22, "Magnification", 0, 0); ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 23, "Zoom", 0, 100); ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 24, "PageLayout", 0, 0); ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 25, "FirstPageOnLeft", 0, false); ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 26, "InitialPage", 0, 1); ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 27, "Printing", 0, 2); ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 28, "Changes", 0, 0); ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 29, "EnableCopyingOfContent", 0, false); ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 30, "EnableTextAccessForAccessibilityTools", 0, false); ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 31, "ExportLinksRelativeFsys", 0, false); ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 32, "PDFViewSelection", 0, 0); ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 33, "ConvertOOoTargetToPDFTarget", 0, false); ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 34, "ExportBookmarksToPDFDestination", 0, false); ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 35, "_OkButtonString", 0, ""); ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 36, "EncryptFile", 0, true); ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 37, "DocumentOpenPassword", 0, "123456789"); ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 38, "RestrictPermissions", 0, true); ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 39, "PermissionPassword", 0, "123456789"); ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, 40, "", 0); PropertyValue1.Value = МассивПараметра; НастройкиСохранения.SetValue(1, PropertyValue1); ВременныйФайлPDF_какУРЛ = "file:///" + СтрЗаменить(ВременныйФайлPDF, "\", "/"); // приводим путь к файлу из виндового формата в опен офисный ОпенОфис.storeToURL(ВременныйФайлPDF_какУРЛ, НастройкиСохранения); // сохранили PDF файл ОпенОфис.close(-1); ОпенОфис = Неопределено; ЗапуститьПриложение(ВременныйФайлPDF); КонецПроцедуры Процедура ДобавитьВCOMSafeArrayCOMSafeArray(МассивПараметра, Индекс, Первый, Второй, Третий = Неопределено); Параметр = Новый COMSafeArray("VT_VARIANT", 4); Параметр.SetValue(0, Первый); Параметр.SetValue(1, Второй); Если Третий <> Неопределено Тогда Параметр.SetValue(2, Третий); КонецЕсли; Параметр.SetValue(3, 0); МассивПараметра.SetValue(Индекс, Параметр); КонецПроцедуры |
|||
1
Paradox
23.06.14
✎
13:58
|
up =)
|
|||
2
DS
23.06.14
✎
14:09
|
В "НастройкиСохранения" надо добавить соответствующие параметры. См. https://wiki.openoffice.org/wiki/API/Tutorials/PDF_export
|
|||
3
Paradox
23.06.14
✎
14:54
|
(2) так вроде бы я передаю эти параметры в НастрокиСохранения
|
|||
4
Paradox
23.06.14
✎
14:54
|
EncryptFile, DocumentOpenPassword...
|
|||
5
Paradox
23.06.14
✎
14:55
|
вот именно с созданием ПДФ проблем вообще не возникло...все ясно и прозрачно, но вот с установкой других свойств, как то туманно
|
|||
6
Paradox
24.06.14
✎
08:13
|
up
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |