ghostscript如何设置静默打印
时间: 2024-06-04 17:11:13 浏览: 373
静默打印是指打印过程中不显示打印进度和提示信息,直接进行打印。可以通过以下步骤实现Ghostscript的静默打印:
1. 打开命令行窗口,进入Ghostscript安装目录。
2. 执行以下命令,实现静默打印:
gswin32c.exe -dNOPAUSE -dBATCH -dNOPROMPT -dPrinted -dNOPRINT -sDEVICE=printer -sOutputFile="%printer%printer_name" input_file
其中,printer_name为打印机名称,input_file为要打印的文件路径。
3. 执行完毕后,文件将被发送到指定打印机进行打印,期间不会有任何提示信息。
注意事项:
1. 需要确保打印机已经安装并且设置为默认打印机。
2. 如果要打印多个文件,可以使用通配符*来代替input_file,例如:
gswin32c.exe -dNOPAUSE -dBATCH -dNOPROMPT -dPrinted -dNOPRINT -sDEVICE=printer -sOutputFile="%printer%printer_name" *.pdf
这将打印当前目录下所有的PDF文件。
3. 如果要使用Ghostscript进行打印,需要安装Ghostscript软件。可以从Ghostscript官网下载安装程序进行安装。
相关问题
windows下c++使用ghostscript的api接口静默打印pdf
使用Ghostscript的API接口可以在Windows下实现静默打印PDF文件。Ghostscript是一个开源的PDF处理引擎,它提供了C/C++接口,可以在程序中调用相应的函数实现PDF打印功能。
下面是一个简单的示例代码,演示如何使用Ghostscript的API接口实现静默打印PDF文件:
```c++
#include <stdio.h>
#include <windows.h>
#include "gdiplus.h"
#include "gs/gsapi.h"
#pragma comment(lib, "gdiplus.lib")
#pragma comment(lib, "gsdll32.lib")
void print_pdf(const wchar_t* filename, const wchar_t* printer_name)
{
// 初始化Ghostscript API
int argc = 3;
const char* argv[3] = {
"gsdll32.dll",
"-dNOPAUSE",
"-dBATCH"
};
GSAPI_HANDLE gs_handle;
gsapi_new_instance(&gs_handle, NULL);
// 设置输出打印机
char printer[256] = { 0 };
char port[256] = { 0 };
WideCharToMultiByte(CP_ACP, 0, printer_name, -1, printer, sizeof(printer), NULL, NULL);
PRINTER_INFO_2* pinfo = NULL;
DWORD num_printers = 0;
EnumPrinters(PRINTER_ENUM_LOCAL, NULL, 2, NULL, 0, &num_printers, NULL);
pinfo = (PRINTER_INFO_2*)malloc(num_printers * sizeof(PRINTER_INFO_2));
EnumPrinters(PRINTER_ENUM_LOCAL, NULL, 2, (LPBYTE)pinfo, num_printers * sizeof(PRINTER_INFO_2), &num_printers, NULL);
for (DWORD i = 0; i < num_printers; ++i) {
if (strcmp(pinfo[i].pPrinterName, printer) == 0) {
sprintf_s(port, sizeof(port), "%s", pinfo[i].pPortName);
break;
}
}
free(pinfo);
gsapi_set_arg_encoding(gs_handle, GS_ARG_ENCODING_UTF8);
gsapi_set_stdio(gs_handle, NULL, NULL, NULL);
gsapi_init_with_args(gs_handle, argc, (char**)argv);
gsapi_set_arg_encoding(gs_handle, GS_ARG_ENCODING_UTF8);
gsapi_set_stdio(gs_handle, NULL, NULL, NULL);
gsapi_set_poll(gs_handle, NULL);
gsapi_set_display_callback(gs_handle, NULL);
gsapi_set_stdin(gs_handle, NULL);
gsapi_set_stdout(gs_handle, NULL);
// 打印PDF文件
wchar_t command[1024] = { 0 };
swprintf_s(command, sizeof(command), L"-dPrinted -dBATCH -dNOPAUSE -dNOSAFER -q -dNumCopies=1 -sDEVICE=mswinpr2 -sOutputFile=\"%%printer%s\" \"%s\"", port, filename);
char* argv2[64] = { 0 };
int argc2 = 0;
const wchar_t* p = command;
while (*p) {
argv2[argc2++] = (char*)p;
while (*p && !iswspace(*p))
p++;
if (*p)
*p++ = 0;
}
gsapi_exit(gs_handle);
gsapi_delete_instance(gs_handle);
}
int main()
{
Gdiplus::GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
Gdiplus::GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
wchar_t filename[] = L"C:\\test.pdf";
wchar_t printer_name[] = L"Microsoft Print to PDF";
print_pdf(filename, printer_name);
Gdiplus::GdiplusShutdown(gdiplusToken);
return 0;
}
```
需要注意的是,使用Ghostscript打印PDF文件需要确保Ghostscript已经正确安装并设置好环境变量。另外,在打印PDF文件前,需要先通过Ghostscript API初始化Ghostscript引擎,并设置输出打印机等参数。最后,调用Ghostscript API打印PDF文件即可。
c++在windows平台下使用ghostscript的api接口静默打印pdf
要在Windows平台下使用Ghostscript的API接口静默打印PDF,可以按照以下步骤进行操作:
1. 下载并安装Ghostscript:在Ghostscript官方网站上下载并安装Ghostscript。
2. 配置环境变量:将Ghostscript的安装目录添加到系统环境变量中,以便在命令行中使用。
3. 编写代码:使用Ghostscript的API接口编写代码,实现PDF的静默打印。
下面是一个简单的示例代码,可以在命令行中执行:
```
gsapi_revision_t revision;
const char *pdf_file = "test.pdf";
const char *printer_name = "printer_name";
int main(int argc, char *argv[])
{
int err;
gsapi_instance *instance;
gsapi_new_instance(&instance, NULL);
gsapi_set_arg_encoding(instance, GS_ARG_ENCODING_UTF8);
gsapi_set_stdio(instance, stdin, stdout, stderr);
gsapi_init_with_args(instance, argc, argv);
err = gsapi_set_poll(instance, gs_poll);
if (err == 0) {
err = gsapi_set_display_callback(instance, gs_display);
}
if (err == 0) {
err = gsapi_set_stdio(instance, NULL, NULL, NULL);
}
if (err == 0) {
err = gsapi_revision(instance, &revision);
}
if (err == 0) {
char *args[] = {
"gs",
"-dBATCH",
"-dNOPAUSE",
"-dSAFER",
"-sDEVICE=mswinpr2",
"-sOutputFile=%printer%",
"-dNoCancel",
"-dQUIET",
"-dPrinted",
"-dNOSAFER",
"-dNumCopies=1",
"-dDuplex=DuplexNoTumble",
pdf_file,
NULL
};
err = gsapi_init_with_args(instance, sizeof(args) / sizeof(args[0]) - 1, args);
if (err == 0) {
err = gsapi_exit(instance);
}
}
gsapi_delete_instance(instance);
return err;
}
int gs_poll(void *caller_handle, int requested_events, gs_event_t *received_events)
{
return 0;
}
int gs_display(void *caller_handle, const char *message)
{
return 0;
}
```
在上面的代码中,我们使用了Ghostscript的API接口来打印PDF文件。我们首先创建了一个Ghostscript实例,然后设置了一些参数,最后执行了打印操作。
需要注意的是,上面的代码中使用了mswinpr2设备来打印,这是Windows平台下的一个虚拟打印机设备,可以将打印任务发送到指定的打印机。
在使用时,需要将pdf_file和printer_name替换为实际的PDF文件路径和打印机名称。
执行上面的代码后,会将PDF文件静默地打印到指定的打印机。
阅读全文