How to use ActionCallback
How to trigger JavaScript
//JsActionCallback is the implementation class of ActionCallback. JsActionCallback* action_handler = new JsActionCallback(); Library::SetActionCallback(action_handler); Form form(pdf_doc); PDFPage pdf_page = pdf_doc.GetPage(0); //Set JavaScript for the button. Control control = form.GetControl(pdf_page, 0); Widget widget_annot = control.GetWidget(); AdditionalAction widget_aa(widget_annot); Action action = Action::Create(pdf_doc, Action::e_TypeJavaScript); JavaScriptAction javascipt_action(action); javascipt_action.SetScript(L"JavaScript code"); widget_aa.SetAction(AdditionalAction::e_TriggerAnnotMouseButtonPressed, javascipt_action); //Trigger JavaScript Script. widget_aa.DoJSAction(AdditionalAction::e_TriggerAnnotMouseButtonPressed) |
How to implement ActionCallback
InvalidateRect
After the document content is updated, GSDK will call InvalidateRect.
//JavaScript code, add annotation to the document.
var annot3 = this.addAnnot({
type: "Circle",
page: 1,
rect: [0,500,50,680],
popupOpen: false,
popupRect: [467,570,647,690],
rect: [110.315002,545.960022,129.565002,574.835022],
});
|
virtual bool InvalidateRect(const PDFDoc& document, int page_index, const RectF& pdf_rect) {
//Refresh the area specified by "pdf_rect" on page of "page_index" of the document
}
|
GetCurrentPage
//JavaScript code,obtaining the current page index app.alert(this.pageNum); |
virtual int GetCurrentPage(const pdf::PDFDoc& document){
//Returns the index of the currently displayed page in the document
}
|
SetCurrentPage
//JavaScript code,skip to page three. this.pageNum = 2; |
virtual void SetCurrentPage(const pdf::PDFDoc& document, int page_index){
//Skip to page of "page_index" of document.
}
|
SetDocChangeMark GetDocChangeMark
//Javascript code this.dirty = false;// or true var dir = this.dirty; |
virtual bool SetDocChangeMark(const pdf::PDFDoc& document, bool change_mark){
if(change_mark == true){
//Set the document update label to true and need to save before closing the document.
}
if(change_mark == false){
//The document update label is set to false, no need to save before closing the document.
}
}
virtual bool GetDocChangeMark(const pdf::PDFDoc& document){
//return document update label;
}
|
GetCurrentDoc
virtual pdf::PDFDoc GetCurrentDoc(){
//The document currently being viewed by the application
return current_doc_
}
|
CreateBlankDoc
//JavaScript code app.newDoc(); |
virtual pdf::PDFDoc CreateBlankDoc(){
//Create new docment.
PDFDoc new_doc = PDFDoc();
new_doc.InsertPage(0, 612, 791);
//open_doc_list +1
//Set the new_doc to be current document
current_doc_ = new_doc;
return new_doc;
}
|
CloseDoc
this.closeDoc(); |
virtual void CloseDoc(const pdf::PDFDoc& document, bool is_prompt_to_save){
if(is_prompt_to_save== true && document update label is true){
//Prompt to save.
}
if(is_prompt_to_save== false){
//Close the document without saving it.
}
}
|
OpenDoc
app.openDoc("C:/myDoc.pdf");
|
virtual bool OpenDoc(const WString& file_path, const WString& password){
PDFDoc new_doc = PDFDoc(file_path);
new_doc.Load(password);
//open_doc_list +1
//Set the new_doc to be current document
current_doc_ = new_doc;
return true;
}
|
Beep
app.beep(0);//0-4 |
virtual bool Beep(int type){
//Windows Environment Example
switch(type)
{
case 0:
MessageBeep(MB_ICONEXCLAMATION);
break;
case 1:
MessageBeep(MB_ICONHAND);
break;
case 2:
MessageBeep(MB_ICONQUESTION);
break;
case 3:
MessageBeep(MB_ICONASTERISK);
break;
case 4:
MessageBeep(MB_OK);
break;
default:
MessageBeep(-1);
break;
}
}
|
Response
var cResponse = app.response({
cQuestion: "How are you today?",
cTitle: "Your Health Status",
cDefault: "Fine",
cLabel: "Response:"
});
|
virtual WString Response(CONSTCWSTR question, CONSTCWSTR title, CONSTCWSTR default_value,
CONSTCWSTR label, bool is_password){
//Display a dialog.
//DlgTitle = "Your Health Status"
//Add static_label1 = "How are you today?"
//Add static_label2 = "Response:"
//Add edit "edit_response", default value:"Fine"
return the value of "edit_response";
}
|
GetFilePath,IsLocalFile
var filepath = this.path; |
virtual WString GetFilePath(const pdf::PDFDoc& document){
return document path;
}
virtual bool IsLocalFile(const pdf::PDFDoc& document){
if("document" is local document){
return true;
}else
return false;
}
|
GetAttachmentsFilePath
this.importDataObject("MyData");//Attach a data file to the current document.
|
virtual WString GetAttachmentsFilePath(const pdf::PDFDoc& pdf_doc, CONSTCWSTR name){
//name == L"MyData"
//return the path of the data file to be attached to pdf_doc, GSDK will use name as the key to attach the data file to pdf_doc
}
|
GetAttachmentsFilePath
this.exportDataObject("MyData");//Export the data file corresponding to MyData
|
virtual WString GetExtractedEmbeddedFilePath(const pdf::PDFDoc& pdf_doc, CONSTCWSTR name){
//return the exported path, GSDK will export the data file corresponding to name to this path
}
|
function Doc_print()
{
this.print({bUI: true,
bSilent:false,
bPrintAsImage:false,
bReverse:false,
bAnnotations:true,
} );
}
Doc_print();
|
virtual bool Print(const pdf::PDFDoc& document, const PrintParams& print_params){
//Enable printing function to print "document" according to the printing settings indicated by "print_params"
}
|
LaunchURL
app.launchURL("http://www.example.com/");
|
virtual bool LaunchURL(CONSTCSTR url){
//Open URL in browser
ShellExecute(NULL, "open", url, NULL, NULL, SW_SHOWNORMAL);
}
|
BrowseFile
var oRetn = app.browseForDoc({
bSave: true,
cFilenameInit: "appbrowseForDoctest1.pdf",
cFSInit: "",
});
|
virtual WString BrowseFile(){
//Open the file dialog and return the selected file path
CFileDialog fileDlg(FALSE, NULL, NULL, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, _T("(*.pdf)|*.pdf"), NULL);
if(fileDlg.DoModal() != IDOK) return L"";
CString pdfpath = fileDlg.GetPathName();
return pdfpath;
}
virtual WString BrowseFile(bool is_open_dialog, CONSTCWSTR file_format, CONSTCWSTR file_filter){
//Open the file dialog and return the selected file path
CFileDialog fileDlg(is_open_dialog, file_format, NULL, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, file_filter, NULL);
if(fileDlg.DoModal() != IDOK) return L"";
CString pdfpath = fileDlg.GetPathName();
return pdfpath;
}
|
GetLanguage
app.language |
virtual Language GetLanguage(){
//Returns the language used by the application
return ActionCallback::e_LanguageCHS;
}
|
Alert
app.alert("Hello world!")
|
virtual int Alert(CONSTCWSTR msg, CONSTCWSTR title, int type, int icon){
UINT nType = 0;
switch (type) {
case 0:
nType = MB_OK;
break;
case 1:
nType = MB_OKCANCEL;
break;
case 2:
nType = MB_YESNO;
break;
case 3:
nType = MB_YESNOCANCEL;
break;
}
switch (icon) {
case 0:
nType |= MB_ICONERROR;
break;
case 1:
nType |= MB_ICONWARNING;
break;
case 2:
nType |= MB_ICONQUESTION;
break;
case 3:
nType |= MB_ICONINFORMATION;
break;
}
int ret = MessageBox(msg, title, nType);
return ret;
}
|
GetIdentityProperties, SetIdentityProperties
//Call the function GetIdentityProperties
app.alert("Your name is " + identity.name);
app.alert("Your e-mail is " + identity.email);
//Call the function SetIdentityProperties
identity.email = "[email protected]"
|
virtual IdentityProperties GetIdentityProperties(){
const wchar_t* sCorporation = L"Blanc&Eclare";
const wchar_t* sEmail = L"[email protected]";
const wchar_t* sLoginName = L"Sy_jessica";
const wchar_t* sName = L"Jessica";
const wchar_t* sFirstName = L"Sun";
const wchar_t* sLastName = L"Yanzi";
const wchar_t* sDepartment = L"AAA";
const wchar_t* sTitle = L"CCC";
IdentityProperties idProp(sCorporation, sEmail, sLoginName, sName, sFirstName, sLastName, sTitle, sDepartment);
return idProp;
}
virtual bool SetIdentityProperties(const IdentityProperties& identity_properties){
//adjust Identity Properties
}
|
PopupMenu
var cChoice = app.popUpMenu("item", "-", "Chapter 1",[ "Chapter 2", "Chapter 2 Start", "Chapter 2 Middle",["Chapter 2 End"," ", "The End"]]);
app.alert("You chose the " + cChoice + " menu item");
|
void AppendMenuWithArray(const foxit::MenuListArray& menus, pop_menu) {
for (size_t i = 0; i < menus.GetSize(); i++) {
foxit::MenuList menuItem = menus.GetAt(i);
if (menuItem.name == L"-") {
//Add split lines to pop_menu
} else {
if (menuItem.sub_menu_list_array.GetSize() > 0) {
//Create a new pop-up menu sub_menu
//Add sub_menu to pop_menu
//Continue parsing submenus
AppendMenuWithArray(menuItem.sub_menu_list_array, &sub_menu);
}else {
//Add menu "menuItem.name" to menu "pop_menu".
}
}
}
}
virtual WString PopupMenu(const MenuListArray& menus, bool& is_selected_item){
//Create a new pop-up menu"pop_menu".
//parse menus
AppendMenuWithArray(menus, pop_menu)
//Get the current position "point"of mouse.
//Display "pop_menu" in coordinate "point".
//Determine whether the mouse clicks on a menu item or clicks on a blank space
if(Mouse click on a menu item){
is_selected_item = true;
return the name of menu item clicked on.
}else{
is_selected_item = false;
return L"";
}
}
|
PopupMenuEx
var cChoice = app.popUpMenuEx
(
{cName: "Item 1", bMarked:true, bEnabled:false},
{cName: "-"},
{cName: "Item 2", oSubMenu:
[ {cName: "Item 2, Submenu 1"},
{
cName: "Item 2, Submenu 2",
oSubMenu: {cName:"Item 2, Submenu 2, Subsubmenu 1", cReturn: "0"}
}
]
},
{cName: "Item 3"},
{cName: "Item 4", bMarked:true, cReturn: "1"}
)
app.alert("You chose the \"" + cChoice + "\" menu item");
|
void AppendMenuWithArrayEx(const foxit::MenuItemExArray& menus, pop_menu) {
for (size_t i = 0; i < menus.GetSize(); i++) {
foxit::MenuItemEx menuItem = menus.GetAt(i);
if (menuItem.item_name == L"-") {
//Add a splitter line to the menu "pop_menu"
} else {
if (menuItem.sub_menu_item_array.GetSize() > 0) {
//Create a new menu "sub_menu".
UINT uFlags = MF_POPUP;
if (menuItem.is_checked)
{
uFlags |= MF_CHECKED;//Add a check mark to the menu
}
if (!menuItem.is_enabled)
{
uFlags |= MF_DISABLED;//Make the menu unselectable
}
//Add "sub_menu" to "pop_menu", and set "uFlags".
//continue to parse sub menu.
AppendMenuWithArrayEx(menuItem.sub_menu_item_array, &sub_menu);
}else {
UINT uFlags = MF_STRING;
if (menuItem.is_checked)
{
uFlags |= MF_CHECKED;
}
if (!menuItem.is_enabled)
{
uFlags |= MF_DISABLED;
}
//Add "menuItem.name" to "pop_menu", and set "uFlags".
}
}
}
}
virtual MenuItemEx PopupMenuEx(const MenuItemExArray& menus, bool& is_selected_item){
//Create a new pop-up menu"pop_menu".
//parse menus
AppendMenuWithArrayEx(menus, pop_menu)
//Get the current position "point"of mouse.
//Display "pop_menu" in coordinate "point".
//Determine whether the mouse clicks on a menu item or clicks on a blank space
if(Mouse click on a menu item){
is_selected_item = true;
return the name of menu item clicked on.
}else{
is_selected_item = false;
return MenuItemEx();
}
}
|
GetAppInfo
app.alert(app.appVersion) |
virtual WString GetAppInfo(AppInfoType type){
WString info = L"";
switch(type)
{
case foxit::ActionCallback::e_AppInfoTypeFormsVersion:
info = L"7.3";
break;
case foxit::ActionCallback::e_AppInfoTypeViewerType:
info = L"Exchange-Pro";
break;
case foxit::ActionCallback::e_AppInfoTypeViewerVariation:
info = L"full expired";
break;
case foxit::ActionCallback::e_AppInfoTypeViewerVersion:
info = L"11.007";
break;
case foxit::ActionCallback::e_AppInfoTypeAppVersion:
info = L"5.6";
break;
}
return info;
}
|
MailData
app.mailMsg(false, "[email protected]; [email protected]", "", "", "This is the subject", "This is the body of the mail."); |
virtual bool MailData(void* data, MailType data_type, bool is_ui, CONSTCWSTR to,
CONSTCWSTR subject, CONSTCWSTR cc, CONSTCWSTR bcc, CONSTCWSTR message){
//data_type = ActionCallback::e_MailTypeMsg
//Send Email:[email protected]; [email protected]
//Title:This is the subject
//Text:This is the body of the mail.
if(successfully sent)
return true;
else
return false;
}
|
VerifySignature
var f = this.getField("Signature");
f.signatureValidate();
var Info = f.signatureInfo();
app.alert(Info.dateTrusted);
|
virtual uint32 VerifySignature(const pdf::PDFDoc& document, const pdf::Signature& pdf_signature){
// Here's a simple sample about verifying a signature by LTVVerifier.
LTVVerifier ltv_verifier(document, true, true, false, LTVVerifier::e_SignatureCreationTime);
ltv_verifier.SetVerifyMode(LTVVerifier::e_VerifyModeAcrobat);
SignatureVerifyResultArray sig_verify_result_array = ltv_verifier.VerifySignature(pdf_signature);
size_t size = sig_verify_result_array.GetSize();
if (size == 0) return 0;
return sig_verify_result_array[0].GetSignatureState();
}
|
GetUntitledBookmarkName
this.bookmarkRoot.createChild("", "this.pageNum++");//New bookmark not named
|
virtual WString GetUntitledBookmarkName(){
return "Untitled";//Use it as the name of the new bookmark
}
|
GetPrinterNameList
var l = app.printerNames.length;
for ( var i = 0; i < l; i++)
app.alert("(" + (i+1) + ") " + app.printerNames[i]);
|
virtual WStringArray GetPrinterNameList(){
//return list of printer names
WString printer_name[] = { L"Adobe PDF", L"Fax", L"Foxit PDF Editor Printer" ,L"Microsoft Print to PDF" };
WStringArray printer_names;
for (int i = 0; i < sizeof(printer_name) / sizeof(printer_name[0]); i++) {
printer_names.Add(printer_name[i]);
}
return printer_names;
}
|
AddToolButton,RemoveToolButtom
app.addToolButton({ cName: "newBotton", cExec: "app.alert('!')" })
app.removeToolButton({ cName: "newBotton"})
|
virtual bool AddToolButton(const ButtonItem& button_item){
//Add a button to the program toolbar
//button name = button_item.name
//add "button_item.exec" as action to button
}
virtual bool RemoveToolButtom(CONSTCWSTR button_name){
// remove the button which name is "button_name"
}
|
GetMenuItemNameList
var menuItems = app.listMenuItems(); for( var i in menuItems) app.alert(menuItems[i].cName + "\n") |
virtual MenuListArray GetMenuItemNameList(){
//Return to the main menu of the program and its submenus
WString name_array[] = { L"File", L"Home", L"Convert", L"Edit", L"Form" };
WString name_array_home[] = { L"Home_Tools_HandMenuItem",
L"Home_Tools_Select"};
WString name_array_home_select[] = { L"Home_Tools_TextSelection",
L"Home_Tools_AnnotSelection" };
MenuListArray home_sel_menu_list_array;
for (int i = 0; i < sizeof(name_array_home_select) / sizeof(name_array_home_select[0]); i++) {
MenuList menu_list = MenuList(0, name_array_home_select[i], MenuListArray());
home_sel_menu_list_array.Add(menu_list);
}
MenuListArray home_menu_list_array;
for (int i = 0; i < sizeof(name_array_home) / sizeof(name_array_home[0]); i++) {
MenuList menu_list = MenuList(0, name_array_home[i], home_sel_menu_list_array);
home_menu_list_array.Add(menu_list);
}
MenuListArray menu_list_array;
for (int i = 0; i < sizeof(name_array) / sizeof(name_array[0]); i++) {
MenuList menu_list = MenuList(0,name_array[i], home_menu_list_array);
menu_list_array.Add(menu_list);
}
return menu_list_array;
}
|
AddMenuItem
app.addMenuItem({
cName: "1",
cParent: "Convert",
cExec:"app.alert('My Menu!');",
nPos: "Home_Tools_HandMenuItem",
bPrepend: false });
|
virtual bool AddMenuItem(const MenuItemConfig& menu_item_config, bool is_prepend){
//Add a menu to menu "Convert",menu name is "1",添加位置在Home_Tools_HandMenuItem(menu_item_config.pos_str)之后,点击菜单会运行app.alert('My Menu!')
}
|
AddSubMenu
app.addSubMenu({
cName: "2",
cParent: "Convert",
nPos: "Home_Tools_HandMenuItem" });
|
virtual bool AddSubMenu(const MenuItemConfig& menu_item_config){
//Add menu items with submenus to the application,the above JavaScript code just use "name","user","parent","pos/pos_str"of"menu_item_config".
//Add a dropdown menu under the menu "Convert",menu name is 2. Add location: under "Home_Tools_HandMenuItem"(menu_item_config.pos_str)
}
|
ShowDialog
var dialog0 = {
description: {
name: "JavaScript",
//first_tab:,
width: 600,
height: 500,
char_width: 0,
//Test Value: 0
char_height: 0,
//align_children:"align_center",
elements: [
{ //ok_cancel Button
type: "ok_cancel",
ok_name: "Ok",
cancel_name: "Cancel",
alignment: "align_right"
}]
}
};
app.execDialog(dialog0);
|
virtual bool ShowDialog(const DialogDescriptionConfig& dlg_config){
//Create a dialog box, 'dlg_config' used to transfer the content of 'description' in the JavaScript script
}
|
Dialog example
GetFullScreen,SetFullScreen
var f = app.fullscreen; app.fullscreen = true; |
virtual bool GetFullScreen(){
if(Currently in full screen mode)
return true;
else
return false;
}
virtual void SetFullScreen(bool is_full_screen){
if(is_full_screen)
//Enter full screen mode.
else
//Set to Normal Mode.
}
|
OnFieldValueChanged
Triggered when the value of the form changes, used to notify users, allowing them to freely play.
virtual void OnFieldValueChanged(CONSTCWSTR field_name, JSFieldValueChangeType type, const WStringArray &value_before_changed, const WStringArray &value_after_changed){}
|
MailDoc
this.mailDoc({
bUI: false,
cTo: "[email protected]",
cCC: "[email protected]",
cSubject: "The Latest News",
cMsg: "A.P., attached is my latest news story in PDF."
});
|
virtual JsMailResult MailDoc(const pdf::PDFDoc& document,
CONSTCWSTR to_address, CONSTCWSTR cc_address, CONSTCWSTR bcc_address,
CONSTCWSTR subject, CONSTCWSTR message, bool is_ui){
//Send the email with 'document' as an attachment, and refer to 'MailData' for other parameters.
}
|
GetTemporaryFileName
this.mailForm(false, "[email protected]; [email protected]", "", "", "This is the subject", "This is the body of the mail.");//Export the form and send the generated FDF file as an attachment to the email. |
virtual WString GetTemporaryFileName(const pdf::PDFDoc& document, CONSTCWSTR file_suffix_name){
//"mailForm"needs a temporary path to save the form data exported from 'document'
return "D:/temp.fdf";
}
|
OpenMediaPlayer
var myURLClip = "https://tntfiles.com/download/e04b7283fadece2d806222a70adebf6713fcbc7817e5428eb011b3ab27a4fede/DJ%E5%B0%8F%E5%85%AE%20-%20%E7%88%B1%E4%BD%A0%E4%B8%8D%E9%9C%80%E8%A6%81%E4%BB%BB%E4%BD%95%E7%9A%84%E7%90%86%E7%94%B1%20-%20DJ%E5%8A%A0%E5%BF%AB%E7%89%88.mp3";
var args1 = {
URL: myURLClip,
mimeType: "audio/mp3",
doc: this,
settings: {
players: app.media.getPlayers("audio/mp3"),
windowType: app.media.windowType.floating,
data: app.media.getURLData(myURLClip,"audio/mp3"),
floating: { height: 500, width: 700 }
}
}
var player = app.media.openPlayer(args1);
var p = player.isPlaying;
player.stop();
var settings = player.settings;
|
class MediaPlayerHandler: public MediaPlayerCallback {
public:
virtual void Release(){}
virtual bool Play() {
//Play video.
if(Played successfully)
return true;
else
return false;
}
virtual void Close() {
//Turn off player.
}
virtual bool Stop() {
//Stop playing
}
virtual bool Seek(int current_pos){
//Set the progress bar value to "current_pos".
}
virtual JSMediaPlayerState GetState() {
switch(player status){
case playing:
return e_JSMediaPlayerStatePlaying;
case closed:
return e_JSMediaPlayerStateClose;
case open:
return e_JSMediaPlayerStateOpen;
case stop:
return e_JSMediaPlayerStateStop;
case suspend:
return e_JSMediaPlayerStateSuspend;
}
}
virtual MediaSettings GetPlayerSettings(){
//return player's setting.
}
}
virtual MediaPlayerCallback* OpenMediaPlayer(const PlayerArgs& player_args){
//'player_args' is used to transfer the data of' args1 'in the script
//Create a video playback window,
return the corresponding 'MediaPlayerHandler' object in the playback window.
}
|
GetTemporaryDirectory
//Extract page to generate a new document, no save path specified. var re=this.extractPages(0,1); |
virtual WString GetTemporaryDirectory(){
//return directory used to save temporary files.
return "D:/Temp/"
}
|
Scroll
this.scroll(400,800); |
virtual void Scroll(const PointF& point){
//Scroll the view until 'point' is in the middle of the view
}
|
SelectPageNthWord
var cWord = this.getPageNthWord(1, 0); app.alert(cWord) |
virtual void SelectPageNthWord(int page_index, int start_offset, int end_offset, bool is_show_selection){
//Select the characters in the index page with an offset from "start_offset" to "end_offset".
if(is_show_selection == true){//Show Selected}
else{ //Do not display}
}
|
GetMousePosition
var x = this.mouseX; var y = this.mouseY; |
virtual PointF GetMousePosition(){
//Returns the device coordinates of the mouse.
}
|
GetPageWindowRect
//pageWindowRect
app.alert("pageWindowRect: " + this.pageWindowRect);
|
virtual RectF GetPageWindowRect(){
//Returns the 'rect' of the current document view (window displaying the document)
}
|
GetLayoutMode,SetLayoutMode
this.layout="OneColumn"; app.alert(this.layout); |
virtual LayoutMode GetLayoutMode(){
//Returns the browsing mode of the current reader
switch (browse mode) {
case single page browsing:
return ActionCallback::e_LayoutModeSinglePage;
break;
case Continuous single page browsing:
return ActionCallback::e_LayoutModeContinuous;
break;
case Double page browsing:
return ActionCallback::e_LayoutModeFacing;
break;
case Continuous dual page browsing:
return ActionCallback::e_LayoutModeContinuousFacing;
break;
}
}
virtual void SetLayoutMode(LayoutMode layout_mode, bool is_cover_mode){
switch (layout_mode) {
case ActionCallback::e_LayoutModeSinglePage:
browse mode = single page browsing;
break;
case ActionCallback::e_LayoutModeContinuous:
browse mode = Continuous single page browsing;
break;
case ActionCallback::e_LayoutModeFacing:
browse mode = Double page browsing;
break;
case ActionCallback::e_LayoutModeContinuousFacing:
browse mode = Continuous dual page browsing;
break;
}
if(is_cover_mode == true)
The cover is not affected by browsing mode and is always displayed separately.
}
|
GetPageScale
//Read var zoom = this.zoom; |
virtual float GetPageScale(){
//Returns the current view page zoom value.
}
|
SetPageScale
//Write this.zoom = 200; //FitHeight this.zoomType = zoomtype.fitH; |
virtual void SetPageScale(foxit::pdf::Destination::ZoomMode zoom_mode, const foxit::pdf::Destination& dest){
switch (zoom_mode) {
case foxit::pdf::Destination::e_ZoomXYZ:
//Set Zoom Mode
break;
case foxit::pdf::Destination::e_ZoomFitPage:
//Set Zoom Mode
break;
case foxit::pdf::Destination::e_ZoomFitHorz:
//Set Zoom Mode
break;
case foxit::pdf::Destination::e_ZoomFitVert:
//Set Zoom Mode
break;
case foxit::pdf::Destination::e_ZoomFitRect:
//Set Zoom Mode
break;
default:
break;
}
objects::PDFArray* arr = dest.GetDestArray();//The third value of 'arr' is the scaling value
}
|
GetPageZoomMode
var type = this.zoomType; |
virtual foxit::pdf::Destination::ZoomMode GetPageZoomMode(){
foxit::pdf::Destination::ZoomMode zoom_mode;
switch (Current View Adaptation Mode) {
case PDFZOOM_XYZ:
zoom_mode = foxit::pdf::Destination::e_ZoomXYZ;
break;
case PDFZOOM_FITPAGE:
zoom_mode = foxit::pdf::Destination::e_ZoomFitPage;
break;
case PDFZOOM_FITHORZ:
zoom_mode = foxit::pdf::Destination::e_ZoomFitHorz;
break;
case PDFZOOM_FITVERT:
zoom_mode = foxit::pdf::Destination::e_ZoomFitVert;
break;
case PDFZOOM_FITRECT:
zoom_mode = foxit::pdf::Destination::e_ZoomFitRect;
break;
default:
break;
}
return zoom_mode;
}
|
Query
search.query("Foxit","Folder","F:/DingDing");
|
virtual void Query(CONSTCWSTR keywords, SearchScope search_scope, const SearchOption& search_option, CONSTCWSTR di_path){
//Create Search
switch (search_scope) {
case ActionCallback::e_SearchScopeActiveDoc:
Search for 'keywords' in the current document
break;
case ActionCallback::e_SearchScopeFolder:
Search for 'keywords' in the PDF file in the folder specified by' di_path ';
break;
case ActionCallback::e_SearchScopeIndex:
Search for 'keywords' for files included in the index file specified in' di_path ';
break;
case ActionCallback::e_SearchScopeActiveIndexes:
Search for 'keywords' in the files included in the selected index file in the current index list;
break;
default:
break;
}
}
|
AddSearchIndex
search.addIndex("c:/program files/exchhelp.xml",true);
|
virtual SearchIndexConfig AddSearchIndex(CONSTCWSTR di_path, bool is_selected){
//Add the index specified by 'di_path' to the index list and set the name 'index1' for the index
if(is_selected)
Set the index to the selected state, and when the search scope of Query is "ActionCallback:: eSearchScopeActiveIndexes", search in the selected index
return SearchIndexConfig("index1",true, di_path, is_selected);
}
|
GetSignatureAPStyleNameList
///appearances///
var myEngine = security.getHandler("Adobe.PPKLite");
var appArray = myEngine.appearances;
for( var i = 0; i < appArray.length; i++)
app.alert(appArray[i]);
|
std::map<WString, uint32> map_ap;
virtual WStringArray GetSignatureAPStyleNameList(){
uint32 flag1 = Signature::e_APFlagLabel|Signature::e_APFlagSigner|Signature::e_APFlagReason
|Signature::e_APFlagDN | Signature::e_APFlagLocation | Signature::e_APFlagText
|Signature::e_APFlagSigningTime | Signature::e_APFlagBitmap | Signature::e_APFlagFoxitFlag;
//Name flag1 style1
map_ap["style1"] = flag1;
uint32 flag2 = Signature::e_APFlagLabel|Signature::e_APFlagSigner|Signature::e_APFlagReason
|Signature::e_APFlagDN | Signature::e_APFlagLocation | Signature::e_APFlagText
|Signature::e_APFlagSigningTime | Signature::e_APFlagBitmap;
//name flag2 style2
map_ap["style2"] = flag2;
foxit::WStringArray arr;
arr.Add(L"style1");
arr.Add(L"style2");
return arr;
}
|
Updated on December 1, 2023