bx-pdf — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited bx-pdf (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
install-bx-module bx-pdf
# CommandBox
box install bx-pdf| Component | Purpose |
|---|---|
bx:document | Outer wrapper — generates the PDF |
bx:documentitem | Header, footer, or page break inside a document |
bx:documentsection | A named section (gets its own bookmark, headers/footers) |
<bx:document format="pdf" filename="/app/output/report.pdf" overwrite="true">
<h1>My Report</h1>
<p>Generated on #dateFormat( now(), "YYYY-MM-DD" )#</p>
</bx:document>// Script syntax — capture as variable
bx:document format="pdf" variable="pdfBinary" {
bx:documentsection name="Summary" {
writeOutput( "<h1>Executive Summary</h1>" )
include "/app/views/summary.bxm"
}
}
// Write to file
fileWrite( "/app/reports/summary.pdf", pdfBinary )<bx:document format="pdf" filename="/app/docs/manual.pdf">
<!-- Global header for all sections -->
<bx:documentitem type="header">
<img src="/assets/logo.png" height="40" /> My Company Manual
</bx:documentitem>
<!-- Global footer with page numbers -->
<bx:documentitem type="footer">
<bx:output>
Page #bxdocument.currentpagenumber# of #bxdocument.totalpages#
</bx:output>
</bx:documentitem>
<!-- Section 1 -->
<bx:documentsection name="Introduction">
<h1>Introduction</h1>
<p>Welcome to the manual.</p>
</bx:documentsection>
<!-- Page break before section 2 -->
<bx:documentsection name="Chapter 1">
<h1>Chapter 1</h1>
<p>Chapter content here.</p>
</bx:documentsection>
</bx:document><!-- Include from absolute file path -->
<bx:documentsection srcfile="/app/views/chapter1.html">
<!-- Include from URL relative to web root -->
<bx:documentsection src="/views/chapter2.html">
<!-- Include static image -->
<bx:documentsection src="https://example.com/page-to-capture">bx:document
format="pdf"
filename="/app/reports/landscape.pdf"
orientation="landscape" // "portrait" (default) or "landscape"
pageType="letter" // "A4", "letter", "legal", etc.
marginTop=1
marginBottom=1
marginLeft=1.25
marginRight=1.25
unit="in" // "in" (default) or "cm"
scale=100 // percentage scale
fontEmbed=true
{
writeOutput( "<h1>Landscape Report</h1>" )
}bx:document
format="pdf"
filename="/app/secure/protected.pdf"
encryption="128-bit"
openpassword="openme"
ownerpassword="adminonly"
{
writeOutput( "<h1>Confidential</h1>" )
}// No filename or variable — streams directly to browser
bx:document format="pdf" saveAsName="invoice-#invoiceId#.pdf" {
include "/app/views/invoice.bxm"
}overwrite=true when writing to a file, otherwise you'll get an error if the file existsno filename, no variable) only works in a web runtime contextbx:documentsection to create bookmarks and control per-section headers/footersbx:documentitem type="pagebreak" inserts an explicit break — sections already add breaks automaticallysrcfile — relative paths may not resolve correctly in all contexts~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.