From Tracker Software PDF SDK
Jump to: navigation, search


The operation forms undo/redo data, sends correspondent events and modifies the document when the annotations were added on the Core level.


Name Type Description
Input Array Array of IUnknown-based objects containing the IPXC_Annotation objects that were inserted to the document on the Core level. Note that all of the annotations must belong to one document.
Output Array Array of IUnknown-based objects containing the IPXC_Document to which the annotations were added.


private void AddSquareAnnotation(PDFXEdit.IPXV_Document pDoc, PDFXEdit.PXV_Inst pInst)
	if (pDoc == null)
	PDFXEdit.IPXC_Page pPage = pDoc.CoreDoc.Pages[0];
	PDFXEdit.PXC_Rect rc;
	rc.left = 50;
	rc.right = 100;
	rc.top = 50;
	rc.bottom = 100;
	PDFXEdit.IPXS_Inst pSInt = (PDFXEdit.IPXS_Inst)pInst.GetExtension("PXS");
	//Inserting square annotation as example
	uint nSquare = pSInt.StrToAtom("Square");
	PDFXEdit.IPXC_Annotation pAnnot = pPage.InsertNewAnnot(nSquare, ref rc, 0);
	if (pAnnot == null)

	//Modifying annotation data so that we will have dashed lines of chosen color with given opacity
	PDFXEdit.IPXC_AnnotData_SquareCircle SQData = (PDFXEdit.IPXC_AnnotData_SquareCircle)pAnnot.Data;
	SQData.Opacity = 0.7;
	var color = auxInst.CreateColor(PDFXEdit.ColorType.ColorType_RGB);
	color.SetRGB(0.0f, 1.0f, 1.0f);
	SQData.Color = color;
	var border = new PDFXEdit.PXC_AnnotBorder();
	border.nStyle = PDFXEdit.PXC_AnnotBorderStyle.ABS_Dashed;
	border.nWidth = 4.0f;
	border.DashArray = new float[10];
	border.DashArray[0] = border.DashArray[1] = 16.0f; //Width of dashes
	border.nDashCount = 2; //Number of dashes
	pAnnot.Data = SQData;

	//Creating the operation that will send the event that the annotation was added to all of the listeners
	int nID = pInst.Str2ID("op.annots.addNew", false);
	PDFXEdit.IOperation pOp = pInst.CreateOp(nID);
	PDFXEdit.ICabNode input = pOp.Params.Root["Input"];
	input.Add().v = pAnnot;