Skip to content

Commit ad85ed7

Browse files
committed
Fix build without pdf feature, disable by default.
1 parent bfd3b81 commit ad85ed7

File tree

2 files changed

+42
-27
lines changed

2 files changed

+42
-27
lines changed

Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ allow-branch = ["main"]
1010
sign-tag = true
1111

1212
[features]
13-
default = ["pdf"]
1413
pdf = ["pdfium-render"]
1514

1615
[dependencies]

src/print/mod.rs

Lines changed: 42 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@ use std::{net::SocketAddr, time::Duration};
33
use eyre::{bail, Context};
44
use futures::TryStreamExt;
55
use ipp::prelude::*;
6-
use itertools::Itertools;
7-
use pdfium_render::prelude::*;
86
use serde::{Deserialize, Serialize};
97
use tap::TapOptional;
108
use tokio::{io::AsyncWriteExt, net::TcpSocket};
@@ -205,30 +203,7 @@ impl Printer {
205203
} else if content_type == "application/pdf" {
206204
let data = resp.bytes().await?;
207205

208-
let images: Vec<_> = {
209-
let pdfium = Pdfium::default();
210-
let doc = pdfium.load_pdf_from_byte_slice(&data, None)?;
211-
212-
let (width, height) = if config.rotate {
213-
(config.label_height, config.label_width)
214-
} else {
215-
(config.label_width, config.label_height)
216-
};
217-
218-
let render_config = PdfRenderConfig::new()
219-
.use_print_quality(true)
220-
.set_target_width(width)
221-
.set_maximum_width(width)
222-
.set_maximum_height(height);
223-
224-
doc.pages()
225-
.iter()
226-
.map(|page| {
227-
page.render_with_config(&render_config)
228-
.map(|page| page.as_image())
229-
})
230-
.try_collect()?
231-
};
206+
let images = Self::render_pdf_to_images(config, &data)?;
232207

233208
for im in images {
234209
let field = zpl::image_to_gf(&im, config.rotate);
@@ -309,4 +284,45 @@ impl Printer {
309284

310285
Ok(())
311286
}
287+
288+
#[cfg(feature = "pdf")]
289+
fn render_pdf_to_images(
290+
config: &ZplPrintConfig,
291+
data: &[u8],
292+
) -> eyre::Result<Vec<image::DynamicImage>> {
293+
use itertools::Itertools;
294+
use pdfium_render::prelude::*;
295+
296+
let pdfium = Pdfium::default();
297+
let doc = pdfium.load_pdf_from_byte_slice(data, None)?;
298+
299+
let (width, height) = if config.rotate {
300+
(config.label_height, config.label_width)
301+
} else {
302+
(config.label_width, config.label_height)
303+
};
304+
305+
let render_config = PdfRenderConfig::new()
306+
.use_print_quality(true)
307+
.set_target_width(width)
308+
.set_maximum_width(width)
309+
.set_maximum_height(height);
310+
311+
doc.pages()
312+
.iter()
313+
.map(|page| {
314+
page.render_with_config(&render_config)
315+
.map(|page| page.as_image())
316+
})
317+
.try_collect()
318+
.map_err(eyre::Report::from)
319+
}
320+
321+
#[cfg(not(feature = "pdf"))]
322+
fn render_pdf_to_images(
323+
_config: &ZplPrintConfig,
324+
_data: &[u8],
325+
) -> eyre::Result<Vec<image::DynamicImage>> {
326+
eyre::bail!("no pdf support included")
327+
}
312328
}

0 commit comments

Comments
 (0)