use std::path::{Path, PathBuf};
use crate::builders::{PdfCreateBuilder, PdfManipulateBuilder, PdfReadBuilder, PdfSplitBuilder};
use crate::pdf_fill_builder::PdfFillBuilder;
#[cfg(feature = "html")]
use crate::html::{HtmlToPdfBuilder, markdown_to_html};
pub struct EasyPdf;
impl EasyPdf {
#[must_use = "builder method"]
pub fn create(path: impl Into<PathBuf>) -> PdfCreateBuilder {
PdfCreateBuilder::new(path)
}
#[cfg(feature = "html")]
pub fn from_html(html: &str) -> crate::Result<HtmlToPdfBuilder> {
Ok(HtmlToPdfBuilder::new(html))
}
#[cfg(feature = "html")]
pub fn from_markdown(md: &str) -> crate::Result<HtmlToPdfBuilder> {
let html = markdown_to_html(md);
Ok(HtmlToPdfBuilder::new(&html))
}
#[must_use = "builder method"]
pub fn read(path: impl Into<PathBuf>) -> PdfReadBuilder {
PdfReadBuilder::new(path)
}
#[cfg(feature = "markdown")]
#[must_use = "builder method"]
pub fn export_markdown(
input: impl Into<PathBuf>,
output: impl Into<PathBuf>,
) -> crate::PdfMarkdownExportBuilder {
crate::PdfMarkdownExportBuilder::new(input, output)
}
#[cfg(feature = "markdown")]
#[must_use = "builder method"]
pub fn to_markdown(input: impl Into<PathBuf>) -> crate::PdfMarkdownBuilder {
crate::PdfMarkdownBuilder::new(input)
}
pub fn merge(input_paths: &[impl AsRef<Path>], output: impl AsRef<Path>) -> crate::Result<()> {
easypdf_reader::PdfManipulator::merge_files(input_paths, output)
}
#[must_use = "builder method"]
pub fn split(path: impl Into<PathBuf>) -> PdfSplitBuilder {
PdfSplitBuilder::new(path)
}
#[must_use = "builder method"]
pub fn manipulate(path: impl Into<PathBuf>) -> PdfManipulateBuilder {
PdfManipulateBuilder::new(path)
}
#[must_use = "builder method"]
pub fn fill_form(
template_path: impl Into<PathBuf>,
data: &dyn easypdf_core::PdfModel,
) -> PdfFillBuilder {
PdfFillBuilder::new(template_path, data)
}
}