#[cfg(target_arch = "wasm32")]
use wasm_bindgen::prelude::*;
#[cfg(target_arch = "wasm32")]
#[wasm_bindgen]
pub struct WasmDocument {
inner: crate::api::Document,
}
#[cfg(target_arch = "wasm32")]
#[wasm_bindgen]
impl WasmDocument {
#[wasm_bindgen(constructor)]
pub fn new() -> WasmDocument {
WasmDocument {
inner: crate::api::Document::new(),
}
}
pub fn title(&mut self, title: &str) {
self.inner.title(title);
}
pub fn author(&mut self, author: &str) {
self.inner.author(author);
}
#[wasm_bindgen(js_name = textAt)]
pub fn text_at(&mut self, text: &str, x: f64, y: f64) {
self.inner.text_at(text, [x, y]);
}
pub fn font(&mut self, name: &str, size: f64) {
self.inner.font(name).size(size);
}
#[wasm_bindgen(js_name = newPage)]
pub fn new_page(&mut self) {
self.inner.start_new_page();
}
#[wasm_bindgen(js_name = pageSizeA4)]
pub fn page_size_a4(&mut self) {
self.inner.page_size(crate::api::PageSize::A4);
}
#[wasm_bindgen(js_name = pageSizeLetter)]
pub fn page_size_letter(&mut self) {
self.inner.page_size(crate::api::PageSize::Letter);
}
pub fn render(&mut self) -> Result<Vec<u8>, JsError> {
self.inner
.render()
.map_err(|e| JsError::new(&e.to_string()))
}
}
#[cfg(target_arch = "wasm32")]
impl Default for WasmDocument {
fn default() -> Self {
WasmDocument::new()
}
}