About annotation UI and Signature UI

Do you have annotation Ui and signature UI similar to viewer ui in java application

@doccept

You can find demo projects for Annotation and Signature for Java at:

Please let us know if it is what you was looking for.

I would like to know if there is UI also available or not

we have to made Ui for all annotation to add

@doccept

There is Angular UI for Annotation and other products at GitHub - groupdocs-total/GroupDocs.Total-Angular: Angular based UI for GroupDocs Products. While it is not actively supported now you can find the app built upon it at Annotate Documents Online | Free GroupDocs Apps as an example.

Will I be able to integrate these online apps in my project

@doccept

Unfortunately, Online Apps do not provide integration option at the moment but you can achieve similar results using Annotation Demo Projects or with GroupDocs.Total-Angular and your backend with GroupDocs products.

ok do I need to deploy it separately or will it be merged with spring +angular system

@doccept

In case you take one of the demo projects it is spring + angular in one project.

In groupdocs total angular there are librabry for angular 14+ but my project is based on angular 1 so is there is some library for js only

@doccept

Unfortunately there is no vanilla JavaScript UI. There are two packages that are no longer supported that are built based on Jquery:

The examples based on Spring can be found at

Hope it helps.

I have integrated jquery plugin but its frontend is visible file is loading but not trigerring any click event can you help on that

any annotation button are not working

Thanks Issue is somewhere in this method after this only annotation are creating one page before than the original

@Override
public AnnotatedDocumentEntity annotate(AnnotationPostedDataEntity annotateDocumentRequest) {
AnnotatedDocumentEntity annotatedDocument = new AnnotatedDocumentEntity();
try {
// get/set parameters
String documentGuid = annotateDocumentRequest.getGuid();
String password = annotateDocumentRequest.getPassword();

        //String documentType1 = DocumentTypesConverter.checkedDocumentType(documentGuid, annotateDocumentRequest.getDocumentType());
        String documentType = SupportedImageFormats.contains(
            FilenameUtils.getExtension(annotateDocumentRequest.getGuid())
        ) ? "image" : annotateDocumentRequest.getDocumentType();
       
        String tempPath = getTempPath(documentGuid);

        AnnotationDataEntity[] annotationsData = annotateDocumentRequest.getAnnotationsData();
        // initiate list of annotations to add
        List<AnnotationBase> annotations = new ArrayList<>();

        final Annotator annotator = new Annotator(documentGuid, getLoadOptions(password));
        try {
            IDocumentInfo info = annotator.getDocument().getDocumentInfo();

            for (int i = 0; i < annotationsData.length; i++) {
                AnnotationDataEntity annotationData = annotationsData[i];
                PageInfo pageInfo = info.getPagesInfo().get(annotationsData[i].getPageNumber() - 1);
                // add annotation, if current annotation type isn't supported by the current document type it will be ignored
                try {
                    BaseAnnotator baseAnnotator = AnnotatorFactory.createAnnotator(annotationData, pageInfo);
                    if (baseAnnotator.isSupported(documentType)) {
                        annotations.add(baseAnnotator.getAnnotationBase(documentType));
                    }
                } catch (java.lang.RuntimeException ex) {
                    throw new AnnotatorException(ex.getMessage(), ex);
                }
            }
        } finally {
            if (annotator != null) {
                annotator.dispose();
            }
        }

        // Add annotation to the document
        removeAnnotations(documentGuid, password);
        // check if annotations array contains at least one annotation to add
        if (annotations.size() != 0) {
            final Annotator annotator1 = new Annotator(documentGuid, getLoadOptions(password));
            try {
                //foreach to while statements conversion
                Iterator tmp0 = (annotations).iterator();

                while (tmp0.hasNext()) {
                    AnnotationBase annotation = (AnnotationBase) tmp0.next();
                    annotator1.add(annotation);
                }

                annotator1.save(tempPath);
            } finally {
                if (annotator1 != null) {
                    annotator1.dispose();
                }
            }

            try (OutputStream fileStream = new FileOutputStream(documentGuid)) {
                InputStream inputStream1 = new FileInputStream(tempPath);
                IOUtils.copyLarge(inputStream1, fileStream);
            }
        }

        annotatedDocument = new AnnotatedDocumentEntity();
        annotatedDocument.setGuid(documentGuid);
        if (annotateDocumentRequest.getPrint()) {
            annotatedDocument.setPages(getAnnotatedPagesForPrint(password, documentGuid));
            Files.move(Paths.get(documentGuid), Paths.get(annotateDocumentRequest.getGuid()));
        }
    } catch (Exception ex) {
        // set exception message
        throw new TotalGroupDocsException(ex.getMessage());
    }

    return annotatedDocument;

@doccept

Can you please share a complete minimal sample application so we could reproduce the issue on our side?

Hi Vladimir,

I have fixed that but now when I annotating and then refreshing the documents annotation are visible one page before the actual page do you know where should I check that

@doccept

Unfortunately, it is quite hard to to see what’s going on without looking into code. It is possible that the page number passed to the API is actually page index, mostly likely.

Hi Vladimir,

I have fixed that but now when I annotating and then refreshing the documents annotation are visible one page before the actual page do you know where should I check that

@doccept

Can you please share the sample app, so we could reproduce it?

I have this repo for backend GitHub - groupdocs-annotation/GroupDocs.Annotation-for-Java-Spring: Moved to https://github.com/groupdocs-annotation/GroupDocs.Annotation-for-Java/tree/master/Demos/Spring and https://www.npmjs.com/package/@groupdocs.examples.jquery/annotation this in frontend