Ich erstelle Prn-Code aus PDFs und senden Sie sie an Drucker in einem C# -Code, um Druckaufträge zu automatisieren. Um dies zu tun, verwende ich Ghost-Skript mit folgenden Parametern.Ghost-Skript spiegelt nicht die richtigen Informationen in der PRN-Datei
gswin32c -dNOPAUSE -dBATCH -sDEVICE=laserjet -sOutputFile="c:/temp/out.prn" "NumberedPages.pdf"
Diese Kommandozeilenargumente generiert eine PRN-Datei namens out.prn. Wenn ich diese Datei mit folgendem C# -Code an den Drucker sende, wird die PDF-Datei erfolgreich gedruckt.
public static bool SendBytesToPrinter(string szPrinterName, IntPtr pBytes, Int32 dwCount)
{
uint returnedValue = 0;
Int32 dwError = 0, dwWritten = 0;
IntPtr hPrinter = new IntPtr(0);
DOCINFOA di = new DOCINFOA();
bool bSuccess = false; // Assume failure unless you specifically succeed.
di.pDocName = "My C#.NET RAW Document";
di.pDataType = "RAW";
// Open the printer.
if (OpenPrinter(szPrinterName.Normalize(), out hPrinter, IntPtr.Zero))
{
// Start a document.
returnedValue = StartDocPrinter(hPrinter, 1, di);
if (0 != returnedValue)
{
// Start a page.
if (StartPagePrinter(hPrinter))
{
// Write your bytes.
bSuccess = WritePrinter(hPrinter, pBytes, dwCount, out dwWritten);
EndPagePrinter(hPrinter);
}
EndDocPrinter(hPrinter);
}
ClosePrinter(hPrinter);
}
// If you did not succeed, GetLastError may give more information
// about why not.
if (bSuccess == false)
{
dwError = Marshal.GetLastWin32Error();
}
return bSuccess;
}
(https://stackoverflow.com/a/29564132/3079364)
ich auch die Druckaufträge überwachen möchten, wenn sie durch den Drucker erfolgreich gedruckt werden oder nicht. Aber die prn-Datei, die von Ghost-Skript generiert wird, spiegelt nicht die richtige Anzahl der Seiten wider. Siehe unten
Captured von CZ Print Job Tracker
Wenn ich dieses Dokument drucken mit Word oder Adobe, CZ Print Job Tracker die richtige Anzahl der Seiten zeigt.
Gibt es einen Parameter, die ich Ghost Script-Befehl hinzufügen, können diese Informationen zu korrigieren?