{"ref":"artifact:cap-js-print","page":"/artifacts/cap-js-print","json":"/artifacts/cap-js-print.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"cap-js-print","name":"@cap-js/print","artifact_type":"cds-plugin","ecosystem":"cap","domain":"integration-and-messaging","origin_ring":"sap-official","description":{"one_line":"A CDS plugin that prints a document held in a CAP entity, through [SAP Print service](artifact:btp-print) and a `@PDF.Printable` annotation.","short":"Prints documents held in CAP entities through SAP Print service","what_it_solves":"A CAP service that holds a document as a `LargeBinary` has no way of getting it onto one of the customer's local printers. Annotating an entity `@PDF.Printable` adds a `print` action taking a queue name and a number of copies, generates the handler behind it, and adds `PrintServiceQueues` and `PrintServiceFiles` entities so the queue and the file appear as value helps in the UI. The attribute to be printed must already carry `@Core.ContentDisposition`; producing the document is no part of this. The queues and the link to the printers are [SAP Print service](artifact:btp-print)'s, and using the plugin requires a subscription to it. Run locally without one and the service is mocked, with the job written to the console. For files generated at runtime, or a file type other than PDF, `cds.connect.to(\"PrintService\")` invokes the same `print` action without the annotation."},"links":{"npm":"https://www.npmjs.com/package/@cap-js/print","repo":"https://github.com/cap-js/print","changelog":"https://github.com/cap-js/print/blob/main/CHANGELOG.md"},"identity":{"author":"cap-js","license":"Apache-2.0"},"compat":{"runtimes":["node"],"cds_range":">= 9","multitenancy":"safe"},"provides":[{"capability":"capability:document-output","what_it_does":"Adds a `print` action, its handler and queue and file value helps to an entity annotated `@PDF.Printable`, and hands the selected `LargeBinary` to a print queue of SAP Print service.","sources":[{"url":"https://raw.githubusercontent.com/cap-js/print/74cb8f7c82f478fa6e8794c51f1a9f9e75421c68/README.md","title":"cap-js/print — README, About this project","checked":"2026-09-22","quote":"The `@cap-js/print` package is a [CDS plugin](https://cap.cloud.sap/docs/node.js/cds-plugins#cds-plugin-packages) that provides print service features through integration with the [SAP Print Service](https://api.sap.com/api/PRINTAPI/overview)."},{"url":"https://raw.githubusercontent.com/cap-js/print/74cb8f7c82f478fa6e8794c51f1a9f9e75421c68/README.md","title":"cap-js/print — README, Annotations in CDS model","checked":"2026-09-22","quote":"Adds an action `print` to the annotated entity with the following parameters:"},{"url":"https://raw.githubusercontent.com/cap-js/print/74cb8f7c82f478fa6e8794c51f1a9f9e75421c68/README.md","title":"cap-js/print — README, Annotations in CDS model","checked":"2026-09-22","quote":"An entity `PrintServiceQueues` is added to the service to provide available print queues in a value help."},{"url":"https://raw.githubusercontent.com/cap-js/print/74cb8f7c82f478fa6e8794c51f1a9f9e75421c68/README.md","title":"cap-js/print — README, Model Requirements","checked":"2026-09-22","quote":"The attribute(s) you want to print are of type `LargeBinary`"}]}],"requires":[{"ref":"artifact:btp-print","requirement":"required","role":"print-queues","for":"Reaching the customer's printers: the plugin hands the document to a queue of the service, and a local run mocks the service and writes the job to the console instead.","sources":[{"url":"https://raw.githubusercontent.com/cap-js/print/74cb8f7c82f478fa6e8794c51f1a9f9e75421c68/README.md","title":"cap-js/print — README, Requirements and Setup","checked":"2026-09-22","quote":"Using this plugin requires a valid subscription of the [SAP Print Service](https://help.sap.com/docs/SCP_PRINT_SERVICE)."},{"url":"https://raw.githubusercontent.com/cap-js/print/74cb8f7c82f478fa6e8794c51f1a9f9e75421c68/package.json","title":"cap-js/print — package.json, cds.requires.print","checked":"2026-09-22","quote":"\"vcap\": { \"label\": \"print\" }"}]}],"connects":[{"ref":"artifact:btp-print","kind":"data","direction":"outbound","for":"The document to print, its file name, the queue name and the number of copies go to the service; the available print queues come back to fill the value help.","sources":[{"url":"https://raw.githubusercontent.com/cap-js/print/74cb8f7c82f478fa6e8794c51f1a9f9e75421c68/README.md","title":"cap-js/print — README, About this project","checked":"2026-09-22","quote":"The `@cap-js/print` package is a [CDS plugin](https://cap.cloud.sap/docs/node.js/cds-plugins#cds-plugin-packages) that provides print service features through integration with the [SAP Print Service](https://api.sap.com/api/PRINTAPI/overview)."},{"url":"https://raw.githubusercontent.com/cap-js/print/74cb8f7c82f478fa6e8794c51f1a9f9e75421c68/README.md","title":"cap-js/print — README, Manual Usage","checked":"2026-09-22","quote":"you can use the `cds.connect.to` API of CAP to connect to the print service and invoke the `print` action manually."},{"url":"https://raw.githubusercontent.com/cap-js/print/74cb8f7c82f478fa6e8794c51f1a9f9e75421c68/README.md","title":"cap-js/print — README, Annotations in CDS model","checked":"2026-09-22","quote":"An entity `PrintServiceQueues` is added to the service to provide available print queues in a value help."}]}],"changed_in":[{"version":"0.2.0","date":"2025-12-19","what_changed":"Multitenancy support, and `@Core.ContentDisposition.Filename` as a way to name the file. Draft-enabled entities and entities with composite keys can be print-enabled from this release.","invalidates":"Anything written against 0.1.x saying a draft-enabled entity, or an entity with a composite key, cannot be annotated `@PDF.Printable`.","source":{"url":"https://raw.githubusercontent.com/cap-js/print/main/CHANGELOG.md","title":"cap-js/print — Change Log, Version 0.2.0","checked":"2026-09-22","quote":"Multitenancy support"}},{"version":"0.2.1","date":"2026-04-07","what_changed":"The UI labels and messages the plugin generates for the `print` action and its value helps carry translations.","source":{"url":"https://raw.githubusercontent.com/cap-js/print/main/CHANGELOG.md","title":"cap-js/print — Change Log, Version 0.2.1","checked":"2026-09-22","quote":"Translations for UI labels and messages"}}],"history":[{"date":"2026-09-22","field":"description.one_line","from":"API-driven document printing with queue management and cross-platform integration.","to":"A CDS plugin that prints a document held in a CAP entity, through [SAP Print service](artifact:btp-print) and a `@PDF.Printable` annotation.","reason":"The old line was the repository's own description of what SAP Print service does, entered as the plugin's. The README says the plugin integrates with that service and requires a subscription to it; the queues and the reach to the printers are the service's."},{"date":"2026-09-22","field":"description.what_it_solves","from":null,"to":"A CAP service that holds a document as a `LargeBinary` has no way of getting it onto one of the customer's local printers.","reason":"The page carried no answer to what the plugin does. Written from the README at commit 74cb8f7: the annotation and what it generates, the model requirement, the subscription, the local mock and the manual route."},{"date":"2026-09-22","field":"requires, connects","from":null,"to":"artifact:btp-print","reason":"The README states the subscription requirement plainly and package.json binds a vcap service labelled print, but neither edge existed, so the service the plugin cannot print without was invisible from its page. SAP Print service entered the graph on 2026-09-15, after this entry was written."},{"date":"2026-09-22","field":"compat","from":"runtimes: node","to":"runtimes: node, cds_range: >= 9, multitenancy: safe","reason":"package.json declares @sap/cds >= 9 as a peer dependency and a subscriptionDependency on uaa; the changelog records multitenancy support added in 0.2.0. Declared by the maintainer, not verified here."},{"date":"2026-09-22","field":"provides","from":"capability:document-output","to":"capability:document-output, with what_it_does and sources","reason":"The edge carried no statement of what the plugin contributes to the capability, and nothing to check it against."},{"date":"2026-09-22","field":"changed_in","from":null,"to":"0.2.0, 0.2.1","reason":"The changelog dates two moves in the plugin's own answer: multitenancy and draft-enabled entities in 0.2.0, translated labels in 0.2.1. Without them nothing said whether a piece written in 2025 predates either."}],"provenance":{"discovered_via":[{"source":"source:github","channel":"cap-js"},{"source":"source:npm"}],"first_seen":"2026-08-31"},"maintainers":["actor:cap-js"],"contributors":["actor:chgeo","actor:dellagustin-sap","actor:laniakea2006","actor:lisajulia","actor:schiwekm","actor:sirsimon04"],"drafted_with_ai":true},"effective_normative_relations":[{"instrument":"instrument:sap-developer-license-3-2-cap","relation":"use-constrained-by","sections":["1","2","3"],"applies_when":"A cds-plugin is used with SAP CAP materials, or an artifact is explicitly identified as a CAP plugin or application.","note":"This is inherited applicability, not a licence verdict about the artifact itself. Review the agreement for the actual materials and use; an explicit artifact relationship to another revision takes precedence.","scope":{"kind":"artifact"},"sources":[{"url":"https://cap.cloud.sap/resources/license/developer-license-3_2_CAP.txt","title":"SAP Developer License Agreement 3.2 CAP","checked":"2026-09-16","quote":"documentation, plug-ins, templates, scripts and sample code, libraries, software development kits"}],"inherited_from":"cap-plugins-and-applications","relevant_capabilities":["agent-systems-access","async-processing","data-import-export","database-connectors","deployment","destinations","llm-integration","mcp-servers","plugin-authoring","replication","retrieval-augmented-generation","rfc-connectivity"]}],"readings":{"liveness":[{"label":"Maintenance","tier":"fair","evidence":"7 months since release"},{"label":"Continuity","tier":"good","evidence":"10 contributors, 3 publishers, org-owned"},{"label":"Repository","tier":"good","evidence":"pushed 2026-07, not archived"}],"compatibility":[{"label":"Declared for","tier":"good","evidence":">= 9 — includes cds 10 and 9"},{"label":"Survived majors","tier":"poor","evidence":"no release since @sap/cds 10 shipped (July 2026)"},{"label":"Maintainer's CI","tier":"good","evidence":"Lint & Prettier green, 2026-05-12"}],"practice":[{"label":"Tests","tier":"good","evidence":"37 test files, npm test"},{"label":"Docs","tier":"good","evidence":"README 5 KB"},{"label":"Changelog","tier":"good","evidence":"CHANGELOG in the repo"}],"reach":[{"value":7,"unit":"installs/week"},{"value":1,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-26","latest_version":"0.2.1","majors":{"0.0":{"version":"0.0.0","date":"2025-11-25"},"0.1":{"version":"0.1.0","date":"2025-11-28"},"0.2":{"version":"0.2.0","date":"2025-12-19"}},"license":"Apache-2.0","first_release":"2025-11-25","last_release":"2026-04-07","releases":4,"cadence_days":21,"maintainers":3,"repository":"git+https://github.com/cap-js/print.git","peer_cds":">= 9","test_script":true,"types":false,"downloads_weekly":7,"stars":1,"forks":3,"open_issues":4,"archived":false,"pushed_at":"2026-07-22","license_spdx":"Apache-2.0","org_owned":true,"default_branch":"main","contributors":10,"tree_truncated":false,"test_files":37,"workflows":6,"other_ci":false,"readme_bytes":5611,"docs_files":0,"changelog":true,"license_file":true,"dts_files":0,"ci_status":"success","ci_run_at":"2026-05-12","ci_workflow":"Lint & Prettier","ci_event":"push","readme_path":"README.md","readme_sha":"596881b49c8b75dcc9eca5bde0462eeaffc15f2f","months_since_release":7,"dormant":false,"repository_directory":null,"first_commit":"2025-05-26","last_commit":"2026-05-12","commits":86,"dependencies":3,"node_engine":null,"downloads_monthly":18,"created_at":"2025-05-26T06:58:42Z","open_prs":4,"repo_read":"2026-10-26"},"release_notes":{"license":"Apache-2.0","quotable":true,"source":{"kind":"repo","path":"CHANGELOG.md","ref":"main","url":"https://github.com/cap-js/print/blob/main/CHANGELOG.md"},"format":"keep-a-changelog","releases":[{"version":"0.2.1","date":"2026-04-07","date_source":"heading","heading":"Version 0.2.1 - 2026-04-07","url":"https://github.com/cap-js/print/blob/main/CHANGELOG.md#version-021---2026-04-07","sections":[{"kind":"feature","heading":"Added","items":1}],"hash":"c411a95a574f2e40"},{"version":"0.2.0","date":"2025-12-19","date_source":"heading","heading":"Version 0.2.0 - 2025-12-19","url":"https://github.com/cap-js/print/blob/main/CHANGELOG.md#version-020---2025-12-19","sections":[{"kind":"feature","heading":"Added","items":2},{"kind":"fix","heading":"Fixed","items":3}],"hash":"6ecd17d273f09330"},{"version":"0.1.0","date":"2025-11-28","date_source":"heading","heading":"Version 0.1.0 - 2025-11-28","url":"https://github.com/cap-js/print/blob/main/CHANGELOG.md#version-010---2025-11-28","sections":[{"kind":"feature","heading":"Added","items":1}],"hash":"40f1b15bd9188300"}],"versions":[{"version":"0.2.1","date":"2026-04-07"},{"version":"0.2.0","date":"2025-12-19"},{"version":"0.1.0","date":"2025-11-28"},{"version":"0.0.0","date":"2025-11-25","deprecated":"This release was a dummy release and should not be used"}],"crawled_at":"2026-10-25"},"edges":{"maintainers":[{"ref":"actor:cap-js","name":"SAP Cloud Application Programming Model","json":"/actors/cap-js.json"}],"contributors":[{"ref":"actor:laniakea2006","name":"Benny Mei","json":"/actors/laniakea2006.json"},{"ref":"actor:chgeo","name":"Christian Georgi","json":"/actors/chgeo.json"},{"ref":"actor:dellagustin-sap","name":"Guilherme Dellagustin","json":"/actors/dellagustin-sap.json"},{"ref":"actor:lisajulia","name":"Lisa Julia Nebel","json":"/actors/lisajulia.json"},{"ref":"actor:schiwekm","name":"Marten Schiwek","json":"/actors/schiwekm.json"},{"ref":"actor:sirsimon04","name":"Simon Engel","json":"/actors/sirsimon04.json"}],"explained_by":[],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}