Some test text!
Web / Guides / Polyline
Polyline annotations are similar to line annotations except users can draw multiple, connected lines on their documents. Unlike working with line annotations, where you only have a start and end, you will be working with a path of points.
Polyline annotations can have a start and ending style. They primarily use a stroke color but could have a fill color that only affects closed line ending styles. The stroke or border style can also be changed between a solid or dashed style, which will also affect line endings.
While creating the polyline create tool, double-clicking will automatically close the path.
WebViewer(...)
.then(instance => {
const { documentViewer, annotationManager, Annotations } = instance.Core;
documentViewer.addEventListener('annotationsLoaded', () => {
const annot = new Annotations.PolylineAnnotation({
PageNumber: 1,
StrokeColor: new Annotations.Color(0, 255, 0, 1),
});
annot.addPathPoint(50, 50);
annot.addPathPoint(75, 100);
annot.addPathPoint(100, 50);
annot.addPathPoint(125, 100);
annot.addPathPoint(150, 50);
annotationManager.addAnnotation(annot);
annotationManager.redrawAnnotation(annot);
});
});
Element name: polyline
<polyline page="0" rect="245.230,604.240,350.360,666.640" color="#E44234" flags="print" name="8e0f908d-1377-d579-034d-e29df522af7f" title="Guest" subject="Polyline" date="D:20220627155849-07'00'" creationdate="D:20220627155845-07'00'" head="None" tail="None">
<vertices>246.23,605.24;263.88,655.41;317.77,605.24;349.36,665.64</vertices>
</polyline>
Gets or sets the page number of a document that the annotation appears on.
For the full list of properties, please visit the annotation's API docs.
Gets or sets the color of the annotation's stroke.
Gets or sets the border style of an annotation. Possible styles include:
Gets or sets the border dash style of an annotation. This expects a string representing the length of dashes and spacing inbetween, delimited by commas (ex. 3, 3
). You can specify any amount of lengths but, an odd number of values will be made even by cloning it as a second set. To understand further, you can read more about the setLineDash
API.
Gets or sets the width of the annotation's stroke outline.
The author of the annotation.
Gets or sets the annotation's stroke color.
Gets or sets whether the annotation is hidden.
Gets or sets whether the annotation is invisible, only if it is an unknown annotation type. Generally for hiding annotations you should use "Hidden".
Gets or sets whether any parts of the annotation drawn outside of the rect are clickable.
Gets or sets whether the annotation should be listed in annotation lists. If set to false, the annotation will also become unselectable.
Gets or sets whether the annotation is locked or not. If it's locked it can't be edited or deleted, but the note can be edited.
Gets or sets whether the annotation contents are locked or not. If the contents are locked then note can't be edited but the annotation can be edited or deleted.
Gets or sets if this annotation can be deleted.
Gets or sets whether or not the annotation can be moved.
Gets or sets if this annotation can be resized by the user.
Gets or sets if this annotation can be rotated.
Gets or sets whether the annotation is visible on the screen. Differs from Hidden in that it can still be printed if the print flag is set.
Gets or sets if this annotation scales with the page.
Gets or sets whether the annotation should be displayed when printing the page.
Gets or sets whether the annotation is readonly or not. If it's readonly both the annotation itself and its note can't be edited or deleted.
Gets or sets whether the ToggleNoView flag is set on the annotation.
When initializing the polyline annotation, you should use the addPathPoint
API to add points the annotation path.
To read the path or points of the polyline annotation, you can use getPath
to get an array of points.
WebViewer(...)
.then(instance => {
const { documentViewer, annotationManager, Annotations } = instance.Core;
documentViewer.addEventListener('annotationsLoaded', () => {
const annotList = annotationManager.getAnnotationsList();
annotList.forEach(annot => {
if (annot instanceof Annotations.PolylineAnnotation) {
const points = annot.getPath();
points.forEach(point => {
// Work with points
});
}
});
});
});
If you know which point of the annotation path you would like to get, you can use getPathPoint
with the point index to retrieve the point.
Setting the path points on the polyline annotation can be done through setPathPoint
.
WebViewer(...)
.then(instance => {
const { documentViewer, annotationManager, Annotations } = instance.Core;
documentViewer.addEventListener('annotationsLoaded', () => {
const annotList = annotationManager.getAnnotationsList();
annotList.forEach(annot => {
if (annot instanceof Annotations.PolylineAnnotation) {
annot.setPathPoint(0, 50, 100);
annot.setPathPoint(1, 250, 150);
}
});
});
});
If you need to know the line ending style of the starting point, the getStartStyle
API will return the string value representing the style. Check out LineEndType
to see the possible values.
To set the style of the starting point of a line, the 'setStartStyle' API will change it to the specified style. It is recommended to use the LineEndType
constant to get the value.
WebViewer(...)
.then(instance => {
const { annotationManager, Annotations } = instance.Core;
annotationManager.addEventListener('annotationChanged', (annotations, action) => {
if (action === 'add') {
annotations.forEach(annot => {
if (annot instanceof Annotations.PolylineAnnotation) {
annot.setStartStyle(Annotations.LineEndType.OPEN_ARROW);
}
});
}
});
});
If you need to know the line ending style of the ending point, the getEndStyle
API will return the string value representing the style. Check out LineEndType
to see the possible values.
To set the style of the ending point of a line, the 'setEndStyle' API will change it to the specified style. It is recommended to use the LineEndType
constant to get the value.
WebViewer(...)
.then(instance => {
const { annotationManager, Annotations } = instance.Core;
annotationManager.addEventListener('annotationChanged', (annotations, action) => {
if (action === 'add') {
annotations.forEach(annot => {
if (annot instanceof Annotations.PolylineAnnotation) {
annot.setEndStyle(Annotations.LineEndType.OPEN_ARROW);
}
});
}
});
});
The line annotation ending styles can be set with the values provided by the LineEndType
constant or strings. The string values of the line ending styles supported by the specification are:
FillColor
.FillColor
.FillColor
.FillColor
.FillColor
.StrokeThickness
also affects the size of the line endings.
Trial setup questions? Ask experts on Discord
Need other help? Contact Support
Pricing or product questions? Contact Sales