Perimeter Annotation in ASP.NET Core PDF Viewer
14 Aug 20268 minutes to read
Perimeter is a measurement annotation used to calculate the length around a closed polyline on a PDF page—useful for technical markups and reviews.

Enable Perimeter Measurement
In the ASP.NET Core PDF Viewer, annotation modules such as Perimeter annotation are enabled by default.
<div style="width:100%;height:650px">
<ejs-pdfviewer id="pdfviewer"
style="height:650px"
documentPath="https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf"
resourceUrl="https://cdn.syncfusion.com/ej2/31.2.2/dist/ej2-pdfviewer-lib">
</ejs-pdfviewer>
</div>Add Perimeter Annotation
Add Perimeter Annotation Using the Toolbar
- Open the Annotation Toolbar.
- Select Measurement → Perimeter.
- Click multiple points to define the polyline; double‑click to close and finalize the perimeter.

If Pan mode is active, choosing a measurement tool switches the viewer into the appropriate interaction mode for a smoother workflow.
Enable Perimeter Mode
Programmatically switch the viewer into Perimeter mode.
<script>
function enablePerimeterMode() {
var viewer = document.getElementById('pdfviewer').ej2_instances[0];
viewer.annotation.setAnnotationMode('Perimeter');
}
</script>Exit Perimeter Mode
<script>
function exitPerimeterMode() {
var viewer = document.getElementById('pdfviewer').ej2_instances[0];
viewer.annotation.setAnnotationMode('None');
}
</script>Add Perimeter Programmatically
Use the addAnnotation API to draw a perimeter by providing multiple vertexPoints.
<script>
function addPerimeter() {
var viewer = document.getElementById('pdfviewer').ej2_instances[0];
viewer.annotation.addAnnotation('Perimeter', {
offset: { x: 200, y: 350 },
pageNumber: 1,
vertexPoints: [
{ x: 200, y: 350 },
{ x: 285, y: 350 },
{ x: 286, y: 412 }
]
});
}
</script>Customize Perimeter Appearance
Configure default properties using the Perimeter Settings property (for example, default fill color, stroke color, opacity).
<div style="width:100%;height:650px">
<ejs-pdfviewer id="pdfviewer"
style="height:650px"
documentPath="https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf"
resourceUrl="https://cdn.syncfusion.com/ej2/31.2.2/dist/ej2-pdfviewer-lib">
</ejs-pdfviewer>
</div>
<script>
window.onload = function () {
var viewer = document.getElementById('pdfviewer').ej2_instances[0];
viewer.perimeterSettings = { fillColor: 'blue', strokeColor: 'green', opacity: 0.6 };
}
</script>Manage Perimeter (Move, Reshape, Edit, Delete)
- Move: Drag inside the shape to reposition it.
- Reshape: Drag any vertex handle to adjust points and shape.
Edit Perimeter
Edit Perimeter (UI)
- Edit the fill color using the Edit Color tool.
- Edit the stroke color using the Edit Stroke Color tool.
- Edit the border thickness using the Edit Thickness tool.
- Edit the opacity using the Edit Opacity tool.
- Open Right Click → Properties for additional line‑based options.
Edit Perimeter Programmatically
Update properties and call editAnnotation().
<script>
function editPerimeterProgrammatically() {
var viewer = document.getElementById('pdfviewer').ej2_instances[0];
for (var i = 0; i < viewer.annotationCollection.length; i++) {
var ann = viewer.annotationCollection[i];
if (ann.subject === 'Perimeter calculation') {
ann.strokeColor = '#0000FF';
ann.thickness = 2;
ann.fillColor = '#FFFF00';
viewer.annotation.editAnnotation(ann);
break;
}
}
}
</script>Delete Perimeter Annotation
Delete Perimeter Annotation via UI (toolbar/context menu) or programmatically. For supported workflows and APIs, see Delete Annotation.
Set Default Properties During Initialization
Apply defaults for Perimeter using the perimeterSettings property.
<div style="width:100%;height:650px">
<ejs-pdfviewer id="pdfviewer"
style="height:650px"
documentPath="https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf"
resourceUrl="https://cdn.syncfusion.com/ej2/31.2.2/dist/ej2-pdfviewer-lib">
</ejs-pdfviewer>
</div>
<script>
window.onload = function () {
var viewer = document.getElementById('pdfviewer').ej2_instances[0];
viewer.perimeterSettings = { fillColor: 'green', strokeColor: 'blue', opacity: 0.6 };
}
</script>Set Properties While Adding Individual Annotation
Pass per‑annotation values directly when calling addAnnotation.
<script>
function addStyledPerimeter() {
var viewer = document.getElementById('pdfviewer').ej2_instances[0];
viewer.annotation.addAnnotation('Perimeter', {
offset: { x: 240, y: 360 },
pageNumber: 1,
vertexPoints: [
{ x: 240, y: 360 },
{ x: 320, y: 360 },
{ x: 330, y: 410 }
],
strokeColor: '#1D4ED8',
fillColor: '#DBEAFE',
thickness: 2,
opacity: 0.85
});
}
</script>Scale Ratio and Units
- Use Scale Ratio from the context menu to set the actual‑to‑page scale.
- Supported units include Inch, Millimeter, Centimeter, Point, Pica, Feet.
Set Default Scale Ratio During Initialization
Configure scale defaults using measurementSettings.
<div style="width:100%;height:650px">
<ejs-pdfviewer id="pdfviewer"
style="height:650px"
documentPath="https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf"
resourceUrl="https://cdn.syncfusion.com/ej2/31.2.2/dist/ej2-pdfviewer-lib">
</ejs-pdfviewer>
</div>
<script>
window.onload = function () {
var viewer = document.getElementById('pdfviewer').ej2_instances[0];
viewer.measurementSettings = { scaleRatio: 2, conversionUnit: 'cm', displayUnit: 'cm' };
}
</script>Handle Perimeter Events
Listen to annotation life-cycle events (add/modify/select/remove). For the full list and parameters, see Annotation Events.
Export and Import
Perimeter measurements can be exported or imported with other annotations. For workflows and supported formats, see Export and Import annotations.