Получение данных для печати - Windows (Redmon)
Я пытаюсь разработать приложение для извлечения данных для печати, редактирования его содержимого, а затем распечатать данные. я использую RedMon
для этой цели. Но все учебники, которые я видел в Интернете на данный момент, относятся к хранению данных в PDF
с помощью RedMon
,
Я хочу иметь возможность настроить RedMon
на платформе Windows, так что он записывает все данные печати (данные, которые обязательно появятся на бумаге для печати), как это в .txt
файл или, возможно, предоставить непосредственно в качестве входных данных для java
приложение, которое я сделал.
Я до сих пор не смог найти решение для этого. Это достижимо?
2 ответа
Вот решение в C:
int main(int argc, char** argv)
{
HANDLE handle;
unsigned char ucBuffer[1024];
FILE *pFileTarget;
DeleteFile("c:\\toprint.txt");
pFileTarget=fopen("c:\\toprint.txt","wb");
handle = GetStdHandle(STD_INPUT_HANDLE);
while (1)
{
DWORD dwBytesRead=0;
if(ReadFile( handle,ucBuffer,1024, &dwBytesRead,NULL) == 0)
{
break;
}else
fwrite(ucBuffer,dwBytesRead,1,pFileTarget);
}
fclose(pFileTarget);
CloseHandle(handle);
return (EXIT_SUCCESS);
}
Вы знаете, что ваши "данные печати" не одинаковы для всех принтеров? Формат файла зависит от драйвера принтера, используемого для определенной очереди печати.
Если вы действительно следовали всем учебным пособиям RedMon, которые учат, кому хранить данные для печати в PDF, вы наверняка заметили 2 вещи:
во-первых, все эти решения используют драйверы принтера PostScript;
во-вторых, все эти решения используют RedMon в качестве монитора печати, который собирает данные PostScript и передает их в Ghostscript для преобразования их в PDF.
Так что для ваших целей вам, скорее всего, не нужен Ghostscript. Вместо запуска Ghostscript вы можете напрямую сохранять полученные данные в виде файла.
Однако вы можете продолжать использовать PostScript только в том случае, если ваш принтер действительно поддерживает PostScript. И, конечно, вы должны разбираться в PostScript, чтобы "редактировать его содержимое".
Если ваш принтер использует другой язык принтера (PCL, TIFF, ESC/P, ESC/POS или любой другой), вам придется заменить драйвер принтера PostScript на любой подходящий. И, конечно, вам нужно будет достаточно хорошо понимать язык принтера, чтобы "редактировать его содержимое"...