agentsclimarketplace

Syncfusion angular pdf viewer

Skill syncfusion/pdf-viewer-sdk-skills/skills/syncfusion-angular-pdf-viewer

Implements the Syncfusion Angular PDF Viewer (PdfViewerComponent) for embedding, configuring, and loading PDF documents. Use this when rendering PDFs in an Angular application, embedding viewer controls, or generating TS/CSS code for PDF display and interaction.From its SKILL.md

Install
npx -y skills add syncfusion/pdf-viewer-sdk-skills --skill syncfusion-angular-pdf-viewer

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

9.7 KB, ~2.2k tokens by cl100k_base, as published. Nobody here has run it

Syncfusion Angular PDF Viewer UI Sample Generator

Target package: @syncfusion/ej2-angular-pdfviewer

Mandatory 3-Step workflow (Strict Enforcement)

EVERY query MUST follow these steps sequentially:

STEP 1: Workspace Detection ? STEP 2: Read Reference File ? STEP 3: Generate Code

Blocking Rules

  1. NO code generation until Steps 1 & 2 are complete
  2. NO assumptions - Always verify workspace AND read reference files first
  3. NO undocumented APIs - Use ONLY APIs from reference files

Violation = STOP and restart with proper protocol


Mandatory Workflow

STEP 1: Workspace Detection (REQUIRED - DO THIS FIRST)

Execute these tools:

1. file_search: **/{package.json,angular.json,tsconfig.json}
2. list_dir: src/app/
3. read_file: package.json (if exists)

Report to user:

?? STEP 1 COMPLETE:
- Workspace: [Empty / Angular X.X project detected]
- Files found: [list]
- Decision: [Create new / Use existing]

STEP 2: Read Reference File (REQUIRED - DO THIS SECOND)

Execute these steps:

1. Match user query to Reference File Routing Guide below
2. Use read_file on: references\[filename].md
3. Extract ALL steps/APIs from reference file

Report to user:

?? STEP 2 COMPLETE:
- Reference file: [filename.md]
- Steps found: [list sequential steps]
- APIs validated: [list properties/methods used]

STEP 3: Generate Code (EXECUTE ONLY AFTER STEPS 1 & 2)

Validation checklist:

  • Every API cross-referenced against reference file
  • No invented/assumed properties used
  • Angular patterns followed (component bindings, lifecycle hooks)
  • If API not in reference file ? DELETE it

If feature not in reference file:

? FEATURE NOT SUPPORTED
The requested [feature/API] is not documented.
Available alternatives: [list from reference files]

Reference File Routing Guide

Core Setup

User Query KeywordsReference FilePurpose
"basic", "create sample", "getting started", "load PDF"getting-started.mdMinimal PDFViewer setup
"configuration", "server settings", "locale"general-properties.mdCore viewer properties
"disable", "hide features", "enable/disable", "read-only"enable-properties.mdFeature toggles

Navigation

User Query KeywordsReference FilePurpose
"page navigation", "next/previous page", "go to page"page-navigation.mdPage controls
"bookmarks", "table of contents", "TOC", "outline"bookmark-navigation.mdBookmark navigation (use ViewChild)
"hyperlinks", "external links", "URL navigation"hyperlink-navigation.mdLink handling
"thumbnails", "preview pages", "thumbnail panel"thumbnail-navigation.mdThumbnail panel

Viewing & Interaction

User Query KeywordsReference FilePurpose
"zoom", "magnification", "fit to page", "scale"magnification.mdZoom controls
"text selection", "panning", "scroll mode"interaction-mode.mdInteraction modes
"select text", "copy text"text-selection.mdText selection
"search", "find in PDF", "highlight search"text-search.mdSearch functionality

Toolbar & Context Menu

User Query KeywordsReference FilePurpose
"customize toolbar", "hide toolbar items", "remove buttons"toolbar-settings.mdToolbar configuration
"show/hide toolbar dynamically", "toggle toolbar"toolbar-methods.mdProgrammatic toolbar control
"right-click menu", "context menu", "custom menu"contextmenu.mdContext menu

Annotations

User Query KeywordsReference FilePurpose
"annotation colors", "annotation styles", "customize annotations"annotation-settings.mdAnnotation appearance
"annotation events", "when annotation added", "annotation callbacks"annotation-events.mdAnnotation lifecycle
"annotation labels", "shape labels", "measurement labels"shape-label-settings.mdLabel customization
"ink annotation", "freehand drawing", "signature", "sketch", "handwritten notes"ink-annotation.mdInk annotations
"redaction", "redact content", "black out text"redaction-annotation.mdRedaction annotations

Forms

User Query KeywordsReference FilePurpose
"form field defaults", "form field styles"form-field-settings.mdForm field config
"form field events", "field changes", "validation"form-field-events.mdForm field events

Document Actions

User Query KeywordsReference FilePurpose
"download PDF", "save PDF", "export"download.mdDownload functionality
"print PDF", "print document"print.mdPrint functionality
"reorder pages", "rotate pages", "add/remove pages"organize-pages.mdPage manipulation

Advanced

User Query KeywordsReference FilePurpose
"load programmatically", "API methods", "extract text"api-methods.mdProgrammatic control
"event list", "all events", "event reference"events.mdComplete event list

Toolbar Item Name Validation (CRITICAL)

When generating toolbar configurations:

  1. ALWAYS read toolbar-settings.md first
  2. Use ONLY names from these sections:
    • "Available Primary Toolbar Items"
    • "Available Annotation Toolbar Items"
    • "Available Form Designer Items"
  3. Character-by-character validation required - No typos allowed

Common mistakes to prevent:

  • ? AnotatetionEditTool ? ? AnnotationEditTool
  • ? CalibrationOption ? ? CalibrateTool
  • ? ShapeAnnotationOption ? ? ShapeTool

Quick Start Example

Add the Angular PDF Viewer by using <ejs-pdfviewer> selector in the template section of the src/app/app.ts file to render the PDF Viewer component.

import { Component, OnInit } from '@angular/core';
import { PdfViewerModule, LinkAnnotationService, BookmarkViewService,
         MagnificationService, ThumbnailViewService, ToolbarService,
         NavigationService, TextSearchService, TextSelectionService,
         PrintService, FormDesignerService, FormFieldsService,
         AnnotationService, PageOrganizerService } from '@syncfusion/ej2-angular-pdfviewer';

@Component({
  selector: 'app-root',
  // specifies the template string for the PDF Viewer component
  template: `<div class="content-wrapper">
                <ejs-pdfviewer id="pdfViewer"
                    [documentPath]='document'
                    [resourceUrl]='resource'
                    style="height:640px;display:block">
                </ejs-pdfviewer>
             </div>`,
  imports: [ PdfViewerModule ],
  providers: [ LinkAnnotationService, BookmarkViewService, MagnificationService,
               ThumbnailViewService, ToolbarService, NavigationService,
               TextSearchService, TextSelectionService, PrintService,
               AnnotationService, FormDesignerService, FormFieldsService, PageOrganizerService]
})
export class AppComponent implements OnInit {
  public document: string = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf';
  public resource: string = window.location.origin + "/assets/ej2-pdfviewer-lib";
  
  ngOnInit(): void {
  }
}

Settings Configurations

Rule 1: Simple Settings (1-3 properties) ? Inline

public annotationSelection = {
  selectionBorderColor: 'blue',
  resizerSize: 8
};

Rule 2: Complex Settings (4+ properties or enums) ? Import enums

import { AnnotationResizerLocation, CursorType } from '@syncfusion/ej2-angular-pdfviewer';

public annotationSelection = {
  selectionBorderColor: '#0000ff',
  resizerSize: 8,
  resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,
  resizerCursorType: CursorType.grab
};

Protocol Violation Handling

ViolationFix
Skipped Step 1Re-run: Use file_search and list_dir first
Skipped Step 2Re-run: Use read_file on reference file
Used undocumented APIDelete it, check reference for alternatives
Didn't report findingsReport: "I checked X, found Y, now doing Z"

If user calls out violation: IMMEDIATELY acknowledge, apologize, and restart with proper protocol.


Enforcement Checklist

Before generating code, verify:

  • Step 1 executed (workspace detection) and reported
  • Step 2 executed (reference file read) and reported
  • Every API validated against reference file
  • No undocumented APIs used
  • Angular patterns followed

Reference files are SOURCE OF TRUTH - everything must trace back to them.

What ships with it: 27 files

380.5 KB alongside SKILL.md

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.