@@ -5,14 +5,14 @@ mod tests {
5
5
#[ test]
6
6
#[ cfg( target_os = "linux" ) ]
7
7
fn test_write_to_device_linux ( ) {
8
- let result = write_to_device ( "/dev/usb/lp0" , "^FDhello world" ) ;
8
+ let result = write_to_device ( "/dev/usb/lp0" , "^FDhello world" , Some ( "Test Document" ) ) ;
9
9
assert ! ( result. is_ok( ) ) ;
10
10
}
11
11
12
12
#[ test]
13
13
#[ cfg( target_os = "windows" ) ]
14
14
fn test_write_to_device_windows ( ) {
15
- let result = write_to_device ( "ZDesigner ZD220-203dpi ZPL" , "^FDhello world" ) ;
15
+ let result = write_to_device ( "ZDesigner ZD220-203dpi ZPL" , "^FDhello world" , Some ( "Test Document" ) ) ;
16
16
assert ! ( result. is_ok( ) ) ;
17
17
}
18
18
}
@@ -29,13 +29,13 @@ mod tests {
29
29
/// ```
30
30
/// let zpl = "^FDhello world";
31
31
/// let printer = "/dev/usb/lp0";
32
- /// let result = raw_printer::write_to_device(printer, zpl);
32
+ /// let result = raw_printer::write_to_device(printer, zpl, Some("My Custom Document") );
33
33
///
34
34
/// assert!(result.is_ok());
35
35
///
36
36
/// ```
37
37
#[ cfg( target_os = "linux" ) ]
38
- pub fn write_to_device ( printer : & str , payload : & str ) -> Result < usize , std:: io:: Error > {
38
+ pub fn write_to_device ( printer : & str , payload : & str , document_name : Option < & str > ) -> Result < usize , std:: io:: Error > {
39
39
use std:: fs:: OpenOptions ;
40
40
use std:: io:: Write ;
41
41
@@ -51,7 +51,7 @@ pub fn write_to_device(printer: &str, payload: &str) -> Result<usize, std::io::E
51
51
}
52
52
53
53
#[ cfg( target_os = "windows" ) ]
54
- pub fn write_to_device ( printer : & str , payload : & str ) -> Result < usize , std:: io:: Error > {
54
+ pub fn write_to_device ( printer : & str , payload : & str , document_name : Option < & str > ) -> Result < usize , std:: io:: Error > {
55
55
use std:: ffi:: CString ;
56
56
use std:: ptr;
57
57
use windows:: Win32 :: Foundation :: HANDLE ;
@@ -78,8 +78,11 @@ pub fn write_to_device(printer: &str, payload: &str) -> Result<usize, std::io::E
78
78
)
79
79
. is_ok ( )
80
80
{
81
+ let doc_name = document_name. unwrap_or ( "Print Job" ) ;
82
+ let doc_name_cstring = CString :: new ( doc_name) . unwrap_or_default ( ) ;
83
+
81
84
let doc_info = DOC_INFO_1A {
82
- pDocName : windows:: core:: PSTR ( "My Document \0 " . as_ptr ( ) as * mut u8 ) ,
85
+ pDocName : windows:: core:: PSTR ( doc_name_cstring . as_ptr ( ) as * mut u8 ) ,
83
86
pOutputFile : windows:: core:: PSTR :: null ( ) ,
84
87
pDatatype : windows:: core:: PSTR ( "RAW\0 " . as_ptr ( ) as * mut u8 ) ,
85
88
} ;
0 commit comments