/* * (c) Copyright Ascensio System SIA 2010-2024 * * This program is a free software product. You can redistribute it and/or * modify it under the terms of the GNU Affero General Public License (AGPL) * version 3 as published by the Free Software Foundation. In accordance with * Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect * that Ascensio System SIA expressly excludes the warranty of non-infringement * of any third-party rights. * * This program is distributed WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For * details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html * * You can contact Ascensio System SIA at 20A-6 Ernesta Birznieka-Upish * street, Riga, Latvia, EU, LV-1050. * * The interactive user interfaces in modified source and object code versions * of the Program must display Appropriate Legal Notices, as required under * Section 5 of the GNU AGPL version 3. * * Pursuant to Section 7(b) of the License you must retain the original Product * logo when distributing the program. Pursuant to Section 7(e) we decline to * grant you any rights under trademark law for use of our trademarks. * * All the Product's GUI elements, including illustrations and icon sets, as * well as technical writing content are licensed under the terms of the * Creative Commons Attribution-ShareAlike 4.0 International. See the License * terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode * */ "use strict"; (function(window, document) { // TODO: Пока тут идет наследование от класса asc_docs_api для документов // По логике нужно от этого уйти и сделать наследование от базового класса и добавить тип AscCommon.c_oEditorId.PDF // TODO: Возможно стоит перенести инициализацию initDocumentRenderer и тогда не придется в каждом методе проверять // наличие this.DocumentRenderer /** * @param config * @constructor * @extends {AscCommon.DocumentEditorApi} */ function PDFEditorApi(config) { AscCommon.DocumentEditorApi.call(this, config, AscCommon.c_oEditorId.Word); this.DocumentRenderer = null; this.DocumentType = 1; this.compositeInput = null; this.isPdfViewer = false; // Было решено, что флаг isViewMode присылается всегда false, т.к. пдф всегда // можно редактировать (во вьювере заполнять поля, например) // Данный флаг различает в каком режиме загружен документ (edit/view) } PDFEditorApi.prototype = Object.create(AscCommon.DocumentEditorApi.prototype); PDFEditorApi.prototype.constructor = PDFEditorApi; PDFEditorApi.prototype.openDocument = function(file) { let perfStart = performance.now(); this.isOnlyReaderMode = false; window["AscViewer"]["baseUrl"] = (typeof document !== 'undefined' && document.currentScript) ? "" : "./../../../../sdkjs/pdf/src/engine/"; window["AscViewer"]["baseEngineUrl"] = "./../../../../sdkjs/pdf/src/engine/"; // TODO: Возможно стоит перенести инициализацию в this.initDocumentRenderer(); this.DocumentRenderer.open(file.data); AscCommon.InitBrowserInputContext(this, "id_target_cursor", "id_viewer"); if (AscCommon.g_inputContext) AscCommon.g_inputContext.onResize(this.HtmlElementName); this.WordControl.initEventsMobile(); this.DocumentRenderer.touchManager = this.WordControl.MobileTouchManager; if (undefined !== this.startMobileOffset) { this.WordControl.setOffsetTop(this.startMobileOffset.offset, this.startMobileOffset.offsetScrollTop); delete this.startMobileOffset; } // destroy unused memory let isEditForms = true; if (isEditForms == false) { AscCommon.pptx_content_writer.BinaryFileWriter = null; AscCommon.History.BinaryWriter = null; } this.WordControl.OnResize(true); this.FontLoader.LoadDocumentFonts(); let perfEnd = performance.now(); AscCommon.sendClientLog("debug", AscCommon.getClientInfoString("onOpenDocument", perfEnd - perfStart), this); }; PDFEditorApi.prototype.isPdfEditor = function() { return true; }; PDFEditorApi.prototype.getLogicDocument = function() { return this.getPDFDoc(); }; PDFEditorApi.prototype.getDrawingDocument = function () { return this.WordControl.m_oDrawingDocument; }; PDFEditorApi.prototype.getDocumentRenderer = function() { return this.DocumentRenderer; }; PDFEditorApi.prototype.getPDFDoc = function() { if (!this.DocumentRenderer) return null; return this.DocumentRenderer.getPDFDoc(); }; PDFEditorApi.prototype.IsNeedDefaultFonts = function() { return false; }; PDFEditorApi.prototype.AddTextArt = function(nStyle) { let oDoc = this.getPDFDoc(); oDoc.DoAction(function() { oDoc.AddTextArt(nStyle, this.getDocumentRenderer().currentPage); }, AscDFH.historydescription_Document_AddTextArt, this); }; PDFEditorApi.prototype["asc_setViewerThumbnailsZoom"] = function(value) { if (this.haveThumbnails()) this.DocumentRenderer.Thumbnails.setZoom(value); }; PDFEditorApi.prototype["asc_setViewerThumbnailsUsePageRect"] = function(value) { if (this.haveThumbnails()) this.DocumentRenderer.Thumbnails.setIsDrawCurrentRect(value); }; PDFEditorApi.prototype["asc_viewerThumbnailsResize"] = function() { if (this.haveThumbnails()) this.WordControl.m_oDrawingDocument.m_oDocumentRenderer.Thumbnails.resize(); }; PDFEditorApi.prototype["asc_viewerNavigateTo"] = function(value) { if (!this.DocumentRenderer) return; this.DocumentRenderer.navigate(value); }; PDFEditorApi.prototype["asc_setViewerTargetType"] = function(type) { if (!this.DocumentRenderer) return; this.DocumentRenderer.setTargetType(type); }; PDFEditorApi.prototype["asc_getPageSize"] = function(pageIndex) { if (!this.DocumentRenderer) return null; let page = this.DocumentRenderer.file.pages[pageIndex]; if (!page) return null; return { "W": 25.4 * page.W / page.Dpi, "H": 25.4 * page.H / page.Dpi } }; PDFEditorApi.prototype["asc_nativeOpenFile"] = function(data, version) { this.SpellCheckUrl = ''; this.User = new AscCommon.asc_CUser(); this.User.setId("TM"); this.User.setUserName("native"); this.WordControl.m_bIsRuler = false; this.WordControl.Init(); this.initDocumentRenderer(); this.DocumentType = 2; AscCommon.g_oIdCounter.Set_Load(true); if (undefined !== version) AscCommon.CurFileVersion = version; let viewer = this.DocumentRenderer; viewer.file = window["AscViewer"].createFile(data); if (viewer.file) { viewer.SearchResults = viewer.file.SearchResults; viewer.file.viewer = viewer; } viewer.afterOpen(); AscCommon.g_oIdCounter.Set_Load(false); this.LoadedObject = 1; if (window["NATIVE_EDITOR_ENJINE"] === true && undefined != window["native"]) { AscCommon.CDocsCoApi.prototype.askSaveChanges = function(callback) { callback({"saveLock" : false}); }; AscCommon.CDocsCoApi.prototype.saveChanges = function(arrayChanges, deleteIndex, excelAdditionalInfo) { if (window["native"]["SaveChanges"]) window["native"]["SaveChanges"](arrayChanges.join("\",\""), deleteIndex, arrayChanges.length); }; } }; PDFEditorApi.prototype["asc_nativeCalculateFile"] = function() { let pdfDoc = this.getPDFDoc(); if (!pdfDoc) return; pdfDoc.RecalculateAll(); }; PDFEditorApi.prototype["asc_nativePrintPagesCount"] = function() { // the result is unimportant return 0; }; PDFEditorApi.prototype["asc_nativeGetPDF"] = function(options) { if (this.DocumentRenderer) { let result = this.DocumentRenderer.Save(); if (!result) return null; window["native"]["Save_End"]("", result.length); return result; } return null; }; PDFEditorApi.prototype.Undo = function() { var oDoc = this.getPDFDoc(); if (!oDoc) return; oDoc.DoUndo(); }; PDFEditorApi.prototype.Redo = function() { var oDoc = this.getPDFDoc(); if (!oDoc) return; oDoc.DoRedo(); }; PDFEditorApi.prototype.asc_CheckCopy = function(_clipboard /* CClipboardData */, _formats) { if (!this.DocumentRenderer) return; let oDoc = this.getPDFDoc(); let oThumbnails = oDoc.Viewer.thumbnails; let oActiveForm = oDoc.activeForm; let oActiveAnnot = oDoc.mouseDownAnnot; let oActiveDrawing = oDoc.activeDrawing; function processClipboardData(oContent, _formats, _clipboard) { let sText = oContent ? oContent.GetSelectedText(false) : ""; let _data, sBase64; // Text if (AscCommon.c_oAscClipboardDataFormat.Text & _formats) { _clipboard.pushData(AscCommon.c_oAscClipboardDataFormat.Text, sText); } // HTML if (AscCommon.c_oAscClipboardDataFormat.Html & _formats) { let oCopyProcessor = new AscCommon.CopyProcessor(this); sBase64 = oCopyProcessor.Start(); _data = oCopyProcessor.getInnerHtml(); _clipboard.pushData(AscCommon.c_oAscClipboardDataFormat.Html, _data); } // INTERNAL if (AscCommon.c_oAscClipboardDataFormat.Internal & _formats) { if (!sBase64) { let oCopyProcessor = new AscCommon.CopyProcessor(this); sBase64 = oCopyProcessor.Start(); } _data = sBase64; _clipboard.pushData(AscCommon.c_oAscClipboardDataFormat.Internal, _data); } } if (oThumbnails && oThumbnails.isInFocus) { if (!oDoc.Viewer.file || oDoc.Viewer.file.type !== 0) return; let _data, sBase64; // HTML if (AscCommon.c_oAscClipboardDataFormat.Html & _formats) { let oCopyProcessor = new AscCommon.CopyProcessor(this); sBase64 = oCopyProcessor.Start(); _data = oCopyProcessor.getInnerHtml(); _clipboard.pushData(AscCommon.c_oAscClipboardDataFormat.Html, _data) } //INTERNAL if (AscCommon.c_oAscClipboardDataFormat.Internal & _formats) { if (sBase64 === null) { let oCopyProcessor = new AscCommon.CopyProcessor(this); sBase64 = oCopyProcessor.Start(); } _data = sBase64; _clipboard.pushData(AscCommon.c_oAscClipboardDataFormat.Internal, _data) } return; } if (oActiveForm) { if (oActiveForm.content && oActiveForm.content.IsSelectionUse()) { let sText = oActiveForm.content.GetSelectedText(false, {ParaSeparator: ""}); if (!sText) return; if (AscCommon.c_oAscClipboardDataFormat.Text & _formats) _clipboard.pushData(AscCommon.c_oAscClipboardDataFormat.Text, sText); if (AscCommon.c_oAscClipboardDataFormat.Html & _formats) _clipboard.pushData(AscCommon.c_oAscClipboardDataFormat.Html, "

" + sText + "

"); } else { processClipboardData.call(this, null, _formats, _clipboard); } } else if (oActiveAnnot) { if (oActiveAnnot.IsFreeText() && oActiveAnnot.IsInTextBox()) { let sText = oActiveAnnot.GetDocContent().GetSelectedText(false, { NewLine: true }); if (!sText) return; if (AscCommon.c_oAscClipboardDataFormat.Text & _formats) _clipboard.pushData(AscCommon.c_oAscClipboardDataFormat.Text, sText); if (AscCommon.c_oAscClipboardDataFormat.Html & _formats) _clipboard.pushData(AscCommon.c_oAscClipboardDataFormat.Html, "

" + sText + "

"); } else if (!oActiveAnnot.IsTextMarkup()) { let oContent = oActiveAnnot.GetDocContent(); processClipboardData.call(this, oContent, _formats, _clipboard); } } else if (oActiveDrawing) { let oContent = oActiveDrawing.GetDocContent(); processClipboardData.call(this, oContent, _formats, _clipboard); } else { let _text_object = {Text: ""}; let _html_data = this.DocumentRenderer.Copy(_text_object); if (AscCommon.c_oAscClipboardDataFormat.Text & _formats) _clipboard.pushData(AscCommon.c_oAscClipboardDataFormat.Text, _text_object.Text); if (AscCommon.c_oAscClipboardDataFormat.Html & _formats) _clipboard.pushData(AscCommon.c_oAscClipboardDataFormat.Html, _html_data); } }; PDFEditorApi.prototype.asc_SelectionCut = function() { if (!this.DocumentRenderer) return; let oDoc = this.DocumentRenderer.getPDFDoc(); let oThumbnails = oDoc.Viewer.thumbnails; if (oDoc.CanCopyCut().cut) { if (oThumbnails && oThumbnails.isInFocus && false == this.isRestrictionView()) { let aPages = oThumbnails.getSelectedPages().slice(); oDoc.DoAction(function() { oDoc.RemovePages(aPages); }, AscDFH.historydescription_Pdf_RemovePage, this, aPages); } else { oDoc.DoAction(function() { oDoc.Remove(1); }, AscDFH.historydescription_Document_BackSpaceButton); } } }; PDFEditorApi.prototype.onUpdateRestrictions = function() { let oDoc = this.getPDFDoc(); if (!oDoc) { return; } oDoc.onUpdateRestrictions(); }; PDFEditorApi.prototype.sync_CanUndoCallback = function(canUndo) { this.sendEvent("asc_onCanUndo", canUndo); }; PDFEditorApi.prototype.sync_CanRedoCallback = function(canRedo) { if (true === AscCommon.CollaborativeEditing.Is_Fast() && true !== AscCommon.CollaborativeEditing.Is_SingleUser()) { canRedo = false; } this.sendEvent("asc_onCanRedo", canRedo); }; PDFEditorApi.prototype.asc_getCanUndo = function() { let oDoc = this.getPDFDoc(); if (!oDoc) { return false; } let bCanUndo = oDoc.History.Can_Undo() || oDoc.LocalHistory.Can_Undo(); if (true !== bCanUndo && oDoc.CollaborativeEditing && true === oDoc.CollaborativeEditing.Is_Fast() && true !== oDoc.CollaborativeEditing.Is_SingleUser()) bCanUndo = oDoc.CollaborativeEditing.CanUndo(); return bCanUndo; }; PDFEditorApi.prototype.asc_PasteData = function(_format, data1, data2, text_data, useCurrentPoint, callback, checkLocks) { if (!this.DocumentRenderer) return; if (!this.DocumentRenderer.canInteract()) { let _t = this; let args = arguments; this.DocumentRenderer.paint(null, function() { _t.asc_PasteData.apply(_t, args); }); return; } let oDoc = this.DocumentRenderer.getPDFDoc(); let data = typeof(text_data) == "string" ? text_data : data1; oDoc.StartAction(AscDFH.historydescription_Document_PasteHotKey); this.needPasteText = false; // если не вставили бинарник, то вставляем текст // пока что копирование бинарником только внутри drawings или самих drawings if ([AscCommon.c_oAscClipboardDataFormat.Internal, AscCommon.c_oAscClipboardDataFormat.HtmlElement, AscCommon.c_oAscClipboardDataFormat.Text].includes(_format)) { window['AscCommon'].g_specialPasteHelper.Paste_Process_Start(arguments[5]); AscCommon.Editor_Paste_Exec(this, _format, data1, data2, text_data, undefined, callback); } else { this.needPasteText = true; } this.pastePageBefore = undefined; if (!this.needPasteText || typeof(data) != "string") return; AscFonts.FontPickerByCharacter.checkText(data, this, processPaste); function processPaste() { let aChars = []; for (let i = 0; i < data.length; i++) aChars.push(data[i].charCodeAt(0)); this.asc_enterText(aChars, true); oDoc.FinalizeAction(true); } }; PDFEditorApi.prototype.asc_setAdvancedOptions = function(idOption, option) { if (this.advancedOptionsAction !== AscCommon.c_oAscAdvancedOptionsAction.Open || AscCommon.EncryptionWorker.asc_setAdvancedOptions(this, idOption, option) || !this.DocumentRenderer) return; this.DocumentRenderer.open(null, option.asc_getPassword()); }; PDFEditorApi.prototype.getGraphicController = function () { let oDoc = this.getPDFDoc(); return oDoc ? oDoc.GetController() : null; }; PDFEditorApi.prototype.can_CopyCut = function() { if (!this.DocumentRenderer) return false; let oDoc = this.DocumentRenderer.getPDFDoc(); if (!oDoc) return false; return oDoc.CanCopyCut().copy; }; PDFEditorApi.prototype.startGetDocInfo = function() { let renderer = this.DocumentRenderer; if (!renderer) return; this.sync_GetDocInfoStartCallback(); this.DocumentRenderer.startStatistics(); this.DocumentRenderer.onUpdateStatistics(0, 0, 0, 0); if (this.DocumentRenderer.isFullText) this.sync_GetDocInfoEndCallback(); }; PDFEditorApi.prototype.stopGetDocInfo = function() { this.sync_GetDocInfoStopCallback(); this.DocumentRenderer.endStatistics(); }; PDFEditorApi.prototype.asc_searchEnabled = function(isEnabled) { if (!this.DocumentRenderer) return; this.DocumentRenderer.SearchResults.IsSearch = isEnabled; this.WordControl.OnUpdateOverlay(); }; PDFEditorApi.prototype.asc_findText = function(props, isNext) { let oViewer = this.getDocumentRenderer(); let oDoc = this.getPDFDoc(); let oSearchEngine = oDoc.SearchEngine; if (!oViewer) return 0; oViewer.IsSearch = true; let isAsync = (true === oViewer.findText(props, isNext)); let result = oSearchEngine.Count; return result; }; PDFEditorApi.prototype.asc_endFindText = function() { if (!this.DocumentRenderer) return; this.DocumentRenderer.IsSearch = false; this.DocumentRenderer.file.onUpdateOverlay(); }; PDFEditorApi.prototype.asc_isSelectSearchingResults = function() { if (!this.DocumentRenderer) return false; return this.DocumentRenderer.SearchResults.Show; }; PDFEditorApi.prototype.asc_StartTextAroundSearch = function() { if (!this.DocumentRenderer) return false; let oDoc = this.getPDFDoc(); oDoc.SearchEngine.StartTextAround(); }; PDFEditorApi.prototype.asc_SelectSearchElement = function(id) { if (!this.DocumentRenderer) return false; this.getPDFDoc().SelectSearchElement(id); this.DocumentRenderer.onUpdateOverlay(); }; PDFEditorApi.prototype.asc_RedactSearchElement = function(id) { if (!this.DocumentRenderer) return false; this.getPDFDoc().MarkSearchElementForRedact(id); }; PDFEditorApi.prototype.asc_RedactAllSearchElements = function() { if (!this.DocumentRenderer) return false; this.getPDFDoc().MarkAllSearchElementsForRedact(); }; PDFEditorApi.prototype.asc_GetRedactSearchInfo = function(id) { if (!this.DocumentRenderer) return false; return this.getPDFDoc().GetRedactSearchInfo(id); }; PDFEditorApi.prototype.ContentToHTML = function() { if (!this.DocumentRenderer) return ""; this.DocumentReaderMode = new AscCommon.CDocumentReaderMode(); this.DocumentRenderer.selectAll(); var text_data = { data : "", pushData : function(format, value) { this.data = value; } }; this.asc_CheckCopy(text_data, 2); this.DocumentRenderer.removeSelection(); return text_data.data; }; PDFEditorApi.prototype.goToPage = function(pageNum) { if (!this.DocumentRenderer) return; return this.DocumentRenderer.navigateToPage(pageNum, undefined, this.DocumentRenderer.scrollMaxX / 2); }; PDFEditorApi.prototype.getCountPages = function() { return this.DocumentRenderer ? this.DocumentRenderer.getPagesCount() : 0; }; PDFEditorApi.prototype.getCurrentPage = function() { return this.DocumentRenderer ? this.DocumentRenderer.currentPage : 0; }; PDFEditorApi.prototype.getSelectedPages = function() { const oThumbnails = this.DocumentRenderer.thumbnails; if (oThumbnails) { return oThumbnails.getSelectedPages().slice(); } else { return [this.getCurrentPage()]; } }; PDFEditorApi.prototype.asc_getPdfProps = function() { return this.DocumentRenderer ? this.DocumentRenderer.getDocumentInfo() : null; }; PDFEditorApi.prototype.asc_enterText = function(codePoints, isFromPaste) { if (!this.DocumentRenderer) return false; let viewer = this.DocumentRenderer; let doc = viewer.getPDFDoc(); let drDoc = doc.GetDrawingDocument(); let drController = doc.GetController(); let textController = doc.getTextController(); if (!textController) return false; if (textController.IsDrawing() && Asc.editor.isRestrictionView()) { return false; } if (doc.IsSelectionLocked(AscCommon.changestype_Drawing_Props)) { return false; } if (true != isFromPaste) { doc.StartAction(AscDFH.historydescription_Document_AddLetter); } let docContent = textController.GetDocContent(); let result = textController.EnterText(codePoints); if (null == drController.getTargetTextObject() && false == textController.IsForm()) { if (textController.IsAnnot() && textController.IsFreeText()) { drController.selection.groupSelection = textController; textController.selection.textSelection = textController.GetTextBoxShape() } else { drController.selection.textSelection = textController; } } drDoc.TargetStart(true); if (docContent.IsSelectionUse() && !docContent.IsSelectionEmpty()) drDoc.TargetEnd(); if (true !== isFromPaste) { doc.FinalizeAction(); } return result; }; PDFEditorApi.prototype.asc_createSmartArt = function (nSmartArtType, oPlaceholderObject) { let oViewer = this.getDocumentRenderer(); let oDoc = this.getPDFDoc(); AscCommon.g_oBinarySmartArts.checkLoadDrawing().then(function() { return AscCommon.g_oBinarySmartArts.checkLoadData(nSmartArtType); }).then(function() { let oSmartArt; oDoc.DoAction(function() { oSmartArt = oDoc.AddSmartArt(nSmartArtType, oPlaceholderObject, oViewer.currentPage); }, AscDFH.historydescription_Document_AddSmartArt); return oSmartArt; }); }; PDFEditorApi.prototype.asc_undoAllChanges = function() {}; PDFEditorApi.prototype.asc_addChartDrawingObject = function(nType, Placeholder, bOpenChartEditor) { this.asc_onCloseFrameEditor(); let oDoc = this.getPDFDoc(); let oViewer = this.getDocumentRenderer(); oDoc.DoAction(function() { AscFonts.IsCheckSymbols = true; oDoc.AddChart(nType, true, Placeholder, oViewer.currentPage, bOpenChartEditor); AscFonts.IsCheckSymbols = false; oViewer.paint(null, function() { oDoc.OpenChartEditor(); }); }, AscDFH.historydescription_Document_AddChart); }; PDFEditorApi.prototype.ChartApply = function(obj) { let oDoc = this.getPDFDoc(); this.asc_onCloseFrameEditor(); if (obj.ChartProperties && obj.ChartProperties.type === Asc.c_oAscChartTypeSettings.stock && oDoc.GetCurrentSlide()) { if (!AscFormat.CheckStockChart(oDoc.GetCurrentSlide().graphicObjects, this)) { return; } } oDoc.ChartApply(obj); }; PDFEditorApi.prototype.asc_getChartSettings = function (bNoLock) { let oDoc = this.getPDFDoc(); if (oDoc) { let oController = oDoc.GetController(); const oChartSettings = oController.getChartSettings(); if (bNoLock) { return oChartSettings; } if (oChartSettings && !oDoc.IsSelectionLocked(AscCommon.changestype_Drawing_Props)) { this.asc_onOpenFrameEditor(); return oChartSettings; } } }; PDFEditorApi.prototype.asc_correctEnterText = function(oldCodePoints, newCodePoints) { if (!this.DocumentRenderer) return false; let viewer = this.DocumentRenderer; let doc = viewer.getPDFDoc(); oldCodePoints = AscWord.CTextFormFormat.prototype.GetBuffer(oldCodePoints); newCodePoints = AscWord.CTextFormFormat.prototype.GetBuffer(newCodePoints); return doc.DoAction(function() { let textController = doc.getTextController(); if (!textController) { return false; } let oContent = textController.GetDocContent(); let oldText = ""; for (let index = 0, count = oldCodePoints.length; index < count; ++index) { oldText += String.fromCodePoint(oldCodePoints[index]); } let state = oContent.GetSelectionState(); let paragraph= oContent.GetCurrentParagraph(); let startPos = paragraph.getCurrentPos(); let endPos = startPos; let paraSearchPos = new AscWord.CParagraphSearchPos(); let maxShifts = oldCodePoints.length; let selectedText; oContent.StartSelectionFromCurPos(); while (maxShifts >= 0) { paraSearchPos.Reset(); paragraph.Get_LeftPos(paraSearchPos, endPos); if (!paraSearchPos.IsFound()) { break; } endPos = paraSearchPos.GetPos().Copy(); paragraph.SetSelectionContentPos(startPos, endPos, false); selectedText = paragraph.GetSelectedText(true); if (!selectedText || selectedText === oldText) { break; } maxShifts--; } if (selectedText !== oldText || doc.IsSelectionLocked(AscCommon.changestype_Paragraph_AddText, null, true, false)) { oContent.SetSelectionState(state); return false; } return textController.EnterText(newCodePoints, true); }, AscDFH.historydescription_Document_AddLetter, this); }; PDFEditorApi.prototype.asc_EditPage = function() { let oViewer = this.getDocumentRenderer(); let oDoc = this.getPDFDoc(); oDoc.EditPage(oViewer.currentPage); }; PDFEditorApi.prototype.asc_AddPage = function(nPos) { let oViewer = this.getDocumentRenderer(); let oFile = oViewer.file; let oDoc = this.getPDFDoc(); oDoc.DoAction(function() { let oPageToClone = oFile.pages[nPos - 1] || oFile.pages[nPos]; let oPage = { fonts: [], Rotate: 0, Dpi: oPageToClone.Dpi, W: oPageToClone.W, H: oPageToClone.H } oDoc.AddPage(nPos, oPage); oDoc.FinalizeAction(); oViewer.navigateToPage(nPos); }, AscDFH.historydescription_Pdf_AddPage, this); }; PDFEditorApi.prototype.asc_RemovePage = function(aPages) { let oViewer = this.getDocumentRenderer(); let oDoc = this.getPDFDoc(); let oThumbnails = oViewer.thumbnails; aPages = aPages != undefined ? aPages : oThumbnails.getSelectedPages().slice(); oDoc.DoAction(function() { oDoc.RemovePages(aPages); }, AscDFH.historydescription_Pdf_RemovePage, this, aPages); }; PDFEditorApi.prototype.asc_CanRemovePages = function(aPages) { let oViewer = this.getDocumentRenderer(); let oDoc = this.getPDFDoc(); let oThumbnails = oViewer.thumbnails; if (undefined == aPages) { if (oThumbnails) { aPages = oThumbnails.getSelectedPages().slice(); } else { aPages = [oDoc.GetCurPage()]; } } let nPagesCount = oDoc.GetPagesCount(); let canDelete = false; // check if last pages without lock for (let i = 0; i < nPagesCount; i++) { let oPageInfo = oDoc.GetPageInfo(i); if (!aPages.includes(oPageInfo.GetIndex()) && !oPageInfo.IsDeleteLock()) { canDelete = true; break; } } // check if pages with lock for (let i = 0; i < aPages.length; i++) { let oPageInfo = oDoc.GetPageInfo(aPages[i]); if (oPageInfo.IsDeleteLock()) { canDelete = false; break; } } return canDelete; }; PDFEditorApi.prototype.asc_CanRotatePages = function(aPages) { let oViewer = this.getDocumentRenderer(); let oDoc = this.getPDFDoc(); let oThumbnails = oViewer.thumbnails; if (undefined == aPages) { if (oThumbnails) { aPages = oThumbnails.getSelectedPages().slice(); } else { aPages = [oDoc.GetCurPage()]; } } let canDelete = true; // check if pages with lock for (let i = 0; i < aPages.length; i++) { let oPageInfo = oDoc.GetPageInfo(aPages[i]); if (oPageInfo.IsRotateLock()) { canDelete = false; break; } } return canDelete; }; PDFEditorApi.prototype.asc_CanPastePage = function() { const oDoc = this.getPDFDoc(); return !oDoc.IsMergeLock(); }; PDFEditorApi.prototype.asc_GetSelectedText = function(bClearText, select_Pr) { if (!this.DocumentRenderer) return ""; bClearText = (bClearText === true); let oDoc = this.getPDFDoc(); let oTxObject = oDoc.getTextController(); let textObj = {Text : ""}; if (oTxObject) { let oContent = oTxObject.GetDocContent(); textObj.Text = oContent ? (oContent.GetSelectedText(bClearText, select_Pr) || "") : ""; } else { this.DocumentRenderer.Copy(textObj); } if (!textObj.Text || textObj.Text.trim() === "") return ""; return textObj.Text; }; PDFEditorApi.prototype.asc_AddMath2 = function(Type) { let oDoc = this.getPDFDoc(); let oTextPr = oDoc.GetDirectTextPr(); let oMathElement = new AscCommonWord.MathMenu(Type, oTextPr ? oTextPr.Copy() : null); oDoc.AddToParagraph(oMathElement, false); }; PDFEditorApi.prototype.asc_ConvertMathView = function(isToLinear, isAll) { let oDoc = this.getPDFDoc(); oDoc.ConvertMathView(isToLinear, isAll); }; PDFEditorApi.prototype.getImageSelectedObject = function(imgProp) { let type = imgProp.chartProps ? Asc.c_oAscTypeSelectElement.Chart : Asc.c_oAscTypeSelectElement.Image; let objects; if (type === Asc.c_oAscTypeSelectElement.Chart) { objects = new Asc.CAscChartProp(imgProp); } else { objects = new Asc.asc_CImgProperty(imgProp); } return new AscCommon.asc_CSelectedObject(type, objects); }; PDFEditorApi.prototype.sync_ImgPropCallback = function(imgProp) { this.SelectedObjectsStack[this.SelectedObjectsStack.length] = this.getImageSelectedObject(imgProp); }; PDFEditorApi.prototype.sync_shapePropCallback = function(pr) { let oDoc = this.getPDFDoc(); let oDrDoc = oDoc.GetDrawingDocument(); let oController = oDoc.GetController(); var obj = AscFormat.CreateAscShapePropFromProp(pr); if (pr.fill != null && pr.fill.fill != null && pr.fill.fill.type == Asc.c_oAscFill.FILL_TYPE_BLIP) { oDrDoc.DrawImageTextureFillShape(pr.fill.fill.RasterImageId); } obj.asc_setCanEditText(oController.canEditText()); var oTextArtProperties = pr.textArtProperties; if (oTextArtProperties && oTextArtProperties.Fill && oTextArtProperties.Fill.fill && oTextArtProperties.Fill.fill.type == Asc.c_oAscFill.FILL_TYPE_BLIP) { oDrDoc.DrawImageTextureFillTextArt(oTextArtProperties.Fill.fill.RasterImageId); } else { oDrDoc.DrawImageTextureFillTextArt(null); } var _len = this.SelectedObjectsStack.length; if (_len > 0) { if (this.SelectedObjectsStack[_len - 1].Type == Asc.c_oAscTypeSelectElement.Shape) { this.SelectedObjectsStack[_len - 1].Value = obj; return; } } this.SelectedObjectsStack[this.SelectedObjectsStack.length] = new AscCommon.asc_CSelectedObject(Asc.c_oAscTypeSelectElement.Shape, obj); }; PDFEditorApi.prototype.sync_annotPropCallback = function(aAnnots) { let aAnnotsProps = aAnnots.map(function(annot) { return AscPDF.CreateAscAnnotPropFromObj(annot); }); for (let i = 1; i < aAnnotsProps.length; i++) { aAnnotsProps[0].compare(aAnnotsProps[i]); } var _len = this.SelectedObjectsStack.length; if (_len > 0) { if (this.SelectedObjectsStack[_len - 1].Type == Asc.c_oAscTypeSelectElement.Annot) { this.SelectedObjectsStack[_len - 1].Value = aAnnotsProps[0]; return; } } this.SelectedObjectsStack[this.SelectedObjectsStack.length] = new AscCommon.asc_CSelectedObject(Asc.c_oAscTypeSelectElement.Annot, aAnnotsProps[0]); }; PDFEditorApi.prototype.sync_fieldPropCallback = function(aFields) { if (aFields.length == 0) { return; } let aFieldsProps = aFields.map(function(field) { return AscPDF.CreateAscFieldPropFromObj(field); }); for (let i = 1; i < aFieldsProps.length; i++) { aFieldsProps[0].compare(aFieldsProps[i]); } let _len = this.SelectedObjectsStack.length; if (_len > 0) { if (this.SelectedObjectsStack[_len - 1].Type == Asc.c_oAscTypeSelectElement.Field) { this.SelectedObjectsStack[_len - 1].Value = aFieldsProps[0]; return; } } this.SelectedObjectsStack[this.SelectedObjectsStack.length] = new AscCommon.asc_CSelectedObject(Asc.c_oAscTypeSelectElement.Field, aFieldsProps[0]); }; PDFEditorApi.prototype.sync_pagePropCallback = function(pageInfo) { let obj = AscPDF.CreateAscPagePropFromObj(pageInfo); let _len = this.SelectedObjectsStack.length; if (_len > 0) { if (this.SelectedObjectsStack[_len - 1].Type == Asc.c_oAscTypeSelectElement.PdfPage) { this.SelectedObjectsStack[_len - 1].Value = obj; return; } } this.SelectedObjectsStack[this.SelectedObjectsStack.length] = new AscCommon.asc_CSelectedObject(Asc.c_oAscTypeSelectElement.PdfPage, obj); }; PDFEditorApi.prototype.canUnGroup = function() { return false; }; PDFEditorApi.prototype.canGroup = function() { return false; }; PDFEditorApi.prototype.shapes_bringToFront = function() { this.getPDFDoc().BringToFront(); }; PDFEditorApi.prototype.shapes_bringForward = function() { this.getPDFDoc().BringForward(); }; PDFEditorApi.prototype.shapes_bringToBack = function() { this.getPDFDoc().SendToBack(); }; PDFEditorApi.prototype.shapes_bringBackward = function() { this.getPDFDoc().BringBackward(); }; PDFEditorApi.prototype.AddImageUrlAction = function(url, imgProp, obj) { var _image = this.ImageLoader.LoadImage(url, 1); if (null != _image) { this.AddImageUrlActionCallback(_image, obj); } else { this.sync_StartAction(Asc.c_oAscAsyncActionType.BlockInteraction, Asc.c_oAscAsyncAction.LoadImage); this.asyncImageEndLoaded2 = function(_image) { this.AddImageUrlActionCallback(_image, obj); this.sync_EndAction(Asc.c_oAscAsyncActionType.BlockInteraction, Asc.c_oAscAsyncAction.LoadImage); this.asyncImageEndLoaded2 = null; } } }; PDFEditorApi.prototype.AddImageUrlActionCallback = function(_image, obj) { let oDoc = this.getPDFDoc(); let src = _image.src; if (obj && obj.isShapeImageChangeUrl) { let AscShapeProp = new Asc.asc_CShapeProperty(); AscShapeProp.fillBlipFill(src, obj.textureType); this.ShapeApply(AscShapeProp); } else if (obj && obj.isImageChangeUrl) { let AscImageProp = new Asc.asc_CImgProperty(); AscImageProp.ImageUrl = src; this.ImgApply(AscImageProp); } else if (obj && obj.isTextArtChangeUrl) { let AscShapeProp = new Asc.asc_CShapeProperty(); let oFill = new Asc.asc_CShapeFill(); oFill.fillBlipFill(src, obj.textureType); AscShapeProp.textArtProperties = new Asc.asc_TextArtProperties(); AscShapeProp.textArtProperties.asc_putFill(oFill); this.ShapeApply(AscShapeProp); } else { let srcLocal = AscCommon.g_oDocumentUrls.getImageLocal(src); if (srcLocal) { src = srcLocal; } oDoc.AddImages([_image], obj); } }; PDFEditorApi.prototype.asc_addImage = function(obj){ if (this.isEditOleMode){ this.oSaveObjectForAddImage = obj; this.sendFromFrameToGeneralEditor({ "type": AscCommon.c_oAscFrameDataType.ShowImageDialogInFrame, }); return; } var t = this; if (this.WordControl) // после показа диалога может не прийти mouseUp this.WordControl.m_bIsMouseLock = false; AscCommon.ShowImageFileDialog(this.documentId, this.documentUserId, this.CoAuthoringApi.get_jwt(), this.documentShardKey, this.documentWopiSrc, this.documentUserSessionId, function(error, files) { // ошибка может быть объектом в случае отмены добавления картинки в форму if (typeof(error) == "object") return; t._uploadCallback(error, files, obj); }, function(error) { if (Asc.c_oAscError.ID.No !== error){ t.sendEvent("asc_onError", error, Asc.c_oAscError.Level.NoCritical); } if (obj && obj.sendUrlsToFrameEditor && t.isOpenedChartFrame) { t.sendStartUploadImageActionToFrameEditor(); } obj && obj.fStartUploadImageCallback && obj.fStartUploadImageCallback(); t.sync_StartAction(Asc.c_oAscAsyncActionType.BlockInteraction, Asc.c_oAscAsyncAction.UploadImage); }); }; PDFEditorApi.prototype.ChangeArtImageFromFile = function(type) { this.asc_addImage({isTextArtChangeUrl: true, textureType: type}); }; PDFEditorApi.prototype.SetInterfaceDrawImagePlaceTextArt = function(div_id) { let oDrDoc = this.getPDFDoc().GetDrawingDocument(); if (!this.isLoadFullApi) { this.tmpTextArtDiv = div_id; return; } oDrDoc.InitGuiCanvasTextArt(div_id); }; PDFEditorApi.prototype.asc_setInterfaceDrawImagePlaceShape = function(div_id) { let oDrDoc = this.getPDFDoc().GetDrawingDocument(); if (!this.isLoadFullApi) { this.shapeElementId = div_id; return; } oDrDoc.InitGuiCanvasShape(div_id); }; PDFEditorApi.prototype.remove_Hyperlink = function() { let oDoc = this.getPDFDoc(); oDoc.RemoveHyperlink(); }; PDFEditorApi.prototype.change_Hyperlink = function(HyperProps) { let oDoc = this.getPDFDoc(); oDoc.ModifyHyperlink(HyperProps); }; PDFEditorApi.prototype.sync_HyperlinkClickCallback = function(Url) { let oViewer = this.getDocumentRenderer(); let oDoc = this.getPDFDoc(); if (AscCommon.IsLinkPPAction(Url)) { let nCurPage = oDoc.GetCurPage(); let nPagesCount = oDoc.GetPagesCount(); if (Url == "ppaction://hlinkshowjump?jump=firstslide") { oViewer.navigateToPage(0); } else if (Url == "ppaction://hlinkshowjump?jump=lastslide") { oViewer.navigateToPage(nPagesCount - 1); } else if (Url == "ppaction://hlinkshowjump?jump=nextslide") { oViewer.navigateToPage(nCurPage + 1); } else if (Url == "ppaction://hlinkshowjump?jump=previousslide") { oViewer.navigateToPage(nCurPage - 1); } else { let mask = "ppaction://hlinksldjumpslide"; let posStr = Url.indexOf(mask); if (0 == posStr) { let pageNum = parseInt(Url.substring(mask.length)); if (pageNum >= 0 && pageNum < nPagesCount) oViewer.navigateToPage(pageNum); } } return; } Asc.editor.sendEvent("asc_onOpenLinkPdfForm", Url, function() { try { window.open(Url, "_blank"); } catch (err) { console.warn(err); } }, function() {}); }; PDFEditorApi.prototype.add_Hyperlink = function(HyperProps) { let oDoc = this.getPDFDoc(); if (null != HyperProps.Text) { AscFonts.FontPickerByCharacter.checkText(HyperProps.Text, this, function() { oDoc.AddHyperlink(HyperProps); }); } else { oDoc.AddHyperlink(HyperProps); } }; PDFEditorApi.prototype.sync_VerticalTextAlign = function(align) { this.sendEvent("asc_onVerticalTextAlign", align); }; PDFEditorApi.prototype.sync_Vert = function(vert) { this.sendEvent("asc_onVert", vert); }; PDFEditorApi.prototype.asc_getHeaderFooterProperties = function() { return null; }; PDFEditorApi.prototype.SetMarkerFormat = function(nType, value, opacity, r, g, b) { this.isMarkerFormat = value; // from edit mode if (value == true && nType == undefined) { this.getPDFDoc().SetHighlight(r, g, b, opacity); return; } this.curMarkerType = value ? nType : undefined; let oDoc = this.getPDFDoc(); let oActiveObj = oDoc.GetActiveObject(); let oViewer = oDoc.Viewer; let oDrDoc = oDoc.GetDrawingDocument(); if (value == true) { if (oActiveObj && !oActiveObj.IsDrawing()) { oDoc.BlurActiveObject(); oDoc.UpdateInterface(); } } else { oViewer.onUpdateOverlay(); } if (this.isMarkerFormat) { let aSelQuads = oViewer.file.getSelectionQuads(); if (aSelQuads.length == 0) { oDoc.bOffMarkerAfterUsing = false; } else { oDoc.bOffMarkerAfterUsing = true; } oDoc.DoAction(function() { oDrDoc.LockCursorType(AscCommon.Cursors.MarkerFormat); switch (this.curMarkerType) { case AscPDF.ANNOTATIONS_TYPES.Highlight: this.SetHighlight(r, g, b, opacity); break; case AscPDF.ANNOTATIONS_TYPES.Underline: this.SetUnderline(r, g, b, opacity); break; case AscPDF.ANNOTATIONS_TYPES.Strikeout: this.SetStrikeout(r, g, b, opacity); break; } }, AscDFH.historydescription_Pdf_AddHighlightAnnot, this); } else { // SetMarkerFormat вызывается при включении ластика/рисовалки, курсор не сбрасываем if (false == this.isDrawInkMode() && false == this.isEraseInkMode()) { oDrDoc.UnlockCursorType(); oViewer.setCursorType('default'); } oDoc.bOffMarkerAfterUsing = true; } }; PDFEditorApi.prototype.IsCommentMarker = function() { return this.curMarkerType !== undefined; }; PDFEditorApi.prototype.get_PageWidth = function(nPage) { let oDoc = this.getPDFDoc(); return oDoc.GetPageWidthEMU(); }; PDFEditorApi.prototype.get_PageHeight = function(nPage) { let oDoc = this.getPDFDoc(); return oDoc.GetPageHeightEMU(); }; PDFEditorApi.prototype.get_PageWidthMM = function(nPage) { let oDoc = this.getPDFDoc(); return oDoc.GetPageWidthMM(); }; PDFEditorApi.prototype.get_PageHeightMM = function(nPage) { let oDoc = this.getPDFDoc(); return oDoc.GetPageHeightMM(); }; PDFEditorApi.prototype.asc_SetFastCollaborative = function(isOn) { if (!AscCommon.CollaborativeEditing) return; AscCommon.CollaborativeEditing.Set_Fast(isOn); }; ///////////////////////////////////////////////////////////// ///////// For annots //////////////////////////////////////////////////////////// PDFEditorApi.prototype.StartAddAnnot = function(type, ascPen, is_apply) { let oDoc = this.getPDFDoc(); let oDrDoc = oDoc.GetDrawingDocument(); this.stopInkDrawer(); this.cancelEyedropper(); oDoc.BlurActiveObject(); this.isStartAddShape = true; this.isStartAddAnnot = true; let sPreset; switch (type) { case AscPDF.ANNOTATIONS_TYPES.Square: sPreset = "rect"; break; case AscPDF.ANNOTATIONS_TYPES.Circle: sPreset = "ellipse"; break; case AscPDF.ANNOTATIONS_TYPES.Line: sPreset = "line"; break; case AscPDF.ANNOTATIONS_TYPES.PolyLine: case AscPDF.ANNOTATIONS_TYPES.Polygon: sPreset = "polyline2"; break; } if (sPreset && is_apply) { oDrDoc.LockCursorType("crosshair"); this.addShapePreset = sPreset; this.addAnnotType = type; this.addAnnotPen = AscFormat.CorrectUniStroke(ascPen); this.addAnnotPen.Fill.check(AscFormat.GetDefaultTheme(), AscFormat.GetDefaultColorMap()); if (sPreset == "line") { this.addAnnotPen.setTailEnd(new AscFormat.EndArrow()); this.addAnnotPen.tailEnd.setType(AscFormat.LineEndType.Arrow); this.addAnnotPen.tailEnd.setLen(AscFormat.LineEndSize.Mid); } } else { this.sync_EndAddShape(); this.sync_StartAddShapeCallback(false); } }; PDFEditorApi.prototype.sync_StartAddShapeCallback = function(value) { this.isStartAddShape = value; this.isStartAddAnnot = value; return this.sendEvent("asc_onStartAddShapeChanged", value); }; PDFEditorApi.prototype.AddFreeTextAnnot = function(nType) { let oDoc = this.getPDFDoc(); oDoc.BlurActiveObject(); function addFreeText() { oDoc.DoAction(function() { oDoc.AddFreeTextAnnot(nType, oDoc.Viewer.currentPage); }, AscDFH.historydescription_Pdf_AddAnnot, this); } if (oDoc.checkFonts(["Arial"], addFreeText)) { addFreeText(); } }; PDFEditorApi.prototype.AddStampAnnot = function(sType) { let oDoc = this.getPDFDoc(); oDoc.BlurActiveObject(); if (sType == AscPDF.STAMP_TYPES.Image) { let t = this; AscCommon.ShowImageFileDialog(this.documentId, this.documentUserId, this.CoAuthoringApi.get_jwt(), this.documentShardKey, this.documentWopiSrc, this.documentUserSessionId, function(error, files) { // ошибка может быть объектом в случае отмены добавления картинки в форму if (typeof(error) == "object") return; t._uploadCallback(error, files, { isStamp: true }); }, function(error) { if (Asc.c_oAscError.ID.No !== error) { t.sendEvent("asc_onError", error, Asc.c_oAscError.Level.NoCritical); } t.sync_StartAction(Asc.c_oAscAsyncActionType.BlockInteraction, Asc.c_oAscAsyncAction.UploadImage); }); } else { function addStamp() { oDoc.DoAction(function() { oDoc.AddStampAnnot(sType, oDoc.Viewer.currentPage); }, AscDFH.historydescription_Pdf_AddAnnot, this); } if (oDoc.checkFonts(["Arial"], addStamp)) { addStamp(); } } }; PDFEditorApi.prototype.SetRedactTool = function(bUse) { let oDoc = this.getPDFDoc(); if (bUse) { oDoc.BlurActiveObject(); } this.isRedactTool = bUse; this.sendEvent("asc_onRedactState", bUse); }; PDFEditorApi.prototype.IsRedactTool = function() { return this.isRedactTool; }; PDFEditorApi.prototype.RedactPages = function(aIdxs) { let oDoc = this.getPDFDoc(); let oFile = oDoc.Viewer.file; oDoc.DoAction(function() { aIdxs.forEach(function(idx) { let oPage = oFile.pages[idx]; if (!oPage) { return; } let aSelQuads = [{ page: idx, quads: [[ 0, 0, // left up oPage.W, 0, // right up 0, oPage.H, // left down oPage.W, oPage.H // right down ]]}]; oDoc.AddRedactAnnot(aSelQuads); }) }, AscDFH.historydescription_Pdf_AddAnnot); }; PDFEditorApi.prototype.ApplyRedact = function() { let oDoc = this.getPDFDoc(); return oDoc.ApplyRedact(); }; PDFEditorApi.prototype.HasRedact = function() { let oDoc = this.getPDFDoc(); return !!oDoc.annots.find(function(annot) { return annot.IsRedact() && !annot.GetRedactId(); }); }; PDFEditorApi.prototype.RemoveAllRedact = function() { let oDoc = this.getPDFDoc(); oDoc.DoAction(function() { oDoc.annots.forEach(function(annot) { if (annot.IsRedact() && !annot.GetRedactId()) { oDoc.RemoveAnnot(annot.GetId()); } }) }, AscDFH.historydescription_Pdf_ContextMenuRemove); }; ///////////////////////////////////////////////////////////// ///////// For filed //////////////////////////////////////////////////////////// PDFEditorApi.prototype.IsEditFieldsMode = function() { return Asc.editor.canEdit(); }; PDFEditorApi.prototype.AddTextField = function(oParams) { let oDoc = this.getPDFDoc(); return oDoc.DoAction(function() { let oField = oDoc.CreateTextField(); oDoc.AddField(oField, oDoc.GetCurPage(), true); if (oParams) { if (oParams['placeholder']) { oField.SetPlaceholder(oParams['placeholder']); } if (oParams['reg']) { oField.SetRegularExp(oParams['reg']); } if (oParams['mask']) { oField.SetArbitaryMask(oParams['mask']); } } return true; }, AscDFH.historydescription_Pdf_AddField, this); }; PDFEditorApi.prototype.AddDateField = function() { let oDoc = this.getPDFDoc(); return oDoc.DoAction(function() { let oField = oDoc.CreateTextField(true); oDoc.AddField(oField, oDoc.GetCurPage(), true); return true; }, AscDFH.historydescription_Pdf_AddField, this); }; PDFEditorApi.prototype.AddImageField = function() { let oDoc = this.getPDFDoc(); return oDoc.DoAction(function() { let oField = oDoc.CreateButtonField(true); oDoc.AddField(oField, oDoc.GetCurPage(), true); return true; }, AscDFH.historydescription_Pdf_AddField, this); }; PDFEditorApi.prototype.AddCheckboxField = function() { let oDoc = this.getPDFDoc(); return oDoc.DoAction(function() { let oField = oDoc.CreateCheckboxField(); oDoc.AddField(oField, oDoc.GetCurPage(), true); return true; }, AscDFH.historydescription_Pdf_AddField, this); }; PDFEditorApi.prototype.AddRadiobuttonField = function() { let oDoc = this.getPDFDoc(); return oDoc.DoAction(function() { let oField = oDoc.CreateRadiobuttonField(true); oDoc.AddField(oField, oDoc.GetCurPage(), true); return true; }, AscDFH.historydescription_Pdf_AddField, this); }; PDFEditorApi.prototype.AddComboboxField = function() { let oDoc = this.getPDFDoc(); return oDoc.DoAction(function() { let oField = oDoc.CreateComboboxField(true); oDoc.AddField(oField, oDoc.GetCurPage(), true); return true; }, AscDFH.historydescription_Pdf_AddField, this); }; PDFEditorApi.prototype.AddListboxField = function() { let oDoc = this.getPDFDoc(); return oDoc.DoAction(function() { let oField = oDoc.CreateListboxField(true); oDoc.AddField(oField, oDoc.GetCurPage(), true); return true; }, AscDFH.historydescription_Pdf_AddField, this); }; // fields formats PDFEditorApi.prototype.asc_getNumberFormatCurrencySymbols = function () { let symbolsSet = new Set(); for (let key in AscCommon.g_aCultureInfos) { symbolsSet.add(AscCommon.g_aCultureInfos[key].CurrencySymbol); } if (Array.isArray(AscCommon.g_aAdditionalCurrencySymbols)) { for (let i = 0; i < AscCommon.g_aAdditionalCurrencySymbols.length; i++) { let symbol = AscCommon.g_aAdditionalCurrencySymbols[i]; symbolsSet.add(symbol); } } return Array.from(symbolsSet); }; PDFEditorApi.prototype.asc_getFieldNumberFormatExample = function(nDemical, nSepStyle, nNegStyle, sCurrency, bCurrencyPrepend) { return AscPDF.FormatNumberValue('-123456790', nDemical, nSepStyle, nNegStyle, sCurrency, bCurrencyPrepend); }; PDFEditorApi.prototype.asc_getFieldPercentFormatExample = function(nDemical, nSepStyle) { return AscPDF.FormatPercentValue('123456790', nDemical, nSepStyle); }; PDFEditorApi.prototype.asc_getFieldDateFormatOptions = function() { return [ "m/d", "m/d/yy", "m/d/yyyy", "mm/dd/yy", "mm/dd/yyyy", "mm/yy", "mm/yyyy", "d-mmm", "d-mmm-yy", "d-mmm-yyyy", "dd-mmm-yy", "dd-mmm-yyyy", "yy-mm-dd", "yyyy-mm-dd", "mm-yy", "mm-yyyy", "mmmm-yy", "mmmm-yyyy", "mmm d, yyyy", "mmmm d, yyyy", "m/d/yy h:MM tt", "m/d/yyyy h:MM tt", "m/d/yy HH:MM", "m/d/yyyy HH:MM", ] }; PDFEditorApi.prototype.asc_getFieldTimeFormatOptions = function() { return AscPDF.TimeFormatType; }; PDFEditorApi.prototype.asc_getFieldDateTimeFormatExample = function(nFormat) { return AscPDF.FormatDateValue(new Date().getTime(), nFormat); }; PDFEditorApi.prototype.ClearFieldFormat = function() { let oDoc = this.getPDFDoc(); let oField = oDoc.activeForm; let oController = oDoc.GetController(); if (!oField) { return false; } return oDoc.DoAction(function() { let res = false; oController.selectedObjects.forEach(function(shape) { let oField = shape.GetEditField(); if (false == [AscPDF.FIELD_TYPES.combobox, AscPDF.FIELD_TYPES.text].includes(oField.GetType())) { return; } oField.ClearFormat(); if (oField.IsCanCommit()) { oField.Commit(); } res = true; }); return res; }, AscDFH.historydescription_Pdf_ChangeField, this); }; PDFEditorApi.prototype.SetFieldNumberFormat = function(nDemical, nSepStyle, nNegStyle, sCurrency, bCurrencyPrepend) { let oDoc = this.getPDFDoc(); let oField = oDoc.activeForm; let oController = oDoc.GetController(); if (!oField) { return false; } return oDoc.DoAction(function() { let res = false; oController.selectedObjects.forEach(function(shape) { let oField = shape.GetEditField(); if (!oField || false == [AscPDF.FIELD_TYPES.combobox, AscPDF.FIELD_TYPES.text].includes(oField.GetType())) { return false; } oField.ClearFormat(); if (oField.IsMultiline && oField.IsMultiline()) { return false; } let aActionsFormat = [{ "S": AscPDF.ACTIONS_TYPES.JavaScript, "JS": "AFNumber_Format(" + nDemical + "," + nSepStyle + "," + nNegStyle + "," + "0" + ',"' + sCurrency + '",' + bCurrencyPrepend + ");" }]; oField.SetActions(AscPDF.FORMS_TRIGGERS_TYPES.Format, aActionsFormat); let aActionsKeystroke = [{ "S": AscPDF.ACTIONS_TYPES.JavaScript, "JS": "AFNumber_Keystroke(" + nDemical + "," + nSepStyle + "," + nNegStyle + "," + "0" + ',"' + sCurrency + '",' + bCurrencyPrepend + ");" }]; oField.SetActions(AscPDF.FORMS_TRIGGERS_TYPES.Keystroke, aActionsKeystroke); if (oField.IsCanCommit()) { oField.Commit(); } res = true; }); return res; }, AscDFH.historydescription_Pdf_ChangeField, this); }; PDFEditorApi.prototype.SetFieldPercentageFormat = function(nDemical, nSepStyle) { let oDoc = this.getPDFDoc(); let oField = oDoc.activeForm; let oController = oDoc.GetController(); if (!oField) { return false; } return oDoc.DoAction(function() { let res = false; oController.selectedObjects.forEach(function(shape) { let oField = shape.GetEditField(); if (!oField || false == [AscPDF.FIELD_TYPES.combobox, AscPDF.FIELD_TYPES.text].includes(oField.GetType())) { return false; } oField.ClearFormat(); if (oField.IsMultiline && oField.IsMultiline()) { return false; } let aActionsFormat = [{ "S": AscPDF.ACTIONS_TYPES.JavaScript, "JS": "AFPercent_Format(" + nDemical + "," + nSepStyle + ");" }] oField.SetActions(AscPDF.FORMS_TRIGGERS_TYPES.Format, aActionsFormat); let aActionsKeystroke = [{ "S": AscPDF.ACTIONS_TYPES.JavaScript, "JS": "AFPercent_Keystroke(" + nDemical + "," + nSepStyle + ");" }]; oField.SetActions(AscPDF.FORMS_TRIGGERS_TYPES.Keystroke, aActionsKeystroke); if (oField.IsCanCommit()) { oField.Commit(); } res = true; }); return res; }, AscDFH.historydescription_Pdf_ChangeField, this); }; PDFEditorApi.prototype.SetFieldDateFormat = function(sFormat) { let oDoc = this.getPDFDoc(); let oField = oDoc.activeForm; let oController = oDoc.GetController(); if (!oField) { return false; } return oDoc.DoAction(function() { let res = false; oController.selectedObjects.forEach(function(shape) { let oField = shape.GetEditField(); if (!oField || false == [AscPDF.FIELD_TYPES.combobox, AscPDF.FIELD_TYPES.text].includes(oField.GetType())) { return false; } let sDateFormat = oField.GetDateFormat(); oField.ClearFormat(); if (oField.IsMultiline && oField.IsMultiline()) { return false; } let aActionsFormat = [{ "S": AscPDF.ACTIONS_TYPES.JavaScript, "JS": 'AFDate_FormatEx("' + sFormat + '");' }] oField.SetActions(AscPDF.FORMS_TRIGGERS_TYPES.Format, aActionsFormat); let aActionsKeystroke = [{ "S": AscPDF.ACTIONS_TYPES.JavaScript, "JS": 'AFDate_KeystrokeEx("' + sFormat + '");' }]; oField.SetActions(AscPDF.FORMS_TRIGGERS_TYPES.Keystroke, aActionsKeystroke); if (oField.IsCanCommit()) { oField.Commit(); } res = true; }); return res; }, AscDFH.historydescription_Pdf_ChangeField, this); }; PDFEditorApi.prototype.SetFieldTimeFormat = function(nFormat) { let oDoc = this.getPDFDoc(); let oField = oDoc.activeForm; let oController = oDoc.GetController(); if (!oField) { return false; } return oDoc.DoAction(function() { let res = false; oController.selectedObjects.forEach(function(shape) { let oField = shape.GetEditField(); if (!oField || false == [AscPDF.FIELD_TYPES.combobox, AscPDF.FIELD_TYPES.text].includes(oField.GetType())) { return false; } oField.ClearFormat(); if (oField.IsMultiline && oField.IsMultiline()) { return false; } let aActionsFormat = [{ "S": AscPDF.ACTIONS_TYPES.JavaScript, "JS": 'AFTime_FormatEx(' + nFormat + ');' }] oField.SetActions(AscPDF.FORMS_TRIGGERS_TYPES.Format, aActionsFormat); let aActionsKeystroke = [{ "S": AscPDF.ACTIONS_TYPES.JavaScript, "JS": 'AFTime_KeystrokeEx(' + nFormat + ');' }]; oField.SetActions(AscPDF.FORMS_TRIGGERS_TYPES.Keystroke, aActionsKeystroke); if (oField.IsCanCommit()) { oField.Commit(); } res = true; }); return res; }, AscDFH.historydescription_Pdf_ChangeField, this); }; PDFEditorApi.prototype.SetFieldSpecialFormat = function(nFormat) { let oDoc = this.getPDFDoc(); let oField = oDoc.activeForm; let oController = oDoc.GetController(); if (!oField) { return false; } return oDoc.DoAction(function() { let res = false; oController.selectedObjects.forEach(function(shape) { let oField = shape.GetEditField(); if (!oField || false == [AscPDF.FIELD_TYPES.combobox, AscPDF.FIELD_TYPES.text].includes(oField.GetType())) { return false; } oField.ClearFormat(); if (oField.IsMultiline && oField.IsMultiline()) { return false; } let aActionsFormat = [{ "S": AscPDF.ACTIONS_TYPES.JavaScript, "JS": "AFSpecial_Format(" + nFormat + ");" }] oField.SetActions(AscPDF.FORMS_TRIGGERS_TYPES.Format, aActionsFormat); let aActionsKeystroke = [{ "S": AscPDF.ACTIONS_TYPES.JavaScript, "JS": "AFSpecial_Keystroke(" + nFormat + ");" }]; oField.SetActions(AscPDF.FORMS_TRIGGERS_TYPES.Keystroke, aActionsKeystroke); if (oField.IsCanCommit()) { oField.Commit(); } res = true; }); return res; }, AscDFH.historydescription_Pdf_ChangeField, this); }; PDFEditorApi.prototype.SetFieldMask = function(sMask) { let oDoc = this.getPDFDoc(); let oField = oDoc.activeForm; let oController = oDoc.GetController(); if (!oField) { return false; } return oDoc.DoAction(function() { let res = false; oController.selectedObjects.forEach(function(shape) { let oField = shape.GetEditField(); if (!oField || false == [AscPDF.FIELD_TYPES.combobox, AscPDF.FIELD_TYPES.text].includes(oField.GetType())) { return false; } oField.ClearFormat(); if (oField.IsMultiline && oField.IsMultiline()) { return false; } oField.SetArbitaryMask(sMask); if (oField.IsCanCommit()) { oField.Commit(); } res = true; }); return res; }, AscDFH.historydescription_Pdf_ChangeField, this); }; PDFEditorApi.prototype.SetFieldRegularExp = function(sReg) { let oDoc = this.getPDFDoc(); let oField = oDoc.activeForm; let oController = oDoc.GetController(); if (!oField) { return false; } return oDoc.DoAction(function() { let res = false; oController.selectedObjects.forEach(function(shape) { let oField = shape.GetEditField(); if (!oField || false == [AscPDF.FIELD_TYPES.combobox, AscPDF.FIELD_TYPES.text].includes(oField.GetType())) { return false; } oField.ClearFormat(); if (oField.IsMultiline && oField.IsMultiline()) { return false; } oField.SetRegularExp(sReg); if (oField.IsCanCommit()) { oField.Commit(); } res = true; }); return res; }, AscDFH.historydescription_Pdf_ChangeField, this); }; PDFEditorApi.prototype.SetFieldValidateRange = function(nGreaterThan, nLessThan) { let oDoc = this.getPDFDoc(); let oField = oDoc.activeForm; let oController = oDoc.GetController(); if (!oField) { return false; } return oDoc.DoAction(function() { let res = false; oController.selectedObjects.forEach(function(shape) { let oField = shape.GetEditField(); if (!oField || false == [AscPDF.FIELD_TYPES.combobox, AscPDF.FIELD_TYPES.text].includes(oField.GetType()) || false == oField.IsNumberFormat()) { return false; } if (oField.IsMultiline && oField.IsMultiline()) { oField.ClearFormat(); return false; } let bGreaterThan = nGreaterThan != undefined; let bLessThan = nLessThan != undefined; let aActionsValidate = [{ "S": AscPDF.ACTIONS_TYPES.JavaScript, "JS": 'AFRange_Validate(' + bGreaterThan + ',' + nGreaterThan + ',' + bLessThan + ',' + nLessThan + ');' }]; oField.SetActions(AscPDF.FORMS_TRIGGERS_TYPES.Validate, aActionsValidate); res = true; }); return res; }, AscDFH.historydescription_Pdf_ChangeField, this); }; PDFEditorApi.prototype.SetFieldCalculate = function(nCalcType, aNames) { let oDoc = this.getPDFDoc(); let oField = oDoc.activeForm; let oController = oDoc.GetController(); if (!oField) { return false; } return oDoc.DoAction(function() { let res = false; oController.selectedObjects.forEach(function(shape) { let oField = shape.GetEditField(); if (false == [AscPDF.FIELD_TYPES.combobox, AscPDF.FIELD_TYPES.text].includes(oField.GetType())) { return; } let sCalcFunc = 'AFSimple_Calculate('; switch (nCalcType) { case AscPDF.CalculateType.SUM: sCalcFunc += '"SUM",'; break; case AscPDF.CalculateType.PRODUCT: sCalcFunc += '"PRD",'; break; case AscPDF.CalculateType.AVERAGE: sCalcFunc += '"AVG",'; break; case AscPDF.CalculateType.MIN: sCalcFunc += '"MIN",'; break; case AscPDF.CalculateType.MAX: sCalcFunc += '"MAX",'; break; } sCalcFunc += 'new Array(' + aNames.map(function(name) { return '"' + name + '"'; }).join(',') + '));'; let aActions = [{ "S": AscPDF.ACTIONS_TYPES.JavaScript, "JS": sCalcFunc }]; oField.SetActions(AscPDF.FORMS_TRIGGERS_TYPES.Calculate, aActions); let oCalcInfo = oDoc.GetCalculateInfo(); let aCalcOrder = oCalcInfo.GetCalculateOrder(); let nFieldApIdx = oField.GetApIdx(); if (false == aCalcOrder.includes(nFieldApIdx)) { let aNewOrder = aCalcOrder.slice(); aNewOrder.push(nFieldApIdx); oCalcInfo.SetCalculateOrder(aNewOrder); } res = true; }); return res; }, AscDFH.historydescription_Pdf_ChangeField, this); }; PDFEditorApi.prototype.SetCalculateOrder = function(aNames) { let oDoc = this.getPDFDoc(); return oDoc.DoAction(function() { let aNewOrder = []; aNames.forEach(function(name) { let oField = oDoc.GetField(name); aNewOrder.push(oField.GetApIdx()); }); let oCalcInfo = oDoc.GetCalculateInfo(); oCalcInfo.SetCalculateOrder(aNewOrder); return true; }, AscDFH.historydescription_Pdf_ChangeField, this); }; PDFEditorApi.prototype.GetCalculateOrder = function() { let oDoc = this.getPDFDoc(); let oCalcInfo = oDoc.GetCalculateInfo(); let aCalcOrder = oCalcInfo.GetCalculateOrder(); let aNames = []; aCalcOrder.forEach(function(apIdx) { let oField = oDoc.GetFieldByApIdx(apIdx); if (oField) { aNames.push(oField.GetFullName()); } }); return aNames; }; // fields common PDFEditorApi.prototype.SetFieldName = function(sName) { let oDoc = this.getPDFDoc(); return oDoc.DoAction(function() { let oField = oDoc.activeForm; if (!oField) { return false; } return oField.SetName(sName); }, AscDFH.historydescription_Pdf_ChangeField, this); }; PDFEditorApi.prototype.GetAllFieldsNames = function() { let oDoc = this.getPDFDoc(); let aWidgets = oDoc.GetAllWidgets(); let aNames = []; aWidgets.forEach(function(widget) { let sName = widget.GetFullName(); if (false == aNames.includes(sName)) { aNames.push(sName); } let oParent = widget.GetParent(); while (oParent) { let sParentName = oParent.GetFullName(); if (false == aNames.includes(sParentName)) { aNames.push(sParentName); } oParent = oParent.GetParent(); } }); return aNames.sort(); }; PDFEditorApi.prototype.GetAvailableFieldsNames = function(nFieldType) { let oDoc = this.getPDFDoc(); let aWidgets = oDoc.GetAllWidgets(); let aNames = []; aWidgets.forEach(function(widget) { if (widget.GetType() != nFieldType) { return; } let sName = widget.GetFullName(); if (false == aNames.includes(sName)) { aNames.push(sName); } }); return aNames.sort(); }; PDFEditorApi.prototype.SetFieldStrokeColor = function(r, g, b) { let oDoc = this.getPDFDoc(); let oController = oDoc.GetController(); let oForm = oDoc.activeForm; if (!oForm) { return false; } let aColor = ![r, g, b].includes(undefined) ? [r / 255, g / 255, b / 255] : undefined; return oDoc.DoAction(function() { oController.selectedObjects.forEach(function(shape) { let field = shape.GetEditField(); field.SetBorderColor(aColor); if (aColor) { if (field.GetBorderStyle() == undefined) { field.SetBorderStyle(AscPDF.BORDER_TYPES.solid); } if (field.GetBorderWidth() == undefined) { field.SetBorderWidth(1); } } }); return true; }, AscDFH.historydescription_Pdf_ChangeField); }; PDFEditorApi.prototype.SetFieldStrokeWidth = function(nPt) { let oDoc = this.getPDFDoc(); let oController = oDoc.GetController(); let oForm = oDoc.activeForm; if (!oForm) { return false; } return oDoc.DoAction(function() { oController.selectedObjects.forEach(function(shape) { let field = shape.GetEditField(); field.SetBorderWidth(nPt); }); return true; }, AscDFH.historydescription_Pdf_ChangeField); }; PDFEditorApi.prototype.SetFieldStrokeStyle = function(nStyle) { let oDoc = this.getPDFDoc(); let oController = oDoc.GetController(); let oForm = oDoc.activeForm; if (!oForm) { return false; } return oDoc.DoAction(function() { oController.selectedObjects.forEach(function(shape) { let field = shape.GetEditField(); field.SetBorderStyle(nStyle); }); return true; }, AscDFH.historydescription_Pdf_ChangeField); }; PDFEditorApi.prototype.SetFieldBgColor = function(r, g, b) { let oDoc = this.getPDFDoc(); let oController = oDoc.GetController(); let oForm = oDoc.activeForm; if (!oForm) { return false; } let aColor = ![r, g, b].includes(undefined) ? [r / 255, g / 255, b / 255] : undefined; return oDoc.DoAction(function() { oController.selectedObjects.forEach(function(shape) { let field = shape.GetEditField(); field.SetBackgroundColor(aColor); }); return true; }, AscDFH.historydescription_Pdf_ChangeField); }; PDFEditorApi.prototype.SetFieldRequired = function(bValue) { let oDoc = this.getPDFDoc(); let oController = oDoc.GetController(); let oForm = oDoc.activeForm; if (!oForm) { return false; } return oDoc.DoAction(function() { oController.selectedObjects.forEach(function(shape) { let field = shape.GetEditField(); field.SetRequired(bValue); }); return true; }, AscDFH.historydescription_Pdf_ChangeField); }; PDFEditorApi.prototype.SetFieldReadOnly = function(bValue) { let oDoc = this.getPDFDoc(); let oController = oDoc.GetController(); let oForm = oDoc.activeForm; if (!oForm) { return false; } return oDoc.DoAction(function() { oController.selectedObjects.forEach(function(shape) { let field = shape.GetEditField(); field.SetReadOnly(bValue); }); return true; }, AscDFH.historydescription_Pdf_ChangeField); }; PDFEditorApi.prototype.SetFieldDefaultValue = function(sValue) { let oDoc = this.getPDFDoc(); let oController = oDoc.GetController(); let oForm = oDoc.activeForm; if (!oForm) { return false; } return oDoc.DoAction(function() { oController.selectedObjects.forEach(function(shape) { let field = shape.GetEditField(); if (field.GetType() == AscPDF.FIELD_TYPES.checkbox || field.GetType() == AscPDF.FIELD_TYPES.radiobutton) { let nIdx = field.GetOptionsIndex(); if (sValue && nIdx !== -1) { field.SetDefaultValue(String(nIdx)); return; } } field.SetDefaultValue(sValue); }); return true; }, AscDFH.historydescription_Pdf_ChangeField); }; PDFEditorApi.prototype.SetFieldLocked = function(bLocked) { let oDoc = this.getPDFDoc(); let oController = oDoc.GetController(); let oForm = oDoc.activeForm; if (!oForm) { return false; } return oDoc.DoAction(function() { oController.selectedObjects.forEach(function(shape) { let field = shape.GetEditField(); field.SetLocked(bLocked); }); return true; }, AscDFH.historydescription_Pdf_ChangeField); }; PDFEditorApi.prototype.SetFieldTooltip = function(sTooltip) { let oDoc = this.getPDFDoc(); let oController = oDoc.GetController(); let oForm = oDoc.activeForm; if (!oForm) { return false; } return oDoc.DoAction(function() { oController.selectedObjects.forEach(function(shape) { let field = shape.GetEditField(); field.SetTooltip(sTooltip); }); return true; }, AscDFH.historydescription_Pdf_ChangeField); }; PDFEditorApi.prototype.SetFieldRotate = function(nAngle) { let oDoc = this.getPDFDoc(); let oController = oDoc.GetController(); let oForm = oDoc.activeForm; if (!oForm) { return false; } return oDoc.DoAction(function() { oController.selectedObjects.forEach(function(shape) { let field = shape.GetEditField(); field.SetRotate(nAngle); }); return true; }, AscDFH.historydescription_Pdf_ChangeField); }; PDFEditorApi.prototype.SetFieldDigitsType = function(nType) { let oDoc = this.getPDFDoc(); let oController = oDoc.GetController(); let oForm = oDoc.activeForm; if (!oForm) { return false; } return oDoc.DoAction(function() { oController.selectedObjects.forEach(function(shape) { let field = shape.GetEditField(); field.SetDigitsType(nType); }); return true; }, AscDFH.historydescription_Pdf_ChangeField); }; // text field PDFEditorApi.prototype.SetTextFieldMultiline = function(bValue) { let oDoc = this.getPDFDoc(); let oController = oDoc.GetController(); let oForm = oDoc.activeForm; if (!oForm) { return false; } return oDoc.DoAction(function() { oController.selectedObjects.forEach(function(shape) { let field = shape.GetEditField(); if (AscPDF.FIELD_TYPES.text == field.GetType()) { field.SetMultiline(bValue); } }); return true; }, AscDFH.historydescription_Pdf_ChangeField); }; PDFEditorApi.prototype.SetTextFieldCharLimit = function(nChars) { let oDoc = this.getPDFDoc(); let oController = oDoc.GetController(); let oForm = oDoc.activeForm; if (!oForm) { return false; } return oDoc.DoAction(function() { oController.selectedObjects.forEach(function(shape) { let field = shape.GetEditField(); if (AscPDF.FIELD_TYPES.text == field.GetType()) { field.SetCharLimit(nChars); } }); return true; }, AscDFH.historydescription_Pdf_ChangeField); }; PDFEditorApi.prototype.SetTextFieldComb = function(bValue) { let oDoc = this.getPDFDoc(); let oController = oDoc.GetController(); let oForm = oDoc.activeForm; if (!oForm) { return false; } return oDoc.DoAction(function() { oController.selectedObjects.forEach(function(shape) { let field = shape.GetEditField(); if (AscPDF.FIELD_TYPES.text == field.GetType()) { if (bValue) { field.SetCharLimit(10); } else { field.SetCharLimit(0); } field.SetComb(bValue); } }); return true; }, AscDFH.historydescription_Pdf_ChangeField); }; PDFEditorApi.prototype.SetTextFieldScrollLongText = function(bValue) { let oDoc = this.getPDFDoc(); let oController = oDoc.GetController(); let oForm = oDoc.activeForm; if (!oForm) { return false; } return oDoc.DoAction(function() { oController.selectedObjects.forEach(function(shape) { let field = shape.GetEditField(); if (AscPDF.FIELD_TYPES.text == field.GetType()) { field.SetDoNotScroll(!bValue); } }); return true; }, AscDFH.historydescription_Pdf_ChangeField); }; PDFEditorApi.prototype.SetTextFieldPassword = function(bPassword) { let oDoc = this.getPDFDoc(); let oController = oDoc.GetController(); let oForm = oDoc.activeForm; if (!oForm) { return false; } return oDoc.DoAction(function() { oController.selectedObjects.forEach(function(shape) { let field = shape.GetEditField(); if (AscPDF.FIELD_TYPES.text == field.GetType()) { field.SetPassword(bPassword); } }); return true; }, AscDFH.historydescription_Pdf_ChangeField); }; PDFEditorApi.prototype.SetFieldPlaceholder = function(sText) { let oDoc = this.getPDFDoc(); let oController = oDoc.GetController(); let oForm = oDoc.activeForm; if (!oForm) { return false; } return oDoc.DoAction(function() { oController.selectedObjects.forEach(function(shape) { let field = shape.GetEditField(); if ([AscPDF.FIELD_TYPES.text, AscPDF.FIELD_TYPES.combobox].includes(field.GetType())) { let aWidgets = field.GetAllWidgets(); aWidgets.forEach(function(widget) { widget.SetPlaceholder(sText); }); } }); return true; }, AscDFH.historydescription_Pdf_ChangeField); }; PDFEditorApi.prototype.SetFieldAutoFit = function(bAuto) { let oDoc = this.getPDFDoc(); let oController = oDoc.GetController(); let oForm = oDoc.activeForm; if (!oForm) { return false; } return oDoc.DoAction(function() { oController.selectedObjects.forEach(function(shape) { let field = shape.GetEditField(); if ([AscPDF.FIELD_TYPES.text, AscPDF.FIELD_TYPES.combobox].includes(field.GetType())) { field.SetTextSize(bAuto ? 0 : 11); } }); return true; }, AscDFH.historydescription_Pdf_ChangeField); }; // baselist field PDFEditorApi.prototype.AddListFieldOption = function(option, nPos) { let oDoc = this.getPDFDoc(); return oDoc.DoAction(function() { let oField = oDoc.activeForm; if (!oField) { return false; } if (oField && [AscPDF.FIELD_TYPES.combobox, AscPDF.FIELD_TYPES.listbox].includes(oField.GetType())) { oField.AddOption(option, nPos); } return true; }, AscDFH.historydescription_Pdf_AddField, this); }; PDFEditorApi.prototype.RemoveListFieldOption = function(nPos) { let oDoc = this.getPDFDoc(); return oDoc.DoAction(function() { let oField = oDoc.activeForm; if (!oField) { return false; } if (oField && [AscPDF.FIELD_TYPES.combobox, AscPDF.FIELD_TYPES.listbox].includes(oField.GetType())) { oField.RemoveOption(nPos); } return true; }, AscDFH.historydescription_Pdf_AddField, this); }; PDFEditorApi.prototype.MoveListFieldOption = function(nPos, bUp) { let oDoc = this.getPDFDoc(); return oDoc.DoAction(function() { let oField = oDoc.activeForm; if (!oField) { return false; } let aOptions = oField.GetOptions(); if (bUp && nPos == 0) { return false; } else if (!bUp && nPos == aOptions.length -1) { return false; } if (oField && [AscPDF.FIELD_TYPES.combobox, AscPDF.FIELD_TYPES.listbox].includes(oField.GetType())) { let opt = oField.RemoveOption(nPos); oField.AddOption(opt, bUp ? nPos - 1 : nPos + 1) } return true; }, AscDFH.historydescription_Pdf_AddField, this); }; PDFEditorApi.prototype.SetListFieldCommitOnSelChange = function(bValue) { let oDoc = this.getPDFDoc(); let oController = oDoc.GetController(); let oForm = oDoc.activeForm; if (!oForm) { return false; } return oDoc.DoAction(function() { oController.selectedObjects.forEach(function(shape) { let field = shape.GetEditField(); if ([AscPDF.FIELD_TYPES.combobox, AscPDF.FIELD_TYPES.listbox].includes(field.GetType())) { field.SetCommitOnSelChange(bValue); } }); return true; }, AscDFH.historydescription_Pdf_ChangeField); }; // combobox PDFEditorApi.prototype.SetComboboxFieldEditable = function(bValue) { let oDoc = this.getPDFDoc(); let oController = oDoc.GetController(); let oForm = oDoc.activeForm; if (!oForm) { return false; } return oDoc.DoAction(function() { oController.selectedObjects.forEach(function(shape) { let field = shape.GetEditField(); if (AscPDF.FIELD_TYPES.combobox == field.GetType()) { field.SetEditable(bValue); } }); return true; }, AscDFH.historydescription_Pdf_ChangeField); }; // listbox PDFEditorApi.prototype.SetListboxFieldMultiSelect = function(bValue) { let oDoc = this.getPDFDoc(); let oController = oDoc.GetController(); let oForm = oDoc.activeForm; if (!oForm) { return false; } return oDoc.DoAction(function() { oController.selectedObjects.forEach(function(shape) { let field = shape.GetEditField(); if (AscPDF.FIELD_TYPES.listbox == field.GetType()) { field.SetMultipleSelection(bValue); } }); return true; }, AscDFH.historydescription_Pdf_ChangeField); }; // checkbox PDFEditorApi.prototype.SetCheckboxFieldStyle = function(nStyle) { let oDoc = this.getPDFDoc(); let oController = oDoc.GetController(); let oForm = oDoc.activeForm; if (!oForm) { return false; } return oDoc.DoAction(function() { oController.selectedObjects.forEach(function(shape) { let field = shape.GetEditField(); if ([AscPDF.FIELD_TYPES.checkbox, AscPDF.FIELD_TYPES.radiobutton].includes(field.GetType())) { field.SetStyle(nStyle); } }); return true; }, AscDFH.historydescription_Pdf_ChangeField); }; PDFEditorApi.prototype.SetCheckboxFieldExportValue = function(sValue) { let oDoc = this.getPDFDoc(); let oController = oDoc.GetController(); let oForm = oDoc.activeForm; if (!oForm) { return false; } // call update interface to get asc selected elemets if (!sValue) { oDoc.UpdateInterface(); return false; } return oDoc.DoAction(function() { oController.selectedObjects.forEach(function(shape) { let field = shape.GetEditField(); if ([AscPDF.FIELD_TYPES.checkbox, AscPDF.FIELD_TYPES.radiobutton].includes(field.GetType())) { field.SetExportValue(sValue); } }); return true; }, AscDFH.historydescription_Pdf_ChangeField); }; PDFEditorApi.prototype.SetCheckboxFieldToggleToOff = function(bValue) { let oDoc = this.getPDFDoc(); let oController = oDoc.GetController(); let oForm = oDoc.activeForm; if (!oForm) { return false; } return oDoc.DoAction(function() { oController.selectedObjects.forEach(function(shape) { let field = shape.GetEditField(); if ([AscPDF.FIELD_TYPES.checkbox, AscPDF.FIELD_TYPES.radiobutton].includes(field.GetType())) { field.SetNoToggleToOff(!bValue); } }); return true; }, AscDFH.historydescription_Pdf_ChangeField); }; // radiobutton PDFEditorApi.prototype.SetRadioFieldInUnison = function(bValue) { let oDoc = this.getPDFDoc(); let oController = oDoc.GetController(); let oForm = oDoc.activeForm; if (!oForm) { return false; } return oDoc.DoAction(function() { oController.selectedObjects.forEach(function(shape) { let field = shape.GetEditField(); if (AscPDF.FIELD_TYPES.radiobutton == field.GetType()) { field.SetRadiosInUnison(bValue); field.GetKid(0).UpdateAll(); } }); return true; }, AscDFH.historydescription_Pdf_ChangeField); }; // pushbutton PDFEditorApi.prototype.SetButtonFieldLayout = function(nType) { let oDoc = this.getPDFDoc(); let oController = oDoc.GetController(); let oForm = oDoc.activeForm; if (!oForm) { return false; } return oDoc.DoAction(function() { oController.selectedObjects.forEach(function(shape) { let field = shape.GetEditField(); if (AscPDF.FIELD_TYPES.button == field.GetType()) { field.SetLayout(nType); } }); return true; }, AscDFH.historydescription_Pdf_ChangeField); }; PDFEditorApi.prototype.SetButtonFieldScaleWhen = function(nType) { let oDoc = this.getPDFDoc(); let oController = oDoc.GetController(); let oForm = oDoc.activeForm; if (!oForm) { return false; } return oDoc.DoAction(function() { oController.selectedObjects.forEach(function(shape) { let field = shape.GetEditField(); if (AscPDF.FIELD_TYPES.button == field.GetType()) { field.SetScaleWhen(nType); } }); return true; }, AscDFH.historydescription_Pdf_ChangeField); }; PDFEditorApi.prototype.SetButtonFieldScaleHow = function(nType) { let oDoc = this.getPDFDoc(); let oController = oDoc.GetController(); let oForm = oDoc.activeForm; if (!oForm) { return false; } return oDoc.DoAction(function() { oController.selectedObjects.forEach(function(shape) { let field = shape.GetEditField(); if (AscPDF.FIELD_TYPES.button == field.GetType()) { field.SetScaleHow(nType); } }); return true; }, AscDFH.historydescription_Pdf_ChangeField); }; PDFEditorApi.prototype.SetButtonFieldFitBounds = function(bValue) { let oDoc = this.getPDFDoc(); let oController = oDoc.GetController(); let oForm = oDoc.activeForm; if (!oForm) { return false; } return oDoc.DoAction(function() { oController.selectedObjects.forEach(function(shape) { let field = shape.GetEditField(); if (AscPDF.FIELD_TYPES.button == field.GetType()) { field.SetButtonFitBounds(bValue); } }); return true; }, AscDFH.historydescription_Pdf_ChangeField); }; PDFEditorApi.prototype.SetButtonFieldIconPos = function(X, Y) { let oDoc = this.getPDFDoc(); let oController = oDoc.GetController(); let oForm = oDoc.activeForm; if (!oForm) { return false; } return oDoc.DoAction(function() { oController.selectedObjects.forEach(function(shape) { let field = shape.GetEditField(); if (AscPDF.FIELD_TYPES.button == field.GetType()) { field.SetIconPosition(X, Y); } }); return true; }, AscDFH.historydescription_Pdf_ChangeField); }; PDFEditorApi.prototype.SetButtonFieldBehavior = function(nType) { let oDoc = this.getPDFDoc(); let oController = oDoc.GetController(); let oForm = oDoc.activeForm; if (!oForm) { return false; } return oDoc.DoAction(function() { oController.selectedObjects.forEach(function(shape) { let field = shape.GetEditField(); if (AscPDF.FIELD_TYPES.button == field.GetType()) { field.SetHighlight(nType); } }); return true; }, AscDFH.historydescription_Pdf_ChangeField); }; PDFEditorApi.prototype.SetButtonFieldLabel = function(sLabel, nType) { let oDoc = this.getPDFDoc(); let oController = oDoc.GetController(); let oForm = oDoc.activeForm; if (!oForm) { return false; } return oDoc.DoAction(function() { oController.selectedObjects.forEach(function(shape) { let field = shape.GetEditField(); if (AscPDF.FIELD_TYPES.button == field.GetType()) { field.SetCaption(sLabel, nType); } }); return true; }, AscDFH.historydescription_Pdf_ChangeField); }; PDFEditorApi.prototype.ClearButtonFieldImage = function(nState) { let oDoc = this.getPDFDoc(); let oController = oDoc.GetController(); let oForm = oDoc.activeForm; if (!oForm) { return false; } return oDoc.DoAction(function() { oController.selectedObjects.forEach(function(shape) { let field = shape.GetEditField(); if (AscPDF.FIELD_TYPES.button == field.GetType()) { field.SetImageRasterId('', nState); if (nState == AscPDF.APPEARANCE_TYPES.normal) { field.SetImage(''); } } }); return true; }, AscDFH.historydescription_Pdf_ChangeField); }; ///////////////////////////////////////////////////////////// ///////// For drawings //////////////////////////////////////////////////////////// PDFEditorApi.prototype.StartAddShape = function(sPreset, is_apply) { let oDoc = this.getPDFDoc(); let oDrDoc = oDoc.GetDrawingDocument(); this.stopInkDrawer(); this.cancelEyedropper(); oDoc.BlurActiveObject(); this.isStartAddShape = true; this.isStartAddAnnot = false; this.addShapePreset = sPreset; if (is_apply) { oDrDoc.LockCursorType("crosshair"); } else { this.sync_EndAddShape(); this.sync_StartAddShapeCallback(false); } }; PDFEditorApi.prototype.ShapeApply = function(prop) { let oDoc = this.getPDFDoc(); let oDrDoc = oDoc.GetDrawingDocument(); // нужно определить, картинка это или нет let image_url = ""; let sToken = undefined; prop.Width = prop.w; prop.Height = prop.h; let bShapeTexture = true; if (prop.fill != null) { if (prop.fill.fill != null && prop.fill.type == Asc.c_oAscFill.FILL_TYPE_BLIP) { image_url = prop.fill.fill.asc_getUrl(); sToken = prop.fill.fill.token; let _tx_id = prop.fill.fill.asc_getTextureId(); if (null != _tx_id && 0 <= _tx_id && _tx_id < AscCommon.g_oUserTexturePresets.length) { image_url = AscCommon.g_oUserTexturePresets[_tx_id]; } } } let oFill; if (prop.textArtProperties) { oFill = prop.textArtProperties.asc_getFill(); if (oFill && oFill.fill != null && oFill.type == Asc.c_oAscFill.FILL_TYPE_BLIP) { image_url = oFill.fill.asc_getUrl(); sToken = oFill.fill.token; let _tx_id = oFill.fill.asc_getTextureId(); if (null != _tx_id && 0 <= _tx_id && _tx_id < AscCommon.g_oUserTexturePresets.length) { image_url = AscCommon.g_oUserTexturePresets[_tx_id]; } bShapeTexture = false; } } if (!AscCommon.isNullOrEmptyString(image_url)) { let sImageUrl = null; if (!AscCommon.g_oDocumentUrls.getImageLocal(image_url)) { sImageUrl = image_url; } let oApi = this; let fApplyCallback = function() { let _image = oApi.ImageLoader.LoadImage(image_url, 1); let srcLocal = AscCommon.g_oDocumentUrls.getImageLocal(image_url); if (srcLocal) { image_url = srcLocal; } if (bShapeTexture) { prop.fill.fill.asc_putUrl(image_url); // erase documentUrl } else { oFill.fill.asc_putUrl(image_url); } if (null != _image || window["NATIVE_EDITOR_ENJINE"]) { oDoc.ShapeApply(prop); if (bShapeTexture) { oDrDoc.DrawImageTextureFillShape(image_url); } else { oDrDoc.DrawImageTextureFillTextArt(image_url); } } else { oApi.sync_StartAction(Asc.c_oAscAsyncActionType.Information, Asc.c_oAscAsyncAction.LoadImage); let oProp = prop; oApi.asyncImageEndLoaded2 = function(_image) { oDoc.ShapeApply(oProp); oDrDoc.DrawImageTextureFillShape(image_url); oApi.sync_EndAction(Asc.c_oAscAsyncActionType.Information, Asc.c_oAscAsyncAction.LoadImage); oApi.asyncImageEndLoaded2 = null; } } }; if (!sImageUrl) { fApplyCallback(); } else { if (window["AscDesktopEditor"] && window["AscDesktopEditor"]["IsLocalFile"]()) { image_url = window["AscDesktopEditor"]["LocalFileGetImageUrl"](sImageUrl); image_url = AscCommon.g_oDocumentUrls.getImageUrl(image_url); fApplyCallback(); return; } AscCommon.sendImgUrls(this, [sImageUrl], function(data) { if (data && data[0] && data[0].url !== "error") { image_url = data[0].url; fApplyCallback(); } }, undefined, sToken); } } else { oDoc.ShapeApply(prop); } }; PDFEditorApi.prototype.ChangeShapeType = function(sShapetype) { let oDoc = this.getPDFDoc(); oDoc.ChangeShapeType(sShapetype); }; PDFEditorApi.prototype.ImgApply = function(obj) { let oDoc = this.getPDFDoc(); let ImagePr = {}; ImagePr.lockAspect = obj.lockAspect; ImagePr.Width = null === obj.Width || undefined === obj.Width ? null : parseFloat(obj.Width); ImagePr.Height = null === obj.Height || undefined === obj.Height ? null : parseFloat(obj.Height); ImagePr.title = obj.title; ImagePr.bSetOriginalSize = obj.bSetOriginalSize; ImagePr.description = obj.description; ImagePr.name = obj.name; ImagePr.rot = obj.rot; ImagePr.rotAdd = obj.rotAdd; ImagePr.flipH = obj.flipH; ImagePr.flipV = obj.flipV; ImagePr.flipHInvert = obj.flipHInvert; ImagePr.flipVInvert = obj.flipVInvert; ImagePr.resetCrop = obj.resetCrop; ImagePr.transparent = obj.transparent; if (undefined != obj.Position) { ImagePr.Position = { X : null === obj.Position.X || undefined === obj.Position.X ? null : parseFloat(obj.Position.X), Y : null === obj.Position.Y || undefined === obj.Position.Y ? null : parseFloat(obj.Position.Y) }; } else { ImagePr.Position = {X : null, Y : null}; } ImagePr.ImageUrl = obj.ImageUrl; if (window["NATIVE_EDITOR_ENJINE"]) { oDoc.SetImageProps(ImagePr); return; } if (!AscCommon.isNullOrEmptyString(ImagePr.ImageUrl)) { let sImageUrl = null, sToken = undefined; if (!AscCommon.g_oDocumentUrls.getImageLocal(ImagePr.ImageUrl)) { sImageUrl = ImagePr.ImageUrl; sToken = obj.Token; } let oApi = this; let fApplyCallback = function() { let _img = oApi.ImageLoader.LoadImage(ImagePr.ImageUrl, 1); let srcLocal = AscCommon.g_oDocumentUrls.getImageLocal(ImagePr.ImageUrl); if (srcLocal) { ImagePr.ImageUrl = srcLocal; } if (null != _img) { oDoc.SetImageProps(ImagePr); } else { oApi.asyncImageEndLoaded2 = function(_image) { oDoc.SetImageProps(ImagePr); oApi.asyncImageEndLoaded2 = null; } } }; if (!sImageUrl) { fApplyCallback(); } else { if (window["AscDesktopEditor"] && window["AscDesktopEditor"]["IsLocalFile"]()) { this.sync_StartAction(Asc.c_oAscAsyncActionType.BlockInteraction, Asc.c_oAscAsyncAction.UploadImage); let _url = window["AscDesktopEditor"]["LocalFileGetImageUrl"](sImageUrl); _url = AscCommon.g_oDocumentUrls.getImageUrl(_url); ImagePr.ImageUrl = _url; fApplyCallback(); this.sync_EndAction(Asc.c_oAscAsyncActionType.BlockInteraction, Asc.c_oAscAsyncAction.UploadImage); return; } AscCommon.sendImgUrls(this, [sImageUrl], function(data) { if (data && data[0] && data[0].url !== "error") { ImagePr.ImageUrl = data[0].url; fApplyCallback(); } }, undefined, sToken); } } else { ImagePr.ImageUrl = null; oDoc.SetImageProps(ImagePr); } }; PDFEditorApi.prototype.asc_FitImagesToPage = function() { let oDoc = this.getPDFDoc(); oDoc.FitImagesToPage(); }; // annots PDFEditorApi.prototype.SetAnnotFillColor = function(r, g, b) { let oDoc = this.getPDFDoc(); let oController = oDoc.GetController(); let oMouseDownAnnot = oDoc.mouseDownAnnot; if (!oMouseDownAnnot) { return false; } let aColor = [r / 255, g / 255, b / 255]; return oDoc.DoAction(function() { oController.selectedObjects.forEach(function(annot) { if (annot.IsAnnot()) { annot.SetFillColor(aColor); } }); return true; }, AscDFH.historydescription_Pdf_ChangeAnnot); }; PDFEditorApi.prototype.GetAnnotFillColor = function() { let oDoc = this.getPDFDoc(); let oMouseDownAnnot = oDoc.mouseDownAnnot; if (!oMouseDownAnnot) { return null; } let oColor = oMouseDownAnnot.GetRGBColor(oMouseDownAnnot.GetFillColor()); oColor["r"] = oColor.r; oColor["g"] = oColor.g; oColor["b"] = oColor.b; return oColor; }; PDFEditorApi.prototype.SetAnnotStrokeColor = function(r, g, b) { let oDoc = this.getPDFDoc(); let oController = oDoc.GetController(); let oMouseDownAnnot = oDoc.mouseDownAnnot; if (!oMouseDownAnnot) { return false; } let aColor = [r / 255, g / 255, b / 255]; return oDoc.DoAction(function() { oController.selectedObjects.forEach(function(annot) { if (annot.IsAnnot()) { if (annot.IsRedact()) { annot.SetFillColor(aColor); } else { annot.SetStrokeColor(aColor); } } }); return true; }, AscDFH.historydescription_Pdf_ChangeAnnot); }; PDFEditorApi.prototype.GetAnnotStrokeColor = function() { let oDoc = this.getPDFDoc(); let oMouseDownAnnot = oDoc.mouseDownAnnot; if (!oMouseDownAnnot) { return null; } let aInnerColor = oMouseDownAnnot.IsRedact() ? oMouseDownAnnot.GetFillColor() : oMouseDownAnnot.GetStrokeColor(); let oColor = oMouseDownAnnot.GetRGBColor(aInnerColor); oColor["r"] = oColor.r; oColor["g"] = oColor.g; oColor["b"] = oColor.b; return oColor; }; PDFEditorApi.prototype.SetAnnotOpacity = function(nValue) { let oDoc = this.getPDFDoc(); let oController = oDoc.GetController(); let oMouseDownAnnot = oDoc.mouseDownAnnot; if (!oMouseDownAnnot) { return false; } return oDoc.DoAction(function() { oController.selectedObjects.forEach(function(annot) { if (annot.IsAnnot()) { annot.SetOpacity(nValue / 100); } }); return true; }, AscDFH.historydescription_Pdf_ChangeAnnot); }; PDFEditorApi.prototype.GetAnnotOpacity = function() { let oDoc = this.getPDFDoc(); let oMouseDownAnnot = oDoc.mouseDownAnnot; if (!oMouseDownAnnot) { return null; } return oMouseDownAnnot.GetOpacity() * 100; }; PDFEditorApi.prototype.SetAnnotStrokeWidth = function(nValue) { let oDoc = this.getPDFDoc(); let oController = oDoc.GetController(); let oMouseDownAnnot = oDoc.mouseDownAnnot; if (!oMouseDownAnnot) { return false; } return oDoc.DoAction(function() { oController.selectedObjects.forEach(function(annot) { if (annot.IsAnnot()) { annot.SetWidth(nValue); } }); return true; }, AscDFH.historydescription_Pdf_ChangeAnnot); }; PDFEditorApi.prototype.SetAnnotStrokeStyle = function(nValue) { let oDoc = this.getPDFDoc(); let oController = oDoc.GetController(); let oMouseDownAnnot = oDoc.mouseDownAnnot; if (!oMouseDownAnnot) { return false; } return oDoc.DoAction(function() { oController.selectedObjects.forEach(function(annot) { if (annot.IsAnnot()) { annot.SetWidth(nValue); } }); return true; }, AscDFH.historydescription_Pdf_ChangeAnnot); }; PDFEditorApi.prototype.SetAnnotLineStart = function(nType) { let oDoc = this.getPDFDoc(); let oController = oDoc.GetController(); let oMouseDownAnnot = oDoc.mouseDownAnnot; if (!oMouseDownAnnot) { return false; } return oDoc.DoAction(function() { oController.selectedObjects.forEach(function(annot) { if (annot.IsAnnot()) { annot.SetLineStart && annot.SetLineStart(nType); } }); return true; }, AscDFH.historydescription_Pdf_ChangeAnnot); }; PDFEditorApi.prototype.SetAnnotLineEnd = function(nType) { let oDoc = this.getPDFDoc(); let oController = oDoc.GetController(); let oMouseDownAnnot = oDoc.mouseDownAnnot; if (!oMouseDownAnnot) { return false; } return oDoc.DoAction(function() { oController.selectedObjects.forEach(function(annot) { if (annot.IsAnnot()) { annot.SetLineEnd && annot.SetLineEnd(nType); } }); return true; }, AscDFH.historydescription_Pdf_ChangeAnnot); }; PDFEditorApi.prototype.asc_CloseFile = function() { AscCommon.History.Clear(); AscCommon.g_oIdCounter.Clear(); AscCommon.g_oTableId.Clear(); AscCommon.CollaborativeEditing.Clear(); this.isApplyChangesOnOpenEnabled = true; this.isDocumentLoadComplete = false; this.ServerImagesWaitComplete = false; this.turnOffSpecialModes(); AscCommon.pptx_content_loader.ImageMapChecker = {}; this.sendEvent("asc_onCloseFile"); }; ///////////////////////////////////////////////////////////// ///////// For table //////////////////////////////////////////////////////////// PDFEditorApi.prototype.put_Table = function(col, row, placeholder, sStyleId) { let oDoc = this.getPDFDoc(); oDoc.DoAction(function() { oDoc.AddTable(col, row, sStyleId, oDoc.GetCurPage()); }, AscDFH.historydescription_Presentation_AddFlowTable, this); }; PDFEditorApi.prototype.tblApply = function(oPr) { let oDoc = this.getPDFDoc(); let oBorders = oPr.CellBorders; if (oPr.CellBorders){ function fCheckBorder(oBorder) { if(!oBorder || !oBorder.Color) return; oBorder.Unifill = AscFormat.CreateUnifillFromAscColor(oBorder.Color, 0); } fCheckBorder(oBorders.Left); fCheckBorder(oBorders.Top); fCheckBorder(oBorders.Right); fCheckBorder(oBorders.Bottom); fCheckBorder(oBorders.InsideH); fCheckBorder(oBorders.InsideV); } let oBackground = oPr.CellsBackground; if (oBackground && oBackground.Color) { if (oBackground.Value === Asc.c_oAscShd.Nil){ oBackground.Value = Asc.c_oAscShd.Clear; oBackground.Unifill = AscFormat.CreateNoFillUniFill(); } else { oBackground.Unifill = AscFormat.CreateUnifillFromAscColor(oBackground.Color, 0); } } oDoc.SetTableProps(oPr); }; PDFEditorApi.prototype.asc_DistributeTableCells = function(isHorizontally) { let oDoc = this.getPDFDoc(); let bResult = false; bResult = oDoc.DistributeTableCells(isHorizontally); return bResult; }; PDFEditorApi.prototype.remColumn = function() { let oDoc = this.getPDFDoc(); oDoc.RemoveTableColumn(); return true; }; PDFEditorApi.prototype.remTable = function() { let oDoc = this.getPDFDoc(); let oObject = oDoc.GetActiveObject(); if (oObject && oObject.IsDrawing() && oObject.IsGraphicFrame()) { oDoc.CreateNewHistoryPoint(); oDoc.RemoveDrawing(oObject.GetId()); oDoc.TurnOffHistory(); return true; } return false; }; PDFEditorApi.prototype.asc_getTableStylesPreviews = function(bUseDefault, arrIds) { let oDoc = this.getPDFDoc(); this.private_CheckTableStylesPreviewGenerator(); let arrPreviews = []; if (arrIds && arrIds.length) { let oStylesList = oDoc.GetTableStyles(); for (let nIndex = 0, nCount = arrIds.length; nIndex < nCount; ++nIndex) { let oStyle = oStylesList.Get(arrIds[nIndex]); let oPreview = this.TableStylesPreviewGenerator.GetPreview(oStyle); if (oPreview) arrPreviews.push(oPreview); } } else { arrPreviews = this.TableStylesPreviewGenerator.GetAllPreviews(bUseDefault); } return arrPreviews; }; PDFEditorApi.prototype.asc_GetSelectionBounds = function() { return [[0,0], [0,0], [0,0], [0,0]]; }; PDFEditorApi.prototype.getPluginContextMenuInfo = function () { let oDoc = this.getPDFDoc(); let oController = oDoc.GetController(); return oController.getPluginSelectionInfo(); }; PDFEditorApi.prototype.SetShowTextSelectPanel = function(bShow) { this.showTextSelectPanel = bShow; this.getPDFDoc().UpdateSelectionTrackPos(); }; PDFEditorApi.prototype.NeedShowTextSelectPanel = function() { return this.showTextSelectPanel; }; ///////////////////////////////////////////////////////////// ///////// For text //////////////////////////////////////////////////////////// PDFEditorApi.prototype.put_TextPrBold = function(value) { this.getPDFDoc().AddToParagraph(new AscCommonWord.ParaTextPr({Bold : value})); }; PDFEditorApi.prototype.put_TextPrItalic = function(value) { this.getPDFDoc().AddToParagraph(new AscCommonWord.ParaTextPr({Italic : value})); }; PDFEditorApi.prototype.put_TextPrUnderline = function(value) { this.getPDFDoc().AddToParagraph(new AscCommonWord.ParaTextPr({Underline : value})); }; PDFEditorApi.prototype.put_TextPrStrikeout = function(value) { this.getPDFDoc().AddToParagraph(new AscCommonWord.ParaTextPr({ Strikeout : value, DStrikeout : false })); }; PDFEditorApi.prototype.put_PrLineSpacing = function(nType, nValue) { this.getPDFDoc().SetParagraphSpacing({LineRule : nType, Line : nValue}); }; PDFEditorApi.prototype.put_LineSpacingBeforeAfter = function(type, value) { //"type == 0" means "Before", "type == 1" means "After" switch (type) { case 0: this.getPDFDoc().SetParagraphSpacing({Before : value}); break; case 1: this.getPDFDoc().SetParagraphSpacing({After : value}); break; } }; PDFEditorApi.prototype.FontSizeIn = function() { this.getPDFDoc().IncreaseDecreaseFontSize(true); }; PDFEditorApi.prototype.FontSizeOut = function() { this.getPDFDoc().IncreaseDecreaseFontSize(false); }; // 0- baseline, 2-subscript, 1-superscript PDFEditorApi.prototype.put_TextPrBaseline = function(value) { this.getPDFDoc().AddToParagraph(new AscCommonWord.ParaTextPr({VertAlign : value})); }; PDFEditorApi.prototype.put_TextPrFontSize = function(size) { this.getPDFDoc().AddToParagraph(new AscCommonWord.ParaTextPr({FontSize : Math.min(size, 300)})); }; PDFEditorApi.prototype.put_TextPrFontName = function(name) { var loader = AscCommon.g_font_loader; var fontinfo = AscFonts.g_fontApplication.GetFontInfo(name); var isasync = loader.LoadFont(fontinfo); if (false === isasync) { this.getPDFDoc().AddToParagraph(new AscCommonWord.ParaTextPr({ FontFamily : { Name : name, Index : -1 } })); } }; PDFEditorApi.prototype.put_TextColor = function(color) { var _unifill = new AscFormat.CUniFill(); _unifill.fill = new AscFormat.CSolidFill(); _unifill.fill.color = AscFormat.CorrectUniColor(color, _unifill.fill.color, 0); this.getPDFDoc().AddToParagraph(new AscCommonWord.ParaTextPr({Unifill : _unifill}), false); }; PDFEditorApi.prototype.asc_ChangeTextCase = function(nType) { this.getPDFDoc().ChangeTextCase(nType); }; PDFEditorApi.prototype.put_PrAlign = function(nType) { this.getPDFDoc().SetParagraphAlign(nType); }; PDFEditorApi.prototype.asc_setRtlTextDirection = function(isRtl) { this.getPDFDoc().SetParagraphBidi(isRtl); }; PDFEditorApi.prototype.asc_isRtlTextDirection = function() { let textController = this.getPDFDoc().getTextController(); let docContent = textController ? textController.GetDocContent() : null; let paragraph = docContent ? docContent.GetCurrentParagraph() : null; return paragraph ? paragraph.isRtlDirection() : false; }; PDFEditorApi.prototype.setVerticalAlign = function(nType) { this.getPDFDoc().SetVerticalAlign(nType); }; PDFEditorApi.prototype.IncreaseIndent = function() { this.getPDFDoc().IncreaseDecreaseIndent(true); }; PDFEditorApi.prototype.DecreaseIndent = function(){ this.getPDFDoc().IncreaseDecreaseIndent(false); }; PDFEditorApi.prototype.ClearFormating = function() { this.getPDFDoc().ClearParagraphFormatting(false, true); }; PDFEditorApi.prototype.UpdateParagraphProp = function(oParaPr) { let oDoc = this.getPDFDoc(); let TextPr = oDoc.GetCalculatedTextPr(true); let oDrawingProps = oDoc.Get_GraphicObjectsProps(); if (oDrawingProps.shapeProps && oDrawingProps.shapeProps.locked || oDrawingProps.chartProps && oDrawingProps.chartProps.locked || oDrawingProps.tableProps && oDrawingProps.tableProps.Locked) { oParaPr.Locked = true; } let oActiveObj = oDoc.GetActiveObject(); if (oActiveObj) { let oPageInfo = oDoc.GetPageInfo(oActiveObj.GetPage()); if (oPageInfo.IsDeleteLock()) { oParaPr.Locked = true; } } oParaPr.Subscript = ( TextPr.VertAlign === AscCommon.vertalign_SubScript ? true : false ); oParaPr.Superscript = ( TextPr.VertAlign === AscCommon.vertalign_SuperScript ? true : false ); oParaPr.Strikeout = TextPr.Strikeout; oParaPr.DStrikeout = TextPr.DStrikeout; oParaPr.AllCaps = TextPr.Caps; oParaPr.SmallCaps = TextPr.SmallCaps; oParaPr.TextSpacing = TextPr.Spacing; oParaPr.Position = TextPr.Position; oParaPr.ListType = AscFormat.fGetListTypeFromBullet(oParaPr.Bullet); let bidi = oParaPr.Bidi; if (undefined === bidi) { let paragraph = oDoc.GetCurrentParagraph(false, false, {FirstInSelection : true}); bidi = paragraph ? paragraph.GetParagraphBidi() : undefined; } this.sendEvent("asc_onTextDirection", bidi); this.sync_ParaSpacingLine(oParaPr.Spacing); this.Update_ParaInd(oParaPr.Ind, false); this.sync_PrAlignCallBack(oParaPr.Jc); this.sync_ParaStyleName(oParaPr.StyleName); this.sync_ListType(oParaPr.ListType); this.sync_PrPropCallback(oParaPr); }; PDFEditorApi.prototype.paraApply = function(Props) { let oDoc = this.getPDFDoc(); let oController = oDoc.GetController(); let sLoadFont = null, sLoadText = null; let fCallback = function() { oController.paraApplyCallback(Props); }; let oBullet = Props.asc_getBullet(); if (oBullet) { sLoadFont = oBullet.asc_getFont(); sLoadText = oBullet.asc_getSymbol(); } if (typeof sLoadFont === "string" && sLoadFont.length > 0 && typeof sLoadText === "string" && sLoadText.length > 0) { let loader = AscCommon.g_font_loader; let fontinfo = AscFonts.g_fontApplication.GetFontInfo(sLoadFont); let isasync = loader.LoadFont(fontinfo); if (false === isasync) { AscFonts.FontPickerByCharacter.checkText(sLoadText, this, function () { oController.checkSelectedObjectsAndCallback(fCallback, [], false, AscDFH.historydescription_Presentation_ParaApply); }); } else { this.asyncMethodCallback = function() { AscFonts.FontPickerByCharacter.checkText(sLoadText, this, function () { oController.checkSelectedObjectsAndCallback(fCallback, [], false, AscDFH.historydescription_Presentation_ParaApply); }); } } } else { oController.checkSelectedObjectsAndCallback(fCallback, [], false, AscDFH.historydescription_Presentation_ParaApply); } }; ///////////////////////////////////////////////////////////// ///////// For text //////////////////////////////////////////////////////////// PDFEditorApi.prototype.sync_ListType = function(NumPr) { this.sendEvent("asc_onListType", new AscCommon.asc_CListType(NumPr)); }; PDFEditorApi.prototype.ParseBulletPreviewInformation = function(arrDrawingInfo) { const arrNumberingLvls = []; AscFormat.ExecuteNoHistory(function () { for (let i = 0; i < arrDrawingInfo.length; i += 1) { const oDrawInfo = arrDrawingInfo[i]; const oNumberingInfo = oDrawInfo["numberingInfo"]; if (!oNumberingInfo) continue; const sDivId = oDrawInfo["divId"]; if (!oNumberingInfo["bullet"]) { const oPresentationBullet = new AscCommonWord.CPresentationBullet(); const oTextPr = new AscCommonWord.CTextPr(); oPresentationBullet.m_sChar = AscCommon.translateManager.getValue("None"); oPresentationBullet.m_nType = AscFormat.numbering_presentationnumfrmt_Char; oPresentationBullet.m_bFontTx = false; oPresentationBullet.m_sFont = "Arial"; oTextPr.Unifill = AscFormat.CreateSolidFillRGB(0, 0, 0); oTextPr.FontSize = oTextPr.FontSizeCS = 65; oPresentationBullet.MergeTextPr(oTextPr); arrNumberingLvls.push({divId: sDivId, arrLvls: [oPresentationBullet], isRemoving: true}); } else { const oBullet = window['AscJsonConverter'].ReaderFromJSON.prototype.BulletFromJSON(oNumberingInfo["bullet"]); const oPresentationBullet = oBullet.getPresentationBullet(AscFormat.GetDefaultTheme(), AscFormat.GetDefaultColorMap()); oPresentationBullet.m_bFontTx = false; const oTextPr = new AscCommonWord.CTextPr(); oTextPr.Unifill = AscFormat.CreateSolidFillRGB(0, 0, 0); oTextPr.FontSize = oTextPr.FontSizeCS = 65; oPresentationBullet.MergeTextPr(oTextPr); arrNumberingLvls.push({divId: sDivId, arrLvls: [oPresentationBullet]}); } } }, this); return arrNumberingLvls; }; PDFEditorApi.prototype.put_ListType = function(type, subtype, custom) { let blipUrl = custom && custom.imageId; if (blipUrl) { let checkImageUrlFromServer; let that = this; let localUrl = AscCommon.g_oDocumentUrls.getLocal(blipUrl); let fullUrl = AscCommon.g_oDocumentUrls.getUrl(blipUrl); if (fullUrl) { checkImageUrlFromServer = fullUrl; } else if (localUrl) { checkImageUrlFromServer = blipUrl; } if (checkImageUrlFromServer) { blipUrl = checkImageUrlFromServer; custom.imageId = blipUrl; let isImageNotAttendInImageLoader = !this.ImageLoader.map_image_index[blipUrl]; if (isImageNotAttendInImageLoader) { let tryToSetImageBulletAgain = function () { that.put_ListType(type, subtype, custom); } this.ImageLoader.LoadImagesWithCallback([blipUrl], tryToSetImageBulletAgain); return; } } else { let changeBlipFillUrlToLocalAndTrySetImageBulletAgain = function (data) { let uploadImageUrl = data[0].url; custom.imageId = uploadImageUrl; that.put_ListType(type, subtype, custom); } AscCommon.sendImgUrls(this, [blipUrl], changeBlipFillUrlToLocalAndTrySetImageBulletAgain, false, custom.token); return; } } let oDoc = this.getPDFDoc(); let NumberInfo = { Type: type, SubType: subtype, Custom: custom }; let oBullet = AscFormat.fGetPresentationBulletByNumInfo(NumberInfo); let sBullet = oBullet.asc_getSymbol(); let fCallback = function() { oDoc.SetParagraphNumbering(oBullet); }; if(typeof sBullet === "string" && sBullet.length > 0) { AscFonts.FontPickerByCharacter.checkText(sBullet, this, fCallback); } else { fCallback(); } }; PDFEditorApi.prototype.asc_GetPossibleNumberingLanguage = function(){}; PDFEditorApi.prototype._addImageUrl = function(arrUrls, oOptionObject) { let oDoc = this.getPDFDoc(); if (oOptionObject) { if (oOptionObject.sendUrlsToFrameEditor && this.isOpenedChartFrame) { this.addImageUrlsFromGeneralToFrameEditor(arrUrls); return; } else if (oOptionObject.isImageChangeUrl || oOptionObject.isTextArtChangeUrl || oOptionObject.isShapeImageChangeUrl || oOptionObject["obj"] || (oOptionObject instanceof AscCommon.CContentControlPr && oOptionObject.GetInternalId()) || oOptionObject.fAfterUploadOleObjectImage) { this.AddImageUrlAction(arrUrls[0], undefined, oOptionObject); return; } } if (this.ImageLoader) { const oApi = this; this.ImageLoader.LoadImagesWithCallback(arrUrls, function() { if (oOptionObject) { const oImage = oApi.ImageLoader.LoadImage(arrUrls[0], 1); if (!oImage || !oImage.Image) { return; } if (Array.isArray(oOptionObject)) { oOptionObject.forEach(function(buttonField) { buttonField.AddImage(oImage, buttonField.asc_curImageState); }); return; } else if (oOptionObject.GetType && oOptionObject.GetType() === AscPDF.FIELD_TYPES.button) { oOptionObject.AddImage(oImage, oOptionObject.asc_curImageState); return; } else if (oOptionObject.isStamp) { oDoc.AddStampAnnot(AscPDF.STAMP_TYPES.Image, oDoc.Viewer.currentPage, oImage); return; } } const arrImages = []; for (let i = 0; i < arrUrls.length; ++i) { const oImage = oApi.ImageLoader.LoadImage(arrUrls[i], 1); if (oImage.Image) { arrImages.push(oImage); } } if (arrImages.length) { oDoc.DoAction(function() { oDoc.AddImages(arrImages, oOptionObject); }, AscDFH.historydescription_Presentation_AddFlowImage) } }, []); } }; PDFEditorApi.prototype.Paste = function(isPastePageBefore) { if (AscCommon.g_clipboardBase.IsWorking()) return false; this.pastePageBefore = isPastePageBefore; return AscCommon.g_clipboardBase.Button_Paste(); }; PDFEditorApi.prototype.asc_setSkin = function(theme) { AscCommon.updateGlobalSkin(theme); if (this.isUseNativeViewer) { if (this.WordControl && this.WordControl.m_oDrawingDocument && this.WordControl.m_oDrawingDocument.m_oDocumentRenderer) { this.WordControl.m_oDrawingDocument.m_oDocumentRenderer.updateSkin(); } } if (this.WordControl && this.WordControl.m_oBody) { this.WordControl.OnResize(true); if (this.WordControl.m_oEditor && this.WordControl.m_oEditor.HtmlElement) { this.WordControl.m_oEditor.HtmlElement.fullRepaint = true; this.WordControl.OnScroll(); } } }; PDFEditorApi.prototype.asc_SetTextFormDatePickerDate = function(oPr) { let oDoc = this.getPDFDoc(); let oActiveForm = oDoc.activeForm; if (!oActiveForm) return; let oDate = new Asc.cDate(oPr.GetFullDate()); let oCurDate = new Date(); oDate.setMinutes(oCurDate.getMinutes()); oDate.setSeconds(oCurDate.getSeconds()); oDate.getMilliseconds(oCurDate.getMilliseconds()); oActiveForm.content.SelectAll(); oActiveForm.EnterText(AscWord.CTextFormFormat.prototype.GetBuffer(AscPDF.FormatDateValue(oDate.getTime(), oActiveForm.GetDateFormat()))); oDoc.EnterDownActiveField(); }; PDFEditorApi.prototype.asc_SelectPDFFormListItem = function(sId) { let oViewer = this.DocumentRenderer; let oDoc = oViewer.getPDFDoc(); let oField = oDoc.activeForm; let nIdx = parseInt(sId); if (!oField) return; oDoc.DoAction(function() { oField.SelectOption(nIdx); if (oField.IsCommitOnSelChange() && oField.IsNeedCommit()) { oDoc.EnterDownActiveField(); } }, AscDFH.historydescription_Pdf_FieldSelectOption, this); }; PDFEditorApi.prototype.SetDrawingFreeze = function(bIsFreeze) { if (!this.WordControl) return; this.WordControl.DrawingFreeze = bIsFreeze; var elem = document.getElementById("id_main"); if (elem) { if (bIsFreeze) { elem.style.display = "none"; } else { elem.style.display = "block"; } } if (!bIsFreeze) this.WordControl.OnScroll(); }; PDFEditorApi.prototype.SetDocumentModified = function(bValue) { this.isDocumentModify = bValue; this.sendEvent("asc_onDocumentModifiedChanged"); if (undefined !== window["AscDesktopEditor"]) { window["AscDesktopEditor"]["onDocumentModifiedChanged"](bValue); } }; PDFEditorApi.prototype.CheckChangedDocument = function() { let oDoc = this.getPDFDoc(); if (true === AscCommon.History.Have_Changes() || true === oDoc.History.Have_Changes()) { this.SetDocumentModified(true); } else { this.SetDocumentModified(false); } this._onUpdateDocumentCanSave(); }; PDFEditorApi.prototype._autoSaveInner = function() { let _curTime = new Date(); let oDoc = this.getPDFDoc(); let oHistory = oDoc.History; if (null === this.lastSaveTime) { this.lastSaveTime = _curTime; } if (AscCommon.CollaborativeEditing.Is_Fast() && !AscCommon.CollaborativeEditing.Is_SingleUser()) { this.WordControl.m_oLogicDocument.Continue_FastCollaborativeEditing(); } else if (this.isLiveViewer()) { if (AscCommon.CollaborativeEditing.Have_OtherChanges()) { AscCommon.CollaborativeEditing.Apply_Changes(); } } else { let _bIsWaitScheme = false; if (oHistory.Points && oHistory.Index >= 0 && oHistory.Index < oHistory.Points.length) { if ((_curTime - oHistory.Points[oHistory.Index].Time) < this.intervalWaitAutoSave) { _bIsWaitScheme = true; } } if (!_bIsWaitScheme) { let _interval = (AscCommon.CollaborativeEditing.m_nUseType <= 0) ? this.autoSaveGapSlow : this.autoSaveGapFast; if ((_curTime - this.lastSaveTime) > _interval) { if (oHistory.Have_Changes(true) == true && oDoc.LocalHistory !== AscCommon.History) { this.asc_Save(true); } this.lastSaveTime = _curTime; } } } }; PDFEditorApi.prototype.asc_Save = function (isAutoSave, isIdle, isResaveAttack) { let oDoc = this.getPDFDoc(); if (!isAutoSave) oDoc.BlurActiveObject(); return AscCommon.DocumentEditorApi.prototype.asc_Save.call(this, isAutoSave, isIdle, isResaveAttack); }; PDFEditorApi.prototype._onEndLoadSdk = function() { AscCommon.DocumentEditorApi.prototype._onEndLoadSdk.call(this); this.stampAnnotPreviewManager = new AscPDF.StampAnnotPreviewManager(); }; PDFEditorApi.prototype.asc_getPropertyEditorStamps = function() { if (this.loadStampsJSON()) { return this.stampAnnotPreviewManager.getStampPreviews(); } return null; }; PDFEditorApi.prototype.loadStampsJSON = function () { try { if (window["native_pdf_stamps"]) { AscPDF.STAMPS_JSON = window["native_pdf_stamps"]; delete window["native_pdf_stamps"]; return true; } if (AscPDF.STAMPS_JSON) { return true; } let sLang = Asc.editor.InterfaceLocale; function applyStamps(dataText, lang) { AscPDF.STAMPS_JSON = JSON.parse(dataText); AscPDF.stampsLocale = lang; // fonts let sText = Asc.editor.User.asc_getUserName(); for (let type in AscPDF.STAMPS_JSON) { AscPDF.STAMPS_JSON[type]['content']['content'].forEach(function(para) { para['content'].forEach(function(run) { run['content'].forEach(function(text) { sText += text; }); }); }); } AscFonts.FontPickerByCharacter.checkText(sText, Asc.editor, function () { Asc.editor.sendEvent('asc_onStampsReady'); }); } function loadLangFileSync(lang) { if (lang.length === 2) { if (lang == 'pt') { lang = lang + '-BR'; } else if (lang == 'zh') { lang = lang + '-CN' } else { lang = lang + '-' + lang.toUpperCase(); } } let xhr = new XMLHttpRequest(); xhr.open("GET", "../../../../sdkjs/pdf/src/annotations/stamps/" + lang + ".json", false); xhr.send(null); if (xhr.status === 200 || location.href.indexOf("file:") === 0) { applyStamps(xhr.responseText, lang); } } try { loadLangFileSync(sLang); } catch (err) {} if (!AscPDF.STAMPS_JSON) { try { loadLangFileSync("en"); } catch (err) {} } } catch (e) {} }; PDFEditorApi.prototype._init = function() { AscCommon.DocumentEditorApi.prototype._init.call(this); }; PDFEditorApi.prototype._coAuthoringInitEnd = function() { AscCommon.DocumentEditorApi.prototype._coAuthoringInitEnd.call(this); let t = this; this.CoAuthoringApi.onConnectionStateChanged = function(e) { if (true === AscCommon.CollaborativeEditing.Is_Fast() && false === e['state']) { t.WordControl.m_oLogicDocument.Remove_ForeignCursor(e['id']); t.DocumentRenderer.onUpdateOverlay(); } t.sendEvent("asc_onConnectionStateChanged", e); }; this.CoAuthoringApi.onLocksAcquired = function(e) { if (t._coAuthoringCheckEndOpenDocument(t.CoAuthoringApi.onLocksAcquired, e)) { return; } let oDoc = t.getPDFDoc(); let oThumbnails = oDoc.GetThumbnails(); if (2 != e["state"]) { let Id = e["block"]; let Class = AscCommon.g_oTableId.Get_ById(Id); if (null != Class) { function updateLock(Class) { let Lock = Class.Lock; if (!Lock) { return; } // Выставляем ID пользователя, залочившего данный элемент Lock.Set_UserId(e["user"]); let OldType = Lock.Get_Type(); if (AscCommon.c_oAscLockTypes.kLockTypeOther2 === OldType || AscCommon.c_oAscLockTypes.kLockTypeOther3 === OldType) { Lock.Set_Type(AscCommon.c_oAscLockTypes.kLockTypeOther3, true); } else { Lock.Set_Type(AscCommon.c_oAscLockTypes.kLockTypeOther, true); } Class.AddToRedraw && Class.AddToRedraw(); } if (Class.IsForm && Class.IsForm()) { let aWidgets = oDoc.GetAllWidgets(Class.GetFullName()); aWidgets.forEach(function(widget) { updateLock(widget); }); } else { updateLock(Class); } if (Class && e["blockValue"]["type"] == AscPDF.AscLockTypeElemPDF.Page) { let oPage = (Class instanceof AscPDF.PropLocker) ? AscCommon.g_oTableId.Get_ById(Class.objectId) : Class; oThumbnails && oThumbnails._repaintPage(oPage.GetIndex()); } if (Class.IsAnnot && Class.IsAnnot()) { // если аннотация коммент или аннотация с комментом то блокируем и комментарий тоже if (Class.IsComment() || (Class.IsUseContentAsComment() && Class.GetContents() != undefined) || Class.GetReply(0) != null) { t.sync_LockComment(Class.Get_Id(), e["user"]); } } oDoc.UpdateInterface(); } else { AscCommon.CollaborativeEditing.Add_NeedLock(Id, e["user"]); } } }; this.CoAuthoringApi.onLocksReleased = function(e, bChanges) { if (t._coAuthoringCheckEndOpenDocument(t.CoAuthoringApi.onLocksReleased, e, bChanges)) { return; } let oDoc = t.getPDFDoc(); let oThumbnails = oDoc.GetThumbnails(); let Id = e["block"]["guid"]; let Class = AscCommon.g_oTableId.Get_ById(Id); if (null != Class) { function updateLock(Class) { let Lock = Class.Lock; if (!Lock) { return; } let CurType = Lock.Get_Type(); let NewType = AscCommon.c_oAscLockTypes.kLockTypeNone; if (CurType === AscCommon.c_oAscLockTypes.kLockTypeOther) { if (true != bChanges) { NewType = AscCommon.c_oAscLockTypes.kLockTypeNone; } else { NewType = AscCommon.c_oAscLockTypes.kLockTypeOther2; AscCommon.CollaborativeEditing.Add_Unlock(Class); } } else if (CurType === AscCommon.c_oAscLockTypes.kLockTypeMine) { // Такого быть не должно NewType = AscCommon.c_oAscLockTypes.kLockTypeMine; } else if (CurType === AscCommon.c_oAscLockTypes.kLockTypeOther2 || CurType === AscCommon.c_oAscLockTypes.kLockTypeOther3) { NewType = AscCommon.c_oAscLockTypes.kLockTypeOther2; } Lock.Set_Type(NewType, true); if (NewType == AscCommon.c_oAscLockTypes.kLockTypeNone) { Class.AddToRedraw && Class.AddToRedraw(); if (Class.IsAnnot && Class.IsAnnot()) { // if annot is comment or annot with comment then release locks for it too if (Class.IsComment() || (Class.IsUseContentAsComment() && Class.GetContents() != undefined) || Class.GetReply(0) != null) { Asc.editor.sync_UnLockComment(Class.Get_Id()); } } } } if (Class.IsForm && Class.IsForm()) { let aWidgets = oDoc.GetAllWidgets(Class.GetFullName()); aWidgets.forEach(function(widget) { updateLock(widget); }); } else { updateLock(Class); } if (Class && e["block"]["type"] == AscPDF.AscLockTypeElemPDF.Page) { let oPage = (Class instanceof AscPDF.PropLocker) ? AscCommon.g_oTableId.Get_ById(Class.objectId) : Class; oThumbnails && oThumbnails._repaintPage(oPage.GetIndex()); } oDoc.UpdateInterface(); } else { AscCommon.CollaborativeEditing.Remove_NeedLock(Id); } }; }; PDFEditorApi.prototype._autoSave = function () { if (this.canSave && (!this.isViewMode || this.isLiveViewer()) && (this.canUnlockDocument || 0 !== this.autoSaveGap || AscCommon.CollaborativeEditing.Is_Fast())) { if (this.canUnlockDocument) { this.lastSaveTime = new Date(); // Check edit mode after unlock document http://bugzilla.onlyoffice.com/show_bug.cgi?id=35971 // Close cell edit without errors (isIdle = true) this.asc_Save(true, true); } else { this._autoSaveInner(); } } }; PDFEditorApi.prototype._haveChanges = function() { let oDoc = this.getPDFDoc(); return oDoc.History.Have_Changes(); }; PDFEditorApi.prototype.pre_Save = function(_images) { this.isSaveFonts_Images = true; this.saveImageMap = _images; this.FontLoader.LoadDocumentFonts2([]); }; PDFEditorApi.prototype.asc_Print = function (options) { let oDoc = this.getPDFDoc(); oDoc.BlurActiveObject(); oDoc.RecalculateAll(); AscCommon.DocumentEditorApi.prototype.asc_Print.call(this, options); }; PDFEditorApi.prototype.asc_drawPrintPreview = function(index) { let oDoc = this.getPDFDoc(); oDoc.BlurActiveObject(); AscCommon.DocumentEditorApi.prototype.asc_drawPrintPreview.call(this, index); }; PDFEditorApi.prototype.initCollaborativeEditing = function() { if (AscCommon.CollaborativeEditing) return; AscCommon.CollaborativeEditing = new AscPDF.CPDFCollaborativeEditing(); }; PDFEditorApi.prototype.ChangeReaderMode = function() {}; PDFEditorApi.prototype.asc_getSelectedDrawingObjectsCount = function() { return this.WordControl.m_oLogicDocument.GetSelectedDrawingObjectsCount(); }; // composite input PDFEditorApi.prototype.Begin_CompositeInput = function() { if (this.compositeInput) return; this.compositeInput = AscPDF.CPDFCompositeInput.begin(this.getPDFDoc()); }; PDFEditorApi.prototype.Add_CompositeText = function(codePoint) { if (!this.compositeInput) return; this.compositeInput.add(codePoint); }; PDFEditorApi.prototype.Remove_CompositeText = function(count) { if (!this.compositeInput) return; this.compositeInput.remove(count); }; PDFEditorApi.prototype.Replace_CompositeText = function(codePoints) { if (!this.compositeInput) return; this.compositeInput.replace(codePoints); }; PDFEditorApi.prototype.Set_CursorPosInCompositeText = function(pos) { if (!this.compositeInput) return; this.compositeInput.setPos(pos); }; PDFEditorApi.prototype.Get_CursorPosInCompositeText = function() { if (!this.compositeInput) return 0; return this.compositeInput.getPos(); }; PDFEditorApi.prototype.Get_MaxCursorPosInCompositeText = function() { if (!this.compositeInput) return 0; return this.compositeInput.getMaxPos(); }; PDFEditorApi.prototype.End_CompositeInput = function() { if (!this.compositeInput) return; this.compositeInput.end(); this.compositeInput = null; }; PDFEditorApi.prototype.getAddedTextOnKeyDown = function() { return []; }; PDFEditorApi.prototype._getActiveForm = function() { let viewer = this.DocumentRenderer; if (!viewer) return null; let pdfDoc = viewer.getPDFDoc(); return pdfDoc.activeForm; }; // for comments PDFEditorApi.prototype.can_AddQuotedComment = function() { return true; }; PDFEditorApi.prototype.asc_addComment = function(AscCommentData) { var oDoc = this.getPDFDoc(); if (!oDoc) return null; let oCommentData = new AscCommon.CCommentData(); oCommentData.Read_FromAscCommentData(AscCommentData); let oComment = oDoc.AddComment(AscCommentData); if (oComment) { return oComment.GetId() } }; PDFEditorApi.prototype.asc_showComments = function() { let oDoc = this.getPDFDoc(); oDoc.HideShowAnnots(false); }; PDFEditorApi.prototype.asc_hideComments = function() { let oDoc = this.getPDFDoc(); oDoc.HideShowAnnots(true); }; PDFEditorApi.prototype.UpdateTextPr = function(TextPr) { let oDoc = this.getPDFDoc(); let oDrDoc = oDoc.GetDrawingDocument(); if ("undefined" != typeof(TextPr)) { if (TextPr.Color !== undefined) { oDrDoc.TargetCursorColor.R = TextPr.Color.r; oDrDoc.TargetCursorColor.G = TextPr.Color.g; oDrDoc.TargetCursorColor.B = TextPr.Color.b; } if (TextPr.Bold === undefined) TextPr.Bold = false; if (TextPr.Italic === undefined) TextPr.Italic = false; if (TextPr.Underline === undefined) TextPr.Underline = false; if (TextPr.Strikeout === undefined) TextPr.Strikeout = false; if (TextPr.FontFamily === undefined) TextPr.FontFamily = {Index : 0, Name : ""}; if (TextPr.FontSize === undefined) TextPr.FontSize = ""; this.sync_BoldCallBack(TextPr.Bold); this.sync_ItalicCallBack(TextPr.Italic); this.sync_UnderlineCallBack(TextPr.Underline); this.sync_StrikeoutCallBack(TextPr.Strikeout); this.sync_TextPrFontSizeCallBack(TextPr.FontSize); this.sync_TextPrFontFamilyCallBack(TextPr.FontFamily); if (TextPr.VertAlign !== undefined) this.sync_VerticalAlign(TextPr.VertAlign); if (TextPr.Spacing !== undefined) this.sync_TextSpacing(TextPr.Spacing); if (TextPr.DStrikeout !== undefined) this.sync_TextDStrikeout(TextPr.DStrikeout); if (TextPr.Caps !== undefined) this.sync_TextCaps(TextPr.Caps); if (TextPr.SmallCaps !== undefined) this.sync_TextSmallCaps(TextPr.SmallCaps); if (TextPr.Position !== undefined) this.sync_TextPosition(TextPr.Position); if (TextPr.Lang !== undefined) this.sync_TextLangCallBack(TextPr.Lang); if (TextPr.Unifill !== undefined) { this.sync_TextColor2(TextPr.Unifill); } if (AscCommon.isRealObject(TextPr.HighlightColor)) { var oRGB = TextPr.HighlightColor.RGBA; this.sendEvent("asc_onTextHighLight", new AscCommon.CColor(oRGB.R, oRGB.G, oRGB.B)); } else { this.sendEvent("asc_onTextHighLight", AscCommonWord.highlight_None); } } }; PDFEditorApi.prototype.sync_TextColor2 = function(unifill) { var _color; if (unifill.fill == null) return; var color; if (unifill.fill.type == Asc.c_oAscFill.FILL_TYPE_SOLID) { _color = unifill.getRGBAColor(); color = AscCommon.CreateAscColor(unifill.fill.color); color.asc_putR(_color.R); color.asc_putG(_color.G); color.asc_putB(_color.B); this.sendEvent("asc_onTextColor", color); } else if (unifill.fill.type == Asc.c_oAscFill.FILL_TYPE_GRAD) { _color = unifill.getRGBAColor(); if(unifill.fill.colors[0] && unifill.fill.colors[0].color) { color = AscCommon.CreateAscColor(unifill.fill.colors[0].color); } else { color = new Asc.asc_CColor(); } color.asc_putR(_color.R); color.asc_putG(_color.G); color.asc_putB(_color.B); this.sendEvent("asc_onTextColor", color); } else { _color = unifill.getRGBAColor(); color = new Asc.asc_CColor(); color.asc_putR(_color.R); color.asc_putG(_color.G); color.asc_putB(_color.B); this.sendEvent("asc_onTextColor", color); } }; PDFEditorApi.prototype.asc_RotatePage = function(nAngle, aPages) { let oDoc = this.getPDFDoc(); let oThumbnails = oDoc.Viewer.Thumbnails; aPages = aPages != undefined ? aPages : oThumbnails.getSelectedPages().slice(); oDoc.DoAction(function() { oDoc.RotatePages(aPages, nAngle); oThumbnails.keepSelectedPages = true; }, AscDFH.historydescription_Pdf_RotatePage, this, aPages); }; PDFEditorApi.prototype.asc_GetPageRotate = function(nPage) { let oViewer = this.getDocumentRenderer(); if (!oViewer) { return; } return oViewer.getPageRotate(nPage); }; PDFEditorApi.prototype.asc_getAnchorPosition = function() { let oViewer = editor.getDocumentRenderer(); let pageObject = oViewer.getPageByCoords(AscCommon.global_mouseEvent.X, AscCommon.global_mouseEvent.Y); let nPage = pageObject ? pageObject.index : oViewer.currentPage; let nNativeW = oViewer.file.pages[nPage].W; let nNativeH = oViewer.file.pages[nPage].H; let nPageRotate = oViewer.getPageRotate(nPage); let nCommentWidth = 20; let nCommentHeight = 20; let oDoc = oViewer.getPDFDoc(); let oBasePos = { x: 10, y: 10 } switch (nPageRotate) { case 90: { oBasePos.y = nNativeH - nCommentHeight; break; } case 180: { oBasePos.x = nNativeW - nCommentWidth; oBasePos.y = nNativeH - nCommentHeight; break; } case 270: { oBasePos.x = nNativeW - nCommentWidth; break; } } if (pageObject && (pageObject.x > nNativeW || pageObject.x < 0 || pageObject.y > nNativeH || pageObject.y < 0)) { pageObject = null; } if (!pageObject) { let oPos = AscPDF.GetGlobalCoordsByPageCoords(oBasePos.x, oBasePos.y, nPage); oDoc.anchorPositionToAdd = null; return new AscCommon.asc_CRect(oPos["X"] + nCommentWidth, oPos["Y"] + nCommentHeight / 2, 0, 0); } switch (nPageRotate) { case 0: { oDoc.anchorPositionToAdd = { x: pageObject.x, y: pageObject.y }; break; } case 90: { oDoc.anchorPositionToAdd = { x: pageObject.x, y: pageObject.y - nCommentHeight / 4 }; break; } case 180: { oDoc.anchorPositionToAdd = { x: pageObject.x - nCommentWidth / 4, y: pageObject.y - nCommentHeight / 4 }; break; } case 270: { oDoc.anchorPositionToAdd = { x: pageObject.x - nCommentWidth / 4, y: pageObject.y }; break; } } if (oDoc.mouseDownAnnot) { let aRect = oDoc.mouseDownAnnot.GetRect(); let oPos = AscPDF.GetGlobalCoordsByPageCoords(aRect[2], aRect[1] + (aRect[3] - aRect[1]) / 2, nPage); return new AscCommon.asc_CRect(oPos["X"], oPos["Y"], 0, 0); } let oPos = AscPDF.GetGlobalCoordsByPageCoords(pageObject.x, pageObject.y, nPage); return new AscCommon.asc_CRect(oPos["X"], oPos["Y"], 0, 0); }; PDFEditorApi.prototype.asc_removeComment = function(Id) { let oDoc = this.getPDFDoc(); if (!oDoc) return; oDoc.RemoveComment(Id); }; PDFEditorApi.prototype.asc_remove = function() { let oDoc = this.getPDFDoc(); oDoc.DoAction(function() { oDoc.Remove(1, false); }, AscDFH.historydescription_Pdf_ContextMenuRemove); }; PDFEditorApi.prototype.asc_changeComment = function(Id, AscCommentData) { var oDoc = this.getDocumentRenderer().getPDFDoc(); if (!oDoc) return; var CommentData = new AscCommon.CCommentData(); CommentData.Read_FromAscCommentData(AscCommentData); oDoc.DoAction(function() { oDoc.EditComment(Id, CommentData); }, AscDFH.historydescription_Document_ChangeComment, null, Id); }; PDFEditorApi.prototype.asc_selectComment = function(Id) { this.getPDFDoc().GoToAnnot(Id); }; PDFEditorApi.prototype.asc_EditSelectAll = function() { let oViewer = this.getDocumentRenderer(); let oDoc = oViewer.getPDFDoc(); let oActiveForm = oDoc.activeForm; let oActiveAnnot = oDoc.mouseDownAnnot; let oThumbnails = oDoc.GetThumbnails(); if (oActiveForm && oActiveForm.IsCanEditText()) { oActiveForm.SelectAllText(); } else if (oActiveAnnot && oActiveAnnot.IsFreeText() && oActiveAnnot.IsInTextBox()) { oActiveAnnot.SelectAllText(); } else if (oThumbnails && oThumbnails.isInFocus) { oThumbnails.selectAll(); } else { oViewer.file.selectAll(); } oDoc.UpdateCopyCutState(); }; PDFEditorApi.prototype.asc_showComment = function(Id) { if (Id instanceof Array) this.getPDFDoc().ShowComment(Id); else this.getPDFDoc().ShowComment([Id]); }; // drawing pen PDFEditorApi.prototype.onInkDrawerChangeState = function() { const oViewer = this.getDocumentRenderer(); const oDoc = this.getDocumentRenderer().getPDFDoc(); if(!oDoc) return; oViewer.file.removeSelection(); oDoc.BlurActiveObject(); oViewer.onUpdateOverlay(); oViewer.DrawingObjects.onInkDrawerChangeState(); oDoc.currInkInDrawingProcess = null; if (false == this.isInkDrawerOn()) { if (oViewer.MouseHandObject) { oViewer.setCursorType("pointer"); } else { oViewer.setCursorType("default"); } } }; PDFEditorApi.prototype.UpdateInterfaceState = function() { let oDoc = this.getPDFDoc(); if (oDoc) oDoc.UpdateInterface(); }; PDFEditorApi.prototype.asc_ShowDocumentOutline = function() { }; PDFEditorApi.prototype.asc_HideDocumentOutline = function() { }; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Private area //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// PDFEditorApi.prototype.initDocumentRenderer = function() { if (this.DocumentRenderer) { // reopen file after reconnect this.DocumentRenderer.close(); return; } let documentRenderer = new AscCommon.CViewer(this.HtmlElementName, this); let _t = this; documentRenderer.registerEvent("onNeedPassword", function(){ _t.sendEvent("asc_onAdvancedOptions", Asc.c_oAscAdvancedOptionsID.DRM); }); documentRenderer.registerEvent("onStructure", function(structure){ _t.sendEvent("asc_onViewerBookmarksUpdate", structure); }); documentRenderer.registerEvent("onCurrentPageChanged", function(pageNum){ _t.sendEvent("asc_onCurrentPage", pageNum); }); documentRenderer.registerEvent("onPagesCount", function(pagesCount){ _t.sendEvent("asc_onCountPages", pagesCount); }); documentRenderer.registerEvent("onZoom", function(value, type){ _t.WordControl.m_nZoomValue = ((value * 100) + 0.5) >> 0; _t.sync_zoomChangeCallback(_t.WordControl.m_nZoomValue, type); }); documentRenderer.registerEvent("onFileOpened", function() { _t.disableRemoveFonts = true; documentRenderer.isDocumentContentReady = true; _t._openDocumentEndCallback(); }); documentRenderer.registerEvent("onHyperlinkClick", function(url){ _t.sendEvent("asc_onHyperlinkClick", url); }); documentRenderer.ImageMap = {}; documentRenderer.InitDocument = function() {}; this.DocumentRenderer = documentRenderer; this.WordControl.m_oDrawingDocument.m_oDocumentRenderer = documentRenderer; this.externalChartCollector.init(this); }; PDFEditorApi.prototype.haveThumbnails = function() { return !!(this.DocumentRenderer && this.DocumentRenderer.Thumbnails); }; PDFEditorApi.prototype.updateDarkMode = function() { if (!this.DocumentRenderer) return; this.DocumentRenderer.updateDarkMode(); }; PDFEditorApi.prototype.SetHighlight = function(r, g, b, opacity) { let oViewer = this.getDocumentRenderer(); let oDoc = this.getPDFDoc(); oDoc.SetHighlight(r, g, b, opacity); oViewer.file.removeSelection() }; PDFEditorApi.prototype.SetStrikeout = function(r, g, b, opacity) { let oViewer = this.getDocumentRenderer(); let oDoc = this.getPDFDoc(); oDoc.SetStrikeout(r, g, b, opacity); oViewer.file.removeSelection(); }; PDFEditorApi.prototype.SetUnderline = function(r, g, b, opacity) { let oViewer = this.getDocumentRenderer(); let oDoc = this.getPDFDoc(); oDoc.SetUnderline(r, g, b, opacity); oViewer.file.removeSelection(); }; PDFEditorApi.prototype.updateSkin = function() { let obj_id_main = document.getElementById("id_main"); if (obj_id_main) { obj_id_main.style.backgroundColor = AscCommon.GlobalSkin.BackgroundColor; document.getElementById("id_viewer").style.backgroundColor = AscCommon.GlobalSkin.BackgroundColor; document.getElementById("id_panel_right").style.backgroundColor = AscCommon.GlobalSkin.ScrollBackgroundColor; document.getElementById("id_horscrollpanel").style.backgroundColor = AscCommon.GlobalSkin.ScrollBackgroundColor; } if (!this.DocumentRenderer) return; this.DocumentRenderer.updateSkin(); }; PDFEditorApi.prototype._selectSearchingResults = function(isShow) { if (!this.DocumentRenderer) return; let oDoc = this.getPDFDoc(); oDoc.SearchEngine.Show = isShow; this.DocumentRenderer.onUpdateOverlay(); }; PDFEditorApi.prototype.canEnterText = function() { return this.canEdit(); }; PDFEditorApi.prototype.asc_GetTableOfContentsPr = function() { return null; }; PDFEditorApi.prototype._printDesktop = function(options) { if (!this.DocumentRenderer) return false; let desktopOptions = {}; if (options && options.advancedOptions) desktopOptions["nativeOptions"] = options.advancedOptions.asc_getNativeOptions(); let viewer = this.DocumentRenderer; if (window["AscDesktopEditor"] && !window["AscDesktopEditor"]["IsLocalFile"]() && window["AscDesktopEditor"]["SetPdfCloudPrintFileInfo"]) { if (!window["AscDesktopEditor"]["IsCachedPdfCloudPrintFileInfo"]()) window["AscDesktopEditor"]["SetPdfCloudPrintFileInfo"](AscCommon.Base64.encode(viewer.getFileNativeBinary())); } if (window["AscDesktopEditor"]) { let isCloud = !this.isLocalMode() && window["AscDesktopEditor"]["emulateCloudPrinting"]; if (isCloud) window["AscDesktopEditor"]["emulateCloudPrinting"](true); let changes = viewer.Save(); if (isCloud) window["AscDesktopEditor"]["emulateCloudPrinting"](false); window["AscDesktopEditor"]["Print"](JSON.stringify(desktopOptions), viewer.savedPassword ? viewer.savedPassword : "", changes ? AscCommon.Base64.encode(changes) : "", this.DocumentUrl); } return true; }; PDFEditorApi.prototype.asyncImagesDocumentEndLoaded = function() { this.ImageLoader.bIsLoadDocumentFirst = false; var _bIsOldPaste = this.isPasteFonts_Images; // на методе _openDocumentEndCallback может поменяться this.EndActionLoadImages if (this.EndActionLoadImages == 1) { this.sync_EndAction(Asc.c_oAscAsyncActionType.BlockInteraction, Asc.c_oAscAsyncAction.LoadDocumentImages); } else if (this.EndActionLoadImages == 2) { if (_bIsOldPaste) this.sync_EndAction(Asc.c_oAscAsyncActionType.BlockInteraction, Asc.c_oAscAsyncAction.LoadImage); else this.sync_EndAction(Asc.c_oAscAsyncActionType.Information, Asc.c_oAscAsyncAction.LoadImage); } this.EndActionLoadImages = 0; // размораживаем меню... и начинаем считать документ if (false === this.isPasteFonts_Images && false === this.isSaveFonts_Images && false === this.isLoadImagesCustom) { this.ServerImagesWaitComplete = true; this._openDocumentEndCallback(); } else { if (this.isPasteFonts_Images) { this.isPasteFonts_Images = false; this.pasteImageMap = null; this.pasteCallback(); this.pasteCallback = null; this.decrementCounterLongAction(); } else if (this.isSaveFonts_Images) { this.isSaveFonts_Images = false; this.saveImageMap = null; this.pre_SaveCallback(); if (this.bInit_word_control === false) { this.bInit_word_control = true; this.onDocumentContentReady(); } } else if (this.isLoadImagesCustom) { this.isLoadImagesCustom = false; this.loadCustomImageMap = null; if (!this.ImageLoader.bIsAsyncLoadDocumentImages) this.SyncLoadImages_callback(); } } }; PDFEditorApi.prototype.onDocumentContentReady = function() { AscCommon.DocumentEditorApi.prototype.onDocumentContentReady.call(this); let _t = this; let thumbnailsDivId = "thumbnails-list"; if (document.getElementById(thumbnailsDivId)) { if (this.DocumentRenderer.Thumbnails) { // reconnect return; } this.DocumentRenderer.Thumbnails = new AscCommon.ThumbnailsControl(thumbnailsDivId); this.DocumentRenderer.setThumbnailsControl(this.DocumentRenderer.Thumbnails); this.DocumentRenderer.Thumbnails.registerEvent("onZoomChanged", function (value) { _t.sendEvent("asc_onViewerThumbnailsZoomUpdate", value); }); } }; PDFEditorApi.prototype.Input_UpdatePos = function() { if (this.DocumentRenderer) this.WordControl.m_oDrawingDocument.MoveTargetInInputContext(); }; PDFEditorApi.prototype.OnMouseUp = function(x, y) { if (!this.DocumentRenderer) return; this.DocumentRenderer.onMouseUp(x, y); }; // disable drop PDFEditorApi.prototype.isEnabledDropTarget = function() { return false; }; PDFEditorApi.prototype.checkDocumentTitleFonts = function() { // Do not load any fonts }; PDFEditorApi.prototype.getSelectionState = function() { return null; }; PDFEditorApi.prototype.getSpeechDescription = function(prevState, action) { return null; }; PDFEditorApi.prototype.GenerateStyles = function() {}; PDFEditorApi.prototype.Resize = function() { if (!this.DocumentRenderer) return; this.DocumentRenderer.resize(); }; PDFEditorApi.prototype._openDocumentEndCallback = function() { if (this.isDocumentLoadComplete || !this.ServerImagesWaitComplete || !this.ServerIdWaitComplete || !this.WordControl || !this.WordControl.m_oLogicDocument || !this.WordControl.m_oDrawingDocument.m_oDocumentRenderer.isDocumentContentReady) return; this.sendMathToMenu(); this.sendStandartTextures(); //выставляем тип copypaste this.isDocumentEditor = false; AscCommon.PasteElementsId.g_bIsDocumentCopyPaste = false; AscCommon.PasteElementsId.g_bIsPDFCopyPaste = true; if (this.isApplyChangesOnOpenEnabled) { if (AscCommon.EncryptionWorker) { AscCommon.EncryptionWorker.init(); if (!AscCommon.EncryptionWorker.isChangesHandled) return AscCommon.EncryptionWorker.handleChanges(AscCommon.CollaborativeEditing.m_aChanges, this, this._openDocumentEndCallback); } this.bInit_word_control = true; this.isApplyChangesOnOpenEnabled = false; this._applyPreOpenLocks(); // TODO: onDocumentContentReady вызываем в конце загрузки всех изменений (и объектов для этих изменений) let oThis = this; // Принимаем изменения на открытии только если это редактор, либо LiveViewer (т.е. включена быстрая совместка) if (this.isLiveViewer() || !this.isPdfViewer) { let perfStart = performance.now(); let OtherChanges = AscCommon.CollaborativeEditing.Have_OtherChanges(); AscCommon.CollaborativeEditing.Apply_Changes(function() { let perfEnd = performance.now(); if (OtherChanges) { AscCommon.sendClientLog("debug", AscCommon.getClientInfoString("onApplyChanges", perfEnd - perfStart), oThis); } oThis.onDocumentContentReady(); }); AscCommon.CollaborativeEditing.Release_Locks(); } else { this.onDocumentContentReady(); } this.isApplyChangesOnOpen = true; } this.initBroadcastChannelListeners(); // Toggle chart elements (bug #67197) Asc.editor.asc_registerCallback('asc_onFocusObject', this.toggleChartElementsCallback); }; PDFEditorApi.prototype._canSyncCollaborativeChanges = function(isFirstLoad) { return (!this.isPdfViewer && (!isFirstLoad || this.isApplyChangesOnOpen)); }; PDFEditorApi.prototype.sync_CollaborativeChanges = function() { if (AscCommon.CollaborativeEditing.Is_Fast()) return; this.sendEvent("asc_onCollaborativeChanges"); }; PDFEditorApi.prototype.sync_ContextMenuCallback = function(Data) { this.sendEvent("asc_onContextMenu", new CPdfContextMenuData(Data)); }; PDFEditorApi.prototype._finalizeAction = function() { let oDoc = this.getPDFDoc(); if (!oDoc){ return; } oDoc.FinalizeAction(true); }; PDFEditorApi.prototype.get_TextProps = function() { let oDoc = this.WordControl.m_oLogicDocument; let oParaPr = oDoc.GetCalculatedParaPr(true); let oTextPr = oDoc.GetCalculatedTextPr(true); return new Asc.CParagraphAndTextProp(oParaPr, oTextPr); }; PDFEditorApi.prototype._waitPrint = function(actionType, options) { return false; }; PDFEditorApi.prototype.asc_setPdfViewer = function(isPdfViewer) { this.isPdfViewer = isPdfViewer; }; PDFEditorApi.prototype.isLiveViewer = function() { return this.isPdfViewer && AscCommon.CollaborativeEditing.Is_Fast() && !this.VersionHistory; }; PDFEditorApi.prototype.getShapeSerializeType = function() { if (!this["asc_isSupportFeature"]("ooxml")) return "binary"; // NOW USE ALWAYS BINARY DATA return "binary"; }; function CPdfContextMenuData(obj) { if (obj) { this.Type = ( undefined != obj.Type ) ? obj.Type : Asc.c_oAscPdfContextMenuTypes.Common; this.X_abs = ( undefined != obj.X_abs ) ? obj.X_abs : 0; this.Y_abs = ( undefined != obj.Y_abs ) ? obj.Y_abs : 0; this.PageNum = ( undefined != obj.PageNum ) ? obj.PageNum : 0; } else { this.Type = Asc.c_oAscPdfContextMenuTypes.Common; this.X_abs = 0; this.Y_abs = 0; } } CPdfContextMenuData.prototype.get_Type = function() { return this.Type; }; CPdfContextMenuData.prototype.get_X = function() { return this.X_abs; }; CPdfContextMenuData.prototype.get_Y = function() { return this.Y_abs; }; CPdfContextMenuData.prototype.get_PageNum = function() { return this.PageNum; }; CPdfContextMenuData.prototype.get_IsPageSelect = function() { return this.PageNum != -1 && this.PageNum != undefined; }; /** @enum {number} */ let c_oAscPdfContextMenuTypes = { Common : 0, // Обычное контекстное меню Thumbnails : 1 // контекстное меню тамбнейлов }; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Export //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// window['Asc']['PDFEditorApi'] = PDFEditorApi; AscCommon.PDFEditorApi = PDFEditorApi; prot = window['Asc']['c_oAscPdfContextMenuTypes'] = window['Asc'].c_oAscPdfContextMenuTypes = c_oAscPdfContextMenuTypes; prot['Common'] = c_oAscPdfContextMenuTypes.Common; prot['Thumbnails'] = c_oAscPdfContextMenuTypes.Thumbnails; CPdfContextMenuData.prototype['get_Type'] = CPdfContextMenuData.prototype.get_Type; CPdfContextMenuData.prototype['get_X'] = CPdfContextMenuData.prototype.get_X; CPdfContextMenuData.prototype['get_Y'] = CPdfContextMenuData.prototype.get_Y; CPdfContextMenuData.prototype['get_PageNum'] = CPdfContextMenuData.prototype.get_PageNum; CPdfContextMenuData.prototype['get_IsPageSelect'] = CPdfContextMenuData.prototype.get_IsPageSelect; PDFEditorApi.prototype['sync_ContextMenuCallback'] = PDFEditorApi.prototype.sync_ContextMenuCallback; PDFEditorApi.prototype['sync_CanUndoCallback'] = PDFEditorApi.prototype.sync_CanUndoCallback; PDFEditorApi.prototype['sync_CanRedoCallback'] = PDFEditorApi.prototype.sync_CanRedoCallback; PDFEditorApi.prototype['asc_getCanUndo'] = PDFEditorApi.prototype.asc_getCanUndo; PDFEditorApi.prototype['asc_setAdvancedOptions'] = PDFEditorApi.prototype.asc_setAdvancedOptions; PDFEditorApi.prototype['startGetDocInfo'] = PDFEditorApi.prototype.startGetDocInfo; PDFEditorApi.prototype['stopGetDocInfo'] = PDFEditorApi.prototype.stopGetDocInfo; PDFEditorApi.prototype['can_CopyCut'] = PDFEditorApi.prototype.can_CopyCut; PDFEditorApi.prototype['asc_searchEnabled'] = PDFEditorApi.prototype.asc_searchEnabled; PDFEditorApi.prototype['asc_findText'] = PDFEditorApi.prototype.asc_findText; PDFEditorApi.prototype['asc_endFindText'] = PDFEditorApi.prototype.asc_endFindText; PDFEditorApi.prototype['asc_isSelectSearchingResults'] = PDFEditorApi.prototype.asc_isSelectSearchingResults; PDFEditorApi.prototype['asc_StartTextAroundSearch'] = PDFEditorApi.prototype.asc_StartTextAroundSearch; PDFEditorApi.prototype['asc_SelectSearchElement'] = PDFEditorApi.prototype.asc_SelectSearchElement; PDFEditorApi.prototype['asc_RedactSearchElement'] = PDFEditorApi.prototype.asc_RedactSearchElement; PDFEditorApi.prototype['asc_RedactAllSearchElements'] = PDFEditorApi.prototype.asc_RedactAllSearchElements; PDFEditorApi.prototype['asc_GetRedactSearchInfo'] = PDFEditorApi.prototype.asc_GetRedactSearchInfo; PDFEditorApi.prototype['ContentToHTML'] = PDFEditorApi.prototype.ContentToHTML; PDFEditorApi.prototype['goToPage'] = PDFEditorApi.prototype.goToPage; PDFEditorApi.prototype['getCountPages'] = PDFEditorApi.prototype.getCountPages; PDFEditorApi.prototype['getCurrentPage'] = PDFEditorApi.prototype.getCurrentPage; PDFEditorApi.prototype['getSelectedPages'] = PDFEditorApi.prototype.getSelectedPages; PDFEditorApi.prototype['asc_getPdfProps'] = PDFEditorApi.prototype.asc_getPdfProps; PDFEditorApi.prototype['asc_enterText'] = PDFEditorApi.prototype.asc_enterText; PDFEditorApi.prototype['asc_correctEnterText'] = PDFEditorApi.prototype.asc_correctEnterText; PDFEditorApi.prototype['asc_GetSelectedText'] = PDFEditorApi.prototype.asc_GetSelectedText; PDFEditorApi.prototype['asc_SelectPDFFormListItem'] = PDFEditorApi.prototype.asc_SelectPDFFormListItem; PDFEditorApi.prototype['asc_SetTextFormDatePickerDate'] = PDFEditorApi.prototype.asc_SetTextFormDatePickerDate; PDFEditorApi.prototype['asc_getHeaderFooterProperties'] = PDFEditorApi.prototype.asc_getHeaderFooterProperties; PDFEditorApi.prototype['ChangeReaderMode'] = PDFEditorApi.prototype.ChangeReaderMode; PDFEditorApi.prototype['asc_Save'] = PDFEditorApi.prototype.asc_Save; PDFEditorApi.prototype['asc_Print'] = PDFEditorApi.prototype.asc_Print; PDFEditorApi.prototype['asc_drawPrintPreview'] = PDFEditorApi.prototype.asc_drawPrintPreview; PDFEditorApi.prototype['CheckChangedDocument'] = PDFEditorApi.prototype.CheckChangedDocument; PDFEditorApi.prototype['SetDrawingFreeze'] = PDFEditorApi.prototype.SetDrawingFreeze; PDFEditorApi.prototype['OnMouseUp'] = PDFEditorApi.prototype.OnMouseUp; PDFEditorApi.prototype['asc_addComment'] = PDFEditorApi.prototype.asc_addComment; PDFEditorApi.prototype['can_AddQuotedComment'] = PDFEditorApi.prototype.can_AddQuotedComment; PDFEditorApi.prototype['asc_showComments'] = PDFEditorApi.prototype.asc_showComments; PDFEditorApi.prototype['asc_showComment'] = PDFEditorApi.prototype.asc_showComment; PDFEditorApi.prototype['asc_hideComments'] = PDFEditorApi.prototype.asc_hideComments; PDFEditorApi.prototype['asc_removeComment'] = PDFEditorApi.prototype.asc_removeComment; PDFEditorApi.prototype['asc_remove'] = PDFEditorApi.prototype.asc_remove; PDFEditorApi.prototype['asc_changeComment'] = PDFEditorApi.prototype.asc_changeComment; PDFEditorApi.prototype['asc_selectComment'] = PDFEditorApi.prototype.asc_selectComment; PDFEditorApi.prototype['asc_EditPage'] = PDFEditorApi.prototype.asc_EditPage; PDFEditorApi.prototype['asc_AddPage'] = PDFEditorApi.prototype.asc_AddPage; PDFEditorApi.prototype['asc_RemovePage'] = PDFEditorApi.prototype.asc_RemovePage; PDFEditorApi.prototype['asc_CanRemovePages'] = PDFEditorApi.prototype.asc_CanRemovePages; PDFEditorApi.prototype['asc_CanRotatePages'] = PDFEditorApi.prototype.asc_CanRotatePages; PDFEditorApi.prototype['asc_CanPastePage'] = PDFEditorApi.prototype.asc_CanPastePage; PDFEditorApi.prototype['asc_createSmartArt'] = PDFEditorApi.prototype.asc_createSmartArt; PDFEditorApi.prototype['asc_undoAllChanges'] = PDFEditorApi.prototype.asc_undoAllChanges; PDFEditorApi.prototype['asc_addChartDrawingObject'] = PDFEditorApi.prototype.asc_addChartDrawingObject; PDFEditorApi.prototype['ChartApply'] = PDFEditorApi.prototype.ChartApply; PDFEditorApi.prototype['asc_getChartSettings'] = PDFEditorApi.prototype.asc_getChartSettings; PDFEditorApi.prototype['asc_setSkin'] = PDFEditorApi.prototype.asc_setSkin; PDFEditorApi.prototype['asc_getAnchorPosition'] = PDFEditorApi.prototype.asc_getAnchorPosition; PDFEditorApi.prototype['asc_GetPageRotate'] = PDFEditorApi.prototype.asc_GetPageRotate; PDFEditorApi.prototype['asc_RotatePage'] = PDFEditorApi.prototype.asc_RotatePage; PDFEditorApi.prototype['SetMarkerFormat'] = PDFEditorApi.prototype.SetMarkerFormat; PDFEditorApi.prototype['get_PageWidth'] = PDFEditorApi.prototype.get_PageWidth; PDFEditorApi.prototype['get_PageHeight'] = PDFEditorApi.prototype.get_PageHeight; PDFEditorApi.prototype['get_PageWidthMM'] = PDFEditorApi.prototype.get_PageWidthMM; PDFEditorApi.prototype['get_PageHeightMM'] = PDFEditorApi.prototype.get_PageHeightMM; PDFEditorApi.prototype['asc_EditSelectAll'] = PDFEditorApi.prototype.asc_EditSelectAll; PDFEditorApi.prototype['Undo'] = PDFEditorApi.prototype.Undo; PDFEditorApi.prototype['Redo'] = PDFEditorApi.prototype.Redo; PDFEditorApi.prototype['UpdateInterfaceState'] = PDFEditorApi.prototype.UpdateInterfaceState; PDFEditorApi.prototype['asc_SelectionCut'] = PDFEditorApi.prototype.asc_SelectionCut; PDFEditorApi.prototype['asc_CheckCopy'] = PDFEditorApi.prototype.asc_CheckCopy; PDFEditorApi.prototype['Paste'] = PDFEditorApi.prototype.Paste; PDFEditorApi.prototype['asc_PasteData'] = PDFEditorApi.prototype.asc_PasteData; PDFEditorApi.prototype['asc_CloseFile'] = PDFEditorApi.prototype.asc_CloseFile; PDFEditorApi.prototype['get_TextProps'] = PDFEditorApi.prototype.get_TextProps; PDFEditorApi.prototype['getSelectionState'] = PDFEditorApi.prototype.getSelectionState; PDFEditorApi.prototype['getSpeechDescription'] = PDFEditorApi.prototype.getSpeechDescription; PDFEditorApi.prototype['asc_ShowDocumentOutline'] = PDFEditorApi.prototype.asc_ShowDocumentOutline; PDFEditorApi.prototype['asc_HideDocumentOutline'] = PDFEditorApi.prototype.asc_HideDocumentOutline; // text/para pr PDFEditorApi.prototype['put_TextPrBold'] = PDFEditorApi.prototype.put_TextPrBold; PDFEditorApi.prototype['put_TextPrItalic'] = PDFEditorApi.prototype.put_TextPrItalic; PDFEditorApi.prototype['put_TextPrUnderline'] = PDFEditorApi.prototype.put_TextPrUnderline; PDFEditorApi.prototype['put_TextPrStrikeout'] = PDFEditorApi.prototype.put_TextPrStrikeout; PDFEditorApi.prototype['put_PrLineSpacing'] = PDFEditorApi.prototype.put_PrLineSpacing; PDFEditorApi.prototype['put_LineSpacingBeforeAfter'] = PDFEditorApi.prototype.put_LineSpacingBeforeAfter; PDFEditorApi.prototype['FontSizeIn'] = PDFEditorApi.prototype.FontSizeIn; PDFEditorApi.prototype['FontSizeOut'] = PDFEditorApi.prototype.FontSizeOut; PDFEditorApi.prototype['put_TextPrBaseline'] = PDFEditorApi.prototype.put_TextPrBaseline; PDFEditorApi.prototype['put_TextPrFontSize'] = PDFEditorApi.prototype.put_TextPrFontSize; PDFEditorApi.prototype['put_TextPrFontName'] = PDFEditorApi.prototype.put_TextPrFontName; PDFEditorApi.prototype['put_TextColor'] = PDFEditorApi.prototype.put_TextColor; PDFEditorApi.prototype['asc_ChangeTextCase'] = PDFEditorApi.prototype.asc_ChangeTextCase; PDFEditorApi.prototype['put_PrAlign'] = PDFEditorApi.prototype.put_PrAlign; PDFEditorApi.prototype['asc_setRtlTextDirection'] = PDFEditorApi.prototype.asc_setRtlTextDirection; PDFEditorApi.prototype['asc_isRtlTextDirection'] = PDFEditorApi.prototype.asc_isRtlTextDirection; PDFEditorApi.prototype['setVerticalAlign'] = PDFEditorApi.prototype.setVerticalAlign; PDFEditorApi.prototype['IncreaseIndent'] = PDFEditorApi.prototype.IncreaseIndent; PDFEditorApi.prototype['DecreaseIndent'] = PDFEditorApi.prototype.DecreaseIndent; PDFEditorApi.prototype['ClearFormating'] = PDFEditorApi.prototype.ClearFormating; PDFEditorApi.prototype['UpdateParagraphProp'] = PDFEditorApi.prototype.UpdateParagraphProp; PDFEditorApi.prototype['paraApply'] = PDFEditorApi.prototype.paraApply; PDFEditorApi.prototype['sync_ListType'] = PDFEditorApi.prototype.sync_ListType; PDFEditorApi.prototype['put_ListType'] = PDFEditorApi.prototype.put_ListType; PDFEditorApi.prototype['asc_GetPossibleNumberingLanguage']= PDFEditorApi.prototype.asc_GetPossibleNumberingLanguage; // math PDFEditorApi.prototype['asc_AddMath2'] = PDFEditorApi.prototype.asc_AddMath2; PDFEditorApi.prototype['asc_ConvertMathView'] = PDFEditorApi.prototype.asc_ConvertMathView; // annots PDFEditorApi.prototype['StartAddAnnot'] = PDFEditorApi.prototype.StartAddAnnot; PDFEditorApi.prototype['SetAnnotFillColor'] = PDFEditorApi.prototype.SetAnnotFillColor; PDFEditorApi.prototype['GetAnnotFillColor'] = PDFEditorApi.prototype.GetAnnotFillColor; PDFEditorApi.prototype['SetAnnotStrokeColor'] = PDFEditorApi.prototype.SetAnnotStrokeColor; PDFEditorApi.prototype['GetAnnotStrokeColor'] = PDFEditorApi.prototype.GetAnnotStrokeColor; PDFEditorApi.prototype['SetAnnotOpacity'] = PDFEditorApi.prototype.SetAnnotOpacity; PDFEditorApi.prototype['GetAnnotOpacity'] = PDFEditorApi.prototype.GetAnnotOpacity; PDFEditorApi.prototype['SetAnnotStrokeWidth'] = PDFEditorApi.prototype.SetAnnotStrokeWidth; PDFEditorApi.prototype['SetAnnotStrokeStyle'] = PDFEditorApi.prototype.SetAnnotStrokeStyle; PDFEditorApi.prototype['SetAnnotLineStart'] = PDFEditorApi.prototype.SetAnnotLineStart; PDFEditorApi.prototype['SetAnnotLineEnd'] = PDFEditorApi.prototype.SetAnnotLineEnd; // stamp PDFEditorApi.prototype['AddStampAnnot'] = PDFEditorApi.prototype.AddStampAnnot; PDFEditorApi.prototype['asc_getPropertyEditorStamps'] = PDFEditorApi.prototype.asc_getPropertyEditorStamps; // freetext PDFEditorApi.prototype['AddFreeTextAnnot'] = PDFEditorApi.prototype.AddFreeTextAnnot; // redact PDFEditorApi.prototype['SetRedactTool'] = PDFEditorApi.prototype.SetRedactTool; PDFEditorApi.prototype['IsRedactTool'] = PDFEditorApi.prototype.IsRedactTool; PDFEditorApi.prototype['RedactPages'] = PDFEditorApi.prototype.RedactPages; PDFEditorApi.prototype['ApplyRedact'] = PDFEditorApi.prototype.ApplyRedact; PDFEditorApi.prototype['HasRedact'] = PDFEditorApi.prototype.HasRedact; PDFEditorApi.prototype['RemoveAllRedact'] = PDFEditorApi.prototype.RemoveAllRedact; // forms PDFEditorApi.prototype['IsEditFieldsMode'] = PDFEditorApi.prototype.IsEditFieldsMode; PDFEditorApi.prototype['AddTextField'] = PDFEditorApi.prototype.AddTextField; PDFEditorApi.prototype['AddDateField'] = PDFEditorApi.prototype.AddDateField; PDFEditorApi.prototype['AddImageField'] = PDFEditorApi.prototype.AddImageField; PDFEditorApi.prototype['AddCheckboxField'] = PDFEditorApi.prototype.AddCheckboxField; PDFEditorApi.prototype['AddRadiobuttonField'] = PDFEditorApi.prototype.AddRadiobuttonField; PDFEditorApi.prototype['AddComboboxField'] = PDFEditorApi.prototype.AddComboboxField; PDFEditorApi.prototype['AddListboxField'] = PDFEditorApi.prototype.AddListboxField; PDFEditorApi.prototype['asc_getNumberFormatCurrencySymbols']= PDFEditorApi.prototype.asc_getNumberFormatCurrencySymbols; PDFEditorApi.prototype['asc_getFieldNumberFormatExample'] = PDFEditorApi.prototype.asc_getFieldNumberFormatExample; PDFEditorApi.prototype['asc_getFieldPercentFormatExample'] = PDFEditorApi.prototype.asc_getFieldPercentFormatExample; PDFEditorApi.prototype['asc_getFieldDateFormatOptions'] = PDFEditorApi.prototype.asc_getFieldDateFormatOptions; PDFEditorApi.prototype['asc_getFieldTimeFormatOptions'] = PDFEditorApi.prototype.asc_getFieldTimeFormatOptions; PDFEditorApi.prototype['asc_getFieldDateTimeFormatExample'] = PDFEditorApi.prototype.asc_getFieldDateTimeFormatExample; PDFEditorApi.prototype['ClearFieldFormat'] = PDFEditorApi.prototype.ClearFieldFormat; PDFEditorApi.prototype['SetFieldNumberFormat'] = PDFEditorApi.prototype.SetFieldNumberFormat; PDFEditorApi.prototype['SetFieldPercentageFormat'] = PDFEditorApi.prototype.SetFieldPercentageFormat; PDFEditorApi.prototype['SetFieldDateFormat'] = PDFEditorApi.prototype.SetFieldDateFormat; PDFEditorApi.prototype['SetFieldTimeFormat'] = PDFEditorApi.prototype.SetFieldTimeFormat; PDFEditorApi.prototype['SetFieldSpecialFormat'] = PDFEditorApi.prototype.SetFieldSpecialFormat; PDFEditorApi.prototype['SetFieldMask'] = PDFEditorApi.prototype.SetFieldMask; PDFEditorApi.prototype['SetFieldRegularExp'] = PDFEditorApi.prototype.SetFieldRegularExp; PDFEditorApi.prototype['SetFieldValidateRange'] = PDFEditorApi.prototype.SetFieldValidateRange; PDFEditorApi.prototype['SetFieldCalculate'] = PDFEditorApi.prototype.SetFieldCalculate; PDFEditorApi.prototype['SetCalculateOrder'] = PDFEditorApi.prototype.SetCalculateOrder; PDFEditorApi.prototype['GetCalculateOrder'] = PDFEditorApi.prototype.GetCalculateOrder; PDFEditorApi.prototype['SetFieldName'] = PDFEditorApi.prototype.SetFieldName; PDFEditorApi.prototype['GetFieldsNames'] = PDFEditorApi.prototype.GetFieldsNames; PDFEditorApi.prototype['GetAllFieldsNames'] = PDFEditorApi.prototype.GetAllFieldsNames; PDFEditorApi.prototype['GetAvailableFieldsNames'] = PDFEditorApi.prototype.GetAvailableFieldsNames; PDFEditorApi.prototype['SetFieldStrokeColor'] = PDFEditorApi.prototype.SetFieldStrokeColor; PDFEditorApi.prototype['SetFieldStrokeWidth'] = PDFEditorApi.prototype.SetFieldStrokeWidth; PDFEditorApi.prototype['SetFieldStrokeStyle'] = PDFEditorApi.prototype.SetFieldStrokeStyle; PDFEditorApi.prototype['SetFieldBgColor'] = PDFEditorApi.prototype.SetFieldBgColor; PDFEditorApi.prototype['SetFieldRequired'] = PDFEditorApi.prototype.SetFieldRequired; PDFEditorApi.prototype['SetFieldReadOnly'] = PDFEditorApi.prototype.SetFieldReadOnly; PDFEditorApi.prototype['SetFieldDefaultValue'] = PDFEditorApi.prototype.SetFieldDefaultValue; PDFEditorApi.prototype['SetFieldLocked'] = PDFEditorApi.prototype.SetFieldLocked; PDFEditorApi.prototype['SetFieldTooltip'] = PDFEditorApi.prototype.SetFieldTooltip; PDFEditorApi.prototype['SetFieldRotate'] = PDFEditorApi.prototype.SetFieldRotate; PDFEditorApi.prototype['SetFieldDigitsType'] = PDFEditorApi.prototype.SetFieldDigitsType; // text field PDFEditorApi.prototype['SetTextFieldMultiline'] = PDFEditorApi.prototype.SetTextFieldMultiline; PDFEditorApi.prototype['SetTextFieldCharLimit'] = PDFEditorApi.prototype.SetTextFieldCharLimit; PDFEditorApi.prototype['SetTextFieldComb'] = PDFEditorApi.prototype.SetTextFieldComb; PDFEditorApi.prototype['SetTextFieldScrollLongText']= PDFEditorApi.prototype.SetTextFieldScrollLongText PDFEditorApi.prototype['SetTextFieldPassword'] = PDFEditorApi.prototype.SetTextFieldPassword; PDFEditorApi.prototype['SetFieldPlaceholder'] = PDFEditorApi.prototype.SetFieldPlaceholder; PDFEditorApi.prototype['SetFieldAutoFit'] = PDFEditorApi.prototype.SetFieldAutoFit; // baselist field PDFEditorApi.prototype['AddListFieldOption'] = PDFEditorApi.prototype.AddListFieldOption; PDFEditorApi.prototype['RemoveListFieldOption'] = PDFEditorApi.prototype.RemoveListFieldOption; PDFEditorApi.prototype['MoveListFieldOption'] = PDFEditorApi.prototype.MoveListFieldOption; PDFEditorApi.prototype['SetListFieldCommitOnSelChange'] = PDFEditorApi.prototype.SetListFieldCommitOnSelChange; // combobox field PDFEditorApi.prototype['SetComboboxFieldEditable'] = PDFEditorApi.prototype.SetComboboxFieldEditable; // listbox field PDFEditorApi.prototype['SetListboxFieldMultiSelect']= PDFEditorApi.prototype.SetListboxFieldMultiSelect; // checkbox field PDFEditorApi.prototype['SetCheckboxFieldStyle'] = PDFEditorApi.prototype.SetCheckboxFieldStyle; PDFEditorApi.prototype['SetCheckboxFieldExportValue'] = PDFEditorApi.prototype.SetCheckboxFieldExportValue; PDFEditorApi.prototype['SetCheckboxFieldToggleToOff'] = PDFEditorApi.prototype.SetCheckboxFieldToggleToOff; // radiobutton field PDFEditorApi.prototype['SetRadioFieldInUnison'] = PDFEditorApi.prototype.SetRadioFieldInUnison; // button field PDFEditorApi.prototype['SetButtonFieldLayout'] = PDFEditorApi.prototype.SetButtonFieldLayout; PDFEditorApi.prototype['SetButtonFieldScaleWhen'] = PDFEditorApi.prototype.SetButtonFieldScaleWhen; PDFEditorApi.prototype['SetButtonFieldScaleHow'] = PDFEditorApi.prototype.SetButtonFieldScaleHow; PDFEditorApi.prototype['SetButtonFieldFitBounds'] = PDFEditorApi.prototype.SetButtonFieldFitBounds; PDFEditorApi.prototype['SetButtonFieldIconPos'] = PDFEditorApi.prototype.SetButtonFieldIconPos; PDFEditorApi.prototype['SetButtonFieldBehavior'] = PDFEditorApi.prototype.SetButtonFieldBehavior; PDFEditorApi.prototype['SetButtonFieldLabel'] = PDFEditorApi.prototype.SetButtonFieldLabel; PDFEditorApi.prototype['ClearButtonFieldImage'] = PDFEditorApi.prototype.ClearButtonFieldImage; // drawings PDFEditorApi.prototype['AddTextArt'] = PDFEditorApi.prototype.AddTextArt; PDFEditorApi.prototype['StartAddShape'] = PDFEditorApi.prototype.StartAddShape; PDFEditorApi.prototype['ShapeApply'] = PDFEditorApi.prototype.ShapeApply; PDFEditorApi.prototype['ChangeShapeType'] = PDFEditorApi.prototype.ChangeShapeType; PDFEditorApi.prototype['ImgApply'] = PDFEditorApi.prototype.ImgApply; PDFEditorApi.prototype['asc_FitImagesToPage'] = PDFEditorApi.prototype.asc_FitImagesToPage; PDFEditorApi.prototype['sync_shapePropCallback'] = PDFEditorApi.prototype.sync_shapePropCallback; PDFEditorApi.prototype['sync_annotPropCallback'] = PDFEditorApi.prototype.sync_annotPropCallback; PDFEditorApi.prototype['sync_fieldPropCallback'] = PDFEditorApi.prototype.sync_fieldPropCallback; PDFEditorApi.prototype['canUnGroup'] = PDFEditorApi.prototype.canUnGroup; PDFEditorApi.prototype['canGroup'] = PDFEditorApi.prototype.canGroup; PDFEditorApi.prototype['shapes_bringToFront'] = PDFEditorApi.prototype.shapes_bringToFront; PDFEditorApi.prototype['shapes_bringForward'] = PDFEditorApi.prototype.shapes_bringForward; PDFEditorApi.prototype['shapes_bringToBack'] = PDFEditorApi.prototype.shapes_bringToBack; PDFEditorApi.prototype['shapes_bringBackward'] = PDFEditorApi.prototype.shapes_bringBackward; PDFEditorApi.prototype['AddImageUrlAction'] = PDFEditorApi.prototype.AddImageUrlAction; PDFEditorApi.prototype['AddImageUrlActionCallback'] = PDFEditorApi.prototype.AddImageUrlActionCallback; PDFEditorApi.prototype['asc_addImage'] = PDFEditorApi.prototype.asc_addImage; PDFEditorApi.prototype['ChangeArtImageFromFile'] = PDFEditorApi.prototype.ChangeArtImageFromFile; PDFEditorApi.prototype['SetInterfaceDrawImagePlaceTextArt'] = PDFEditorApi.prototype.SetInterfaceDrawImagePlaceTextArt; PDFEditorApi.prototype['asc_setInterfaceDrawImagePlaceShape'] = PDFEditorApi.prototype.asc_setInterfaceDrawImagePlaceShape; PDFEditorApi.prototype['remove_Hyperlink'] = PDFEditorApi.prototype.remove_Hyperlink; PDFEditorApi.prototype['change_Hyperlink'] = PDFEditorApi.prototype.change_Hyperlink; PDFEditorApi.prototype['sync_HyperlinkClickCallback'] = PDFEditorApi.prototype.sync_HyperlinkClickCallback; PDFEditorApi.prototype['add_Hyperlink'] = PDFEditorApi.prototype.add_Hyperlink; PDFEditorApi.prototype['SetShowTextSelectPanel'] = PDFEditorApi.prototype.SetShowTextSelectPanel; PDFEditorApi.prototype['NeedShowTextSelectPanel'] = PDFEditorApi.prototype.NeedShowTextSelectPanel; // table PDFEditorApi.prototype['put_Table'] = PDFEditorApi.prototype.put_Table; PDFEditorApi.prototype['tblApply'] = PDFEditorApi.prototype.tblApply; PDFEditorApi.prototype['asc_DistributeTableCells'] = PDFEditorApi.prototype.asc_DistributeTableCells; PDFEditorApi.prototype['remColumn'] = PDFEditorApi.prototype.remColumn; PDFEditorApi.prototype['remTable'] = PDFEditorApi.prototype.remTable; PDFEditorApi.prototype['asc_getTableStylesPreviews'] = PDFEditorApi.prototype.asc_getTableStylesPreviews; PDFEditorApi.prototype['asc_GetSelectionBounds'] = PDFEditorApi.prototype.asc_GetSelectionBounds; PDFEditorApi.prototype['asc_setPdfViewer'] = PDFEditorApi.prototype.asc_setPdfViewer; PDFEditorApi.prototype['asc_GetTableOfContentsPr'] = PDFEditorApi.prototype.asc_GetTableOfContentsPr; window["PDFEditorApi"] = PDFEditorApi; })(window, window.document);