Article View: adobe.acrobat.sdk
Article #212Problem with export annotations to FDF file
From: Alexander_Zuban
Date: Thu, 19 Mar 2009 09:17
Date: Thu, 19 Mar 2009 09:17
107 lines
4394 bytes
4394 bytes
Hello,
We develop our Acrobat plug-in which is export annotations from the document to file. We faced with the problem, that when annotation is open in popup editor, export function not saves it correctly. As a workaround we try to detect if there are any open annotations and then ask user to close them before proceed, but this also not work, because when user open annotation with context menu, then application return it's state correctly, but when popup was opened with double click, then annotation state is not recognized as opened. I attached to the current case a code snippet which is scan document for the annotations and check state of the annotation and annotation popup. After that it exports annotations to file. Please could you advice are there any solution for this problem? We noticed that Adobe close all open annotations before export to data file, are there the same think available for plug-In ( PDTextAnnotSetOpen is not work)?
Is anybody solve the simular problem? Any help will be appreciated!
{{{
void SaveFDFFile ()
{
ASFileSys fileSys = ASGetDefaultFileSys();
ASPathName volatile fdfPathName = NULL;
AVDoc avDoc = AVAppGetActiveDoc();
PDDoc pdDoc = AVDocGetPDDoc (avDoc);
bool g_hasOpenPopup = false;
//check annotations
DURING
//get document information
ASInt32 lastPage = PDDocGetNumPages(pdDoc) - 1;
PDPage pdPage;
ASInt32 annotCount;
PDAnnot annotation;
//check each page of the document
for (ASInt32 i=0; i<=lastPage; i++) { pdPage = PDDocAcquirePage(pdDoc, i); annotCount = PDPageGetNumAnnots(pdPage);
//check each annotation on the page
for (ASInt32 j=0; j<annotCount; j++) { annotation = PDPageGetAnnot(pdPage, j); if(PDAnnotIsValid(annotation)) { CosObj dict = PDAnnotGetCosObj(annotation); if(PDTextAnnotIsOpen(annotation)){ //never come here when annotation open with double click g_hasOpenPopup = true; } //check using popup property if(CosDictKnown(dict, ASAtomFromString("Popup"))){ CosObj popup = CosDictGet(dict, ASAtomFromString("Popup")); if(PDTextAnnotIsOpen(popup)){ //never come here when annotation open with double click g_hasOpenPopup = true; }
}
}
}
PDPageRelease (pdPage);
}
HANDLER
char buf[255];
AVAlertNote(ASGetErrorString(ERRORCODE, buf, 254));
END_HANDLER
//export
ASInt32 exportCount;
PDDocWillExportAnnotCallback exportCallback;
exportCallback = ASCallbackCreateProto(PDDocWillExportAnnotCallback, ExportFilter);
CosDoc fdfDoc = PDDocExportNotes(pdDoc, NULL, NULL, NULL, NULL, exportCallback, &exportCount);
ASCallbackDestroy(exportCallback);
//save annotations
fdfPathName = ASFileSysCreatePathName (fileSys, ASAtomFromString("Cstring"),"test.fdf", 0);
ASInt32 errorCode;
ASFile volatile fdfFile = NULL;
CosDocSaveParamsRec params;
// Initialize save params
memset (¶ms, 0, sizeof(CosDocSaveParamsRec));
params.size = sizeof(CosDocSaveParamsRec);
params.header = "%FDF-1.2";
DURING
if (fdfDoc == NULL) {
// if there were no annotations, create a blank document
fdfDoc = CosDocCreate(0);
}
// Create/Open the file
errorCode = ASFileSysOpenFile (fileSys, fdfPathName, ASFILE_CREATE | ASFILE_WRITE, (ASFile*)&fdfFile);
// If we succeeded, save the doc to the file
if (errorCode == 0) {
CosDocSaveToFile (fdfDoc, fdfFile, cosSaveFullSave, ¶ms);
CosDocClose (fdfDoc);
ASFileClose (fdfFile);
} else {
AVAlertNote("Error in saving the fdf file!");
ASRaise (ASFileError(fileErrOpenFailed));
}
HANDLER
if (fdfFile){
ASFileClose (fdfFile);
}
RERAISE();
END_HANDLER
if (fdfPathName){
ASFileSysReleasePath (fileSys, fdfPathName);
}
}
}}}
Thank you in advance!
Alexander
Technical Details
Message-ID:
<59b857ac.-1@webcrossing.la2eafNXanI>Path:
arc1-ca.pugleaf.net!g2news1.google.com!news1.google.com!newshub.sdsu.edu!webcrossingShow Full Headers
Complete Article Headers
X-Google-Thread: 10177e,ee49030ec51b690d,start X-Google-Attributes: gid10177e,domainid0,public,usenet X-Google-Language: ENGLISH,ASCII-7-bit From: Alexander_Zuban@adobeforums.com Path: arc1-ca.pugleaf.net!g2news1.google.com!news1.google.com!newshub.sdsu.edu!webcrossing Newsgroups: adobe.acrobat.sdk Subject: Problem with export annotations to FDF file Message-ID: <59b857ac.-1@webcrossing.la2eafNXanI> Date: Thu, 19 Mar 2009 02:17:19 -0700 Lines: 132 MIME-Version: 1.0 Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: 8bit