• RE: .NET API > Automatic merging of layers

    Tom,
    Here's a modification of something we had which borrows code from the examples, knowledgebase, and some of Joe Kaufman's code he posted a bunch of years ago. The example code will merge the layers in all of the sections (if it has multiple sections) of a document with a particular name ("blankPage1"), which is presumed to be in the query results.
    Charles
  • RE: Number of documents in each document tray

    Not sure if this would help, but the count of documents in a tray can be shown by clicking on a "count" link for a tray from the list of dialogs accessible from the Platform Service<br> http://&lt;local docuware url&gt;/DocuWare/Platform/Organizations/Dialogs<br> <br> Charles<br> <br> &nbsp;
  • TextEntry Annotation Doesn't Use Width and Height of AnnotationRectangle?

    Using the .NET API, the Location (AnnotationRectangle) for a TextEntry annotation has a position (Top, Left), but the dimensions (Width, Height) end up both as 0. If the TextEntry annotation is set using the web client or using the Platform API, you seem to get the same result - always 0. The web client does seem to understand what the size of the rectangle that you're typing in, however, and adds CR/LF at the right spots to get multi-line text to "fit" into the text area rectangle. But if you use the Platform API, you have to insert the CR/LF yourself to prevent long text annotations from running off the page. Is that a bug or by design? If the TextEntry Location were really designed to use only the Top and Left parts of the AnnotationRectangle, one would have expected the example for placing the TextEntry annotation to have zeros for the Height and Width. 
    (Observed using 7.1 and 7.4)
  • RE: Docuware API: how to delete ANNOTATIONS ?

    To delete an annotation on a layer, you can modify the example for adding annotations and include the Id (which is a GUID) of the annotation to be deleted.

            public static Annotation DeleteAnnotationOnPage(Page page, int layer, string annotationId)
            {
                Annotation deleteAnnotationEntry = new Annotation()
                {
                    Layer = new List<Layer>()
                    {
                        new Layer()
                        {
                            Id = layer,
                            Items = new List<EntryBase>()
                            {
                                new DeleteEntry()
                                {
                                    Id = annotationId
                                }
                            }
                        }
                    }
                };
                
                Annotation postDeleteAnnotation = page.PostToAnnotationRelationForAnnotation(deleteAnnotationEntry);
                return postDeleteAnnotation;
            }

    The annotation is obtained from the EntryBase object, as here:

                Pages docSectionPages = docSection.PostToPagesBlockRelationForPages(qPagesBlock);
                List<Page> pageCollection = docSectionPages.Page;
                foreach (Page secPage in pageCollection)
                    {
                        Annotation pageAnnotation = secPage.GetAnnotationFromAnnotationRelation();
                        List<Layer> annotationLayers = pageAnnotation.Layer;
                        DWpageNumLayers = annotationLayers.Count;

                        for (int jindex = 0; jindex < DWpageNumLayers; jindex++)
                        {
                            List<EntryBase> layerBaseEntries = annotationLayers[jindex].Items;

                            foreach (EntryBase layerBaseEntry in layerBaseEntries)
                            {
                                anyAnnotationId = layerBaseEntry.Id;
                                // layers are 1-based
                                DeleteAnnotationOnPage(secPage, jindex + 1, anyAnnotationId);
                            } 
                        }
                    }