Printwell Test Comparison Report

Rust Crate
Node.js
Python
Rust
41 passed / 0 failed
Node.js
41 passed / 0 failed
Python
41 passed / 0 failed

Generated: 2026-01-26 20:56:54 UTC

Conversion

boundaries - Page boundary handling
Rust PASS
Size: 24 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 8ms
RSS: 52.1 MB
Node.js PASS
Size: 24 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 6ms
RSS: 130.6 MB
Heap: 7.7 MB
Python PASS
Size: 24 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 6ms
RSS: 90.1 MB
convenience_function - Convenience function API test
Rust PASS
PDF not available
Node.js PASS
PDF not available
Python PASS
PDF not available
header_footer - Header and footer templates
Rust PASS
Size: 13 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 4ms
RSS: 58.3 MB
Node.js PASS
Size: 13 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 4ms
RSS: 117.6 MB
Heap: 7.8 MB
Python PASS
Size: 13 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 4ms
RSS: 77.7 MB
html_tables - HTML tables rendering
Rust PASS
Size: 15 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 6ms
RSS: 58.5 MB
Node.js PASS
Size: 15 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 5ms
RSS: 127.9 MB
Heap: 7.2 MB
Python PASS
Size: 15 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 5ms
RSS: 89.8 MB
multipage - Multi-page document generation
Rust PASS
Size: 7 KB
Pages: 3
Orient: portrait
Size: 595×842 pt
Time: 4ms
RSS: 1958.3 MB
Node.js PASS
Size: 7 KB
Pages: 3
Orient: portrait
Size: 595×842 pt
Time: 4ms
RSS: 115.9 MB
Heap: 7.5 MB
Python PASS
Size: 7 KB
Pages: 3
Orient: portrait
Size: 595×842 pt
Time: 4ms
RSS: 76.4 MB
print_background - Background printing enabled
Rust PASS
Size: 7 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 3ms
RSS: 1958.3 MB
Node.js PASS
Size: 7 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 3ms
RSS: 117.0 MB
Heap: 7.7 MB
Python PASS
Size: 7 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 3ms
RSS: 77.4 MB
renderer_info - Verify renderer info available
Rust PASS
PDF not available
Node.js PASS
PDF not available
Python PASS
PDF not available
scale - Scale option
Rust PASS
Size: 7 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 3ms
RSS: 1958.3 MB
Node.js PASS
Size: 7 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 3ms
RSS: 117.7 MB
Heap: 7.8 MB
Python PASS
Size: 7 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 3ms
RSS: 77.8 MB
simple_html - Simple HTML to PDF conversion
Rust PASS
Size: 6 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 3ms
RSS: 1958.3 MB
Node.js PASS
Size: 6 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 11ms
RSS: 115.4 MB
Heap: 7.4 MB
Python PASS
Size: 6 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 15ms
RSS: 76.0 MB
unicode - Unicode and multilingual content
Rust PASS
Size: 35 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 11ms
RSS: 1958.3 MB
Node.js PASS
Size: 35 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 11ms
RSS: 127.7 MB
Heap: 7.1 MB
Python PASS
Size: 35 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 11ms
RSS: 89.8 MB

Orientation

css_page_size - CSS @page size preference
Rust PASS
Size: 6 KB
Pages: 1
Orient: landscape
Size: 595×420 pt
Time: 3ms
RSS: 1958.3 MB
Node.js PASS
Size: 6 KB
Pages: 1
Orient: landscape
Size: 595×420 pt
Time: 3ms
RSS: 118.1 MB
Heap: 7.8 MB
Python PASS
Size: 6 KB
Pages: 1
Orient: landscape
Size: 595×420 pt
Time: 3ms
RSS: 77.8 MB
landscape_basic - Basic landscape orientation
Rust PASS
Size: 6 KB
Pages: 1
Orient: landscape
Size: 792×612 pt
Time: 3ms
RSS: 58.2 MB
Node.js PASS
Size: 6 KB
Pages: 1
Orient: landscape
Size: 792×612 pt
Time: 3ms
RSS: 116.2 MB
Heap: 7.5 MB
Python PASS
Size: 6 KB
Pages: 1
Orient: landscape
Size: 792×612 pt
Time: 3ms
RSS: 76.8 MB
landscape_multipage - Multi-page landscape document
Rust PASS
Size: 15 KB
Pages: 4
Orient: landscape
Size: 842×595 pt
Time: 5ms
RSS: 58.7 MB
Node.js PASS
Size: 15 KB
Pages: 4
Orient: landscape
Size: 842×595 pt
Time: 5ms
RSS: 130.4 MB
Heap: 7.6 MB
Python PASS
Size: 15 KB
Pages: 4
Orient: landscape
Size: 842×595 pt
Time: 5ms
RSS: 89.9 MB

Fonts

custom_font - Custom font loading
Rust PASS
Size: 29 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 27ms
RSS: 58.2 MB
Node.js PASS
Size: 29 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 18ms
RSS: 128.9 MB
Heap: 7.1 MB
Python PASS
Size: 29 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 20ms
RSS: 89.8 MB

Images

embedded_image - Embedded base64 image
Rust PASS
Size: 8 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 4ms
RSS: 58.2 MB
Node.js PASS
Size: 8 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 3ms
RSS: 119.3 MB
Heap: 7.9 MB
Python PASS
Size: 8 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 3ms
RSS: 79.0 MB
remote_image - Remote image loading
Rust PASS
Size: 41 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 94ms
RSS: 1958.3 MB
Node.js PASS
Size: 41 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 112ms
RSS: 122.3 MB
Heap: 8.2 MB
Python PASS
Size: 41 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 93ms
RSS: 81.8 MB

Forms

html_forms - HTML form elements rendering
Rust PASS
Size: 28 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 8ms
RSS: 58.5 MB
Node.js PASS
Size: 28 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 8ms
RSS: 128.3 MB
Heap: 7.2 MB
Python PASS
Size: 28 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 9ms
RSS: 89.8 MB

Batch

batch_conversion - Batch conversion with pool
Rust PASS
Size: 6 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 8ms
RSS: 52.1 MB
Node.js PASS
Size: 6 KB
Orient: portrait
Size: 595×842 pt
Time: 8ms
RSS: 118.4 MB
Heap: 7.9 MB
Python PASS
Size: 6 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 8ms
RSS: 78.3 MB

Watermark

multiple_watermarks - Multiple watermarks
Rust PASS
Size: 14 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 6ms
RSS: 1958.3 MB
Node.js PASS
Size: 14 KB
Orient: portrait
Size: 595×842 pt
Time: 5ms
RSS: 128.9 MB
Heap: 7.3 MB
Python PASS
Size: 7 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 4ms
RSS: 89.8 MB
text_watermark - Text watermark
Rust PASS
Size: 14 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 5ms
RSS: 1958.3 MB
Node.js PASS
Size: 14 KB
Orient: portrait
Size: 595×842 pt
Time: 5ms
RSS: 128.8 MB
Heap: 7.3 MB
Python PASS
Size: 14 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 5ms
RSS: 89.8 MB
watermark_page_selection - Watermark on specific pages
Rust PASS
Size: 7 KB
Pages: 3
Orient: portrait
Size: 595×842 pt
Time: 4ms
RSS: 1958.3 MB
Node.js PASS
Size: 7 KB
Pages: 3
Orient: portrait
Size: 595×842 pt
Time: 4ms
RSS: 129.1 MB
Heap: 7.3 MB
Python PASS
Size: 7 KB
Pages: 3
Orient: portrait
Size: 595×842 pt
Time: 4ms
RSS: 89.8 MB

Bookmarks

add_bookmarks - Add bookmarks to PDF
Rust PASS
Size: 13 KB
Pages: 3
Orient: portrait
Size: 595×842 pt
Time: 103ms
RSS: 52.1 MB
Node.js PASS
Size: 13 KB
Pages: 3
Orient: portrait
Size: 595×842 pt
Time: 5ms
RSS: 129.1 MB
Heap: 7.4 MB
Python PASS
Size: 13 KB
Pages: 3
Orient: portrait
Size: 595×842 pt
Time: 5ms
RSS: 89.8 MB
extract_bookmarks - Extract bookmarks from PDF
Rust PASS
PDF not available
Node.js PASS
PDF not available
Python PASS
PDF not available
hierarchical_bookmarks - Hierarchical bookmarks
Rust PASS
Size: 14 KB
Pages: 4
Orient: portrait
Size: 595×842 pt
Time: 6ms
RSS: 58.3 MB
Node.js PASS
Size: 14 KB
Pages: 4
Orient: portrait
Size: 595×842 pt
Time: 6ms
RSS: 129.2 MB
Heap: 7.4 MB
Python PASS
Size: 14 KB
Pages: 4
Orient: portrait
Size: 595×842 pt
Time: 6ms
RSS: 89.8 MB

Annotations

highlight_annotation - Add highlight annotation
Rust PASS
Size: 26 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 6ms
RSS: 52.1 MB
Node.js PASS
Size: 26 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 4ms
RSS: 129.3 MB
Heap: 7.5 MB
Python PASS
Size: 26 KB
Pages: 2
Orient: portrait
Size: 595×842 pt
Time: 5ms
RSS: 89.8 MB
list_annotations - List annotations in PDF
Rust PASS
PDF not available
Node.js PASS
PDF not available
Python PASS
PDF not available
remove_annotations - Remove annotations from PDF
Rust PASS
PDF not available
Node.js PASS
PDF not available
Python PASS
PDF not available
sticky_note - Add sticky note annotation
Rust PASS
Size: 23 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 5ms
RSS: 52.1 MB
Node.js PASS
Size: 23 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 4ms
RSS: 129.4 MB
Heap: 7.5 MB
Python PASS
Size: 23 KB
Pages: 2
Orient: portrait
Size: 595×842 pt
Time: 4ms
RSS: 89.8 MB

URL

url_to_pdf - URL to PDF conversion
Rust PASS
Size: 20 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 80ms
RSS: 1958.3 MB
Node.js PASS
Size: 20 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 64ms
RSS: 130.3 MB
Heap: 7.6 MB
Python PASS
Size: 20 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 63ms
RSS: 89.9 MB

Metadata

pdf_metadata - PDF with custom metadata
Rust PASS
Size: 7 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 3ms
RSS: 1958.3 MB
Node.js PASS
Size: 7 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 3ms
RSS: 116.4 MB
Heap: 7.5 MB
Python PASS
Size: 7 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 3ms
RSS: 77.0 MB

Layout

flexbox_layout - Flexbox layout rendering
Rust PASS
Size: 32 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 9ms
RSS: 58.2 MB
Node.js PASS
Size: 32 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 8ms
RSS: 131.0 MB
Heap: 7.7 MB
Python PASS
Size: 32 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 8ms
RSS: 90.2 MB
grid_layout - CSS Grid layout rendering
Rust PASS
Size: 23 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 10ms
RSS: 58.3 MB
Node.js PASS
Size: 23 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 7ms
RSS: 131.1 MB
Heap: 7.8 MB
Python PASS
Size: 23 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 6ms
RSS: 90.3 MB
text_columns - Multi-column text layout
Rust PASS
Size: 23 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 10ms
RSS: 1958.3 MB
Node.js PASS
Size: 23 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 11ms
RSS: 133.1 MB
Heap: 7.9 MB
Python PASS
Size: 23 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 9ms
RSS: 90.4 MB

Styling

borders_rounded - Borders and rounded corners
Rust PASS
Size: 31 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 11ms
RSS: 52.1 MB
Node.js PASS
Size: 31 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 8ms
RSS: 133.6 MB
Heap: 8.0 MB
Python PASS
Size: 31 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 8ms
RSS: 90.5 MB
gradients - CSS gradient rendering
Rust PASS
Size: 44 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 10ms
RSS: 58.2 MB
Node.js PASS
Size: 44 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 9ms
RSS: 133.5 MB
Heap: 8.1 MB
Python PASS
Size: 44 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 8ms
RSS: 91.6 MB
svg_inline - Inline SVG rendering
Rust PASS
Size: 26 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 26ms
RSS: 1958.3 MB
Node.js PASS
Size: 26 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 26ms
RSS: 133.5 MB
Heap: 8.1 MB
Python PASS
Size: 26 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 25ms
RSS: 91.6 MB

Print

page_breaks - Explicit page break control
Rust PASS
Size: 25 KB
Pages: 3
Orient: portrait
Size: 595×842 pt
Time: 7ms
RSS: 1958.3 MB
Node.js PASS
Size: 25 KB
Pages: 3
Orient: portrait
Size: 595×842 pt
Time: 7ms
RSS: 133.1 MB
Heap: 7.9 MB
Python PASS
Size: 25 KB
Pages: 3
Orient: portrait
Size: 595×842 pt
Time: 7ms
RSS: 90.4 MB
print_media_query - Print media query styles
Rust PASS
Size: 23 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 6ms
RSS: 1958.3 MB
Node.js PASS
Size: 23 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 6ms
RSS: 133.4 MB
Heap: 7.9 MB
Python PASS
Size: 23 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 6ms
RSS: 90.4 MB
zero_margins - Full bleed with zero margins
Rust PASS
Size: 15 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 4ms
RSS: 1958.3 MB
Node.js PASS
Size: 15 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 4ms
RSS: 131.0 MB
Heap: 7.7 MB
Python PASS
Size: 15 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 5ms
RSS: 90.2 MB

Documents

invoice - Invoice document layout
Rust PASS
Size: 60 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 15ms
RSS: 58.7 MB
Node.js PASS
Size: 60 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 14ms
RSS: 133.8 MB
Heap: 8.2 MB
Python PASS
Size: 60 KB
Pages: 1
Orient: portrait
Size: 595×842 pt
Time: 14ms
RSS: 91.6 MB

Large Files

large_html_chunked - Large HTML document with chunked rendering
Rust PASS
Size: 4134 KB
Pages: 3000
Orient: portrait
Size: 595×842 pt
Time: 22805ms
RSS: 1958.3 MB
Node.js PASS
Size: 4134 KB
Pages: 3000
Orient: portrait
Size: 595×842 pt
Time: 22937ms
RSS: 2094.9 MB
Heap: 19.1 MB
Python PASS
Size: 4134 KB
Pages: 3000
Orient: portrait
Size: 595×842 pt
Time: 22178ms
RSS: 2053.1 MB