I've tried this using the latest 4.5 driver, and the 5.0 driver.
This is C# code, and the pages variable is an array of WPF Canvas objects:
Code: Select all
var hPrinter = DriverInit(PDFPRINTERNAME);
//set as default
CDISetDefaultPrinter(hPrinter);
//set sheet size
SetPaperSize(hPrinter, 1); //Letter size
//set resolution options
SetResolution(hPrinter, 200);
SetJPEGCompression(hPrinter, 1);
SetJPegLevel(hPrinter, 7);
//set orientation
SetOrientation(hPrinter, 2); //Landscape Orientation
//set filename
SetDefaultFileName(hPrinter, filename);
//Filename Options
SetFileNameOptions(hPrinter, 1 | 2 | 256); //256 = Enable Encryption
//Margins
SetHorizontalMargin(hPrinter, 0);
SetVerticalMargin(hPrinter, 0);
//Permission
SetPermissions(hPrinter, -64 + 4); //allow only printing
//SetDefaultConfig
SetDefaultConfig(hPrinter);
//Enable
EnablePrinter(hPrinter, PDFLICENSEE, PDFACTIVATIONCODE);
LocalPrintServer ps = new LocalPrintServer();
PrintQueue pq = ps.DefaultPrintQueue;
XpsDocumentWriter xpsW = PrintQueue.CreateXpsDocumentWriter(pq);
FixedDocument doc = new FixedDocument();
foreach (Canvas cv in pages) {
FixedPage pg = new FixedPage();
pg.Children.Add(cv);
PageContent pc = new PageContent();
((IAddChild)pc).AddChild(pg);
doc.Pages.Add(pc);
}
xpsW.Write(doc);
RestoreDefaultPrinter(hPrinter);
DriverEnd(hPrinter);
Cliffe