你仲未登入,登录后可获得更好嘅体验
你仲未登入,登录后可获得更好嘅体验
活动规则
1、活动时间:{{ info.groupon.start_at }} ~ {{ info.groupon.end_at }}。
2、博团有效呢期:{{ info.groupon.expire_days * 24 }}钟。
3、博团人数:{{ info.groupon.need_count }}人。
博团须知
1、博团流程:加/发起团购并成功支付-喺有效呢期内搏团人数满足活动要求人数-博团成功!
2、如果唔喺有效期间呢满足活动人数篇博团失败,已经支付嘅金额会原先路退回。
3、博团要求人数同活动时间喺唔同货嘅中可能会唔一样,请注意睇活动规则。
novaPDF,你强大嘅PDF创建工具
novaPDF系适用于Windows嘅PDF列表机,可畀你松创建行业标准嘅PDF文件(可搜寻且可选噉符合PDF / A)。
打印到PDF从未咁简单,你只使打开档案,单击“打印”并选择novaPDF作为列印机即可建置PDF。
使用novaPDF,你可以轻松噉喺任何可打印嘅档案创建PDF文件,好似打印到物理列印机一样。其直观嘅介面令其易于初学者使用,但都包高级用户嘅高级功能。即刻下载试用版,并免费使用长达半个天。
novaPDF与以下用系统相容:Windows 11,10,8,7,Vista(32/64位);服务器20222019201620122008R2
以下系使用novaPDF时获得嘅一啲着数:
主要特点
使用novaPDF,你可以将任何类型嘅可打印档案(即.DOCX,XLSX,PPTX,PUBX,HTML,TXT,……)转换为PDF,透过印表机驱动程序介面访问其功能。
如果安装咗novaPDF,你只使单击任何与档案有关嘅Windows应用程式中嘅“打印”揿掣即可创建PDF。你仲可唔可以使用novaPDF嘅概述介面。
novaPDF附带晒所有Microsoft Office应用程式嘅载入项:Word,Excel,PowerPoint,Publisher,Visio同Outlook。佢意味住喺Office应用程式一键转换为PDF。
载入项嘅一个主要优点系可以转换隐藏嘅超连结同轻松转换书签。
你可以通过要求收件人输入密码先可以检视、打印或者复制/粘贴PDF中嘅内容嚟保护你PDF档案(256位AES加密)。
你可以控制系咪可以检视、打印、修改、复制或者注解PDF。此外,你可以应用数字签名嚟证明PDF档案嘅真实性。
官方网站:https://www.novapdf.com/compare-editions.html
士啤下载:N/A
发货时间:人工处理
运行平台:Windows
介面言:支持中文介面显示,多语言可选。
更新说明:支持小版本升更新(v11.x)
买前试用:购前可免费试用半个天。
点收货:帮衬后,启动信息会以邮件嘅形式发送到下单时嘅地址,同时可喺个人中心,我订单中检视对应嘅产品开通码。
设备数量:可安装一部电脑。
更换电脑:原先电脑解除安装,新电脑开通。
开通引导:对添加。
特殊说明:对添加。
合作斟
多台印表机范例与临时列表机范例类似,但佢地咗多个线程。
碌士
要使用范例,你一定要安装novaPDF SDK,因为范例需要佢先运行。点击此处下载:nova PDF SDK
原始码
cpp // HelloWorld.cpp #include "stdafx.h" //Include novaPDF headers #include "..\..\..\include\novaOptions.h" #include "..\..\..\include\novaEvents.h" //NovaPdfOptions #include "..\..\..\include\novapi.h" #include "nova.h" //name of novaPDF Printer Demo #define PRINTER_NAME1 L"novaPDF 10 temporary printer1" #define PRINTER_NAME2 L"novaPDF 10 temporary printer2" #define PRINTER_NAME3 L"novaPDF 10 temporary printer3" #define PORT_NAME1 L"novaPDF10temp1" #define PORT_NAME2 L"novaPDF10temp2" #define PORT_NAME3 L"novaPDF10temp3" #define FILE_NAME1 L"first.pdf" #define FILE_NAME2 L"second.pdf" #define FILE_NAME3 L"third.pdf" //text to be written in the PDF file #define PDF_TEXT L"Hello world!" //PDF file name #define PDF_FILE_NAME L"HelloWorld.pdf" //Print profile name #define PROFILE_NAME L"HelloWorld Profile" #define PROFILE_IS_PUBLIC 0 typedef struct _PRT_THREAD_PARAM { WCHAR wsPrinterName[255]; WCHAR wsPortName[255]; WCHAR wsFileName[255]; } PRT_THREAD_PARAM; DWORD WINAPI PrtThreadProc(LPVOID lpParameter); HANDLE CreatePrtThread(LPWSTR p_strPrinterName, LPWSTR p_wsPortName, LPWSTR p_wsFileName); //entry point for the console application int _tmain(int argc, _TCHAR* argv[]) { HANDLE hThread1 = CreatePrtThread(PRINTER_NAME1, PORT_NAME1, FILE_NAME1); HANDLE hThread2 = CreatePrtThread(PRINTER_NAME2, PORT_NAME2, FILE_NAME2); HANDLE hThread3 = CreatePrtThread(PRINTER_NAME3, PORT_NAME3, FILE_NAME3); if (hThread1 > 0){ //wait to stop processing events WaitForSingleObject(hThread1, INFINITE); CloseHandle(hThread1); } if (hThread2 > 0){ //wait to stop processing events WaitForSingleObject(hThread2, INFINITE); CloseHandle(hThread2); } if (hThread3 > 0){ //wait to stop processing events WaitForSingleObject(hThread3, INFINITE); CloseHandle(hThread3); } return 0; } HANDLE CreatePrtThread(LPWSTR p_strPrinterName, LPWSTR p_wsPortName, LPWSTR p_wsFileName) { PRT_THREAD_PARAM* pParams; DWORD dwThreadId; // Transmit parameters for thread: pipe handle and PDF temp file name pParams = (PRT_THREAD_PARAM*)GlobalAlloc(LPTR, sizeof(PRT_THREAD_PARAM)); wcscpy_s(pParams->wsPrinterName, p_strPrinterName); wcscpy_s(pParams->wsPortName, p_wsPortName); wcscpy_s(pParams->wsFileName, p_wsFileName); // Create the thread HANDLE hThread =CreateThread( NULL, // no security attribute 0, // default stack size (LPTHREAD_START_ROUTINE) PrtThreadProc, (LPVOID) pParams, // thread parameter 0, // not suspended &dwThreadId); // returns thread ID return hThread; } DWORD WINAPI PrtThreadProc(LPVOID lpParameter) { HRESULT hr = S_OK; //initialize COM hr = CoInitialize(NULL); if (FAILED (hr)) { MessageBox(NULL, L"Failed to initialize COM", L"novaPDF", MB_OK); return hr; } // Read thread's parameter: a handle to a pipe instance and the name of the temporary PDF file PRT_THREAD_PARAM* pParams = ((PRT_THREAD_PARAM*)lpParameter); INovaPdfOptions10 *pNova = 0; hr = CoCreateInstance(__uuidof(NovaPdfOptions10), NULL, CLSCTX_INPROC_SERVER, __uuidof(INovaPdfOptions10), (LPVOID*) &pNova); if (FAILED(hr)) { MessageBox(NULL, L"Failed to create novaPDF COM object", L"novaPDF", MB_OK); return hr; } //if you have an application license for novaPDF SDK, call the RegisterLicenseKey() function //hr = pNova->RegisterLicenseKey(<register name>, <license key>, <application name>); if (SUCCEEDED(hr)) { //add temporary printer //8501 is default service port, check next registry key: //HKEY_LOCAL_MACHINE\SOFTWARE\Softland\novaPDF 10\ServicePort //nPdfSdk10_Softland is the default OEMID for novaPDF SDK change it with your license OEMID pNova->AddNovaPrinter(pParams->wsPrinterName, pParams->wsPortName, L"nPdfSdk10_Softland", L"8503", L""); // set optional PDF settings LPWSTR pwsNewProfileID = NULL; //create a new profile with default settings hr = pNova->AddProfile(PROFILE_NAME, PROFILE_IS_PUBLIC, &pwsNewProfileID); //load the newly created profile if (SUCCEEDED(hr) && pwsNewProfileID) { hr = pNova->LoadProfile(pwsNewProfileID); } else { pNova->Release(); return hr; } if (SUCCEEDED(hr) && pwsNewProfileID) { // set novaPDF options // set resulting file name pNova->SetOptionLong(NOVAPDF_SAVE_FOLDER_TYPE, SAVEFOLDER_CUSTOM); pNova->SetOptionLong(NOVAPDF_SAVE_LOCATION, LOCATION_TYPE_LOCAL); pNova->SetOptionLong(NOVAPDF_SAVE_FOLDER_TYPE, SAVEFOLDER_CUSTOM); pNova->SetOptionString(NOVAPDF_SAVE_FOLDER, L"C:\\temp\\novaPDF"); pNova->SetOptionString(NOVAPDF_SAVE_FILE_NAME, pParams->wsFileName); //do not show prompt dialog pNova->SetOptionLong(NOVAPDF_SAVE_PROMPT_TYPE, PROMPT_SAVE_NONE); //if file exists, override pNova->SetOptionLong(NOVAPDF_SAVE_FILEEXIST_ACTION, FILE_CONFLICT_STRATEGY_AUTONUMBER_NEW); //do not open pNova->DisableActionType(NOVA_ACTION_OPEN); //save profile changes hr = pNova->SaveProfile(); //set as active profile for printer pNova->SetActiveProfile(pwsNewProfileID); HANDLE hPrinter; BOOL bTimeout; PDEVMODEW pDevmode = NULL; PRINTER_DEFAULTS pd = { NULL, NULL, PRINTER_ACCESS_USE }; for (int i = 1; i <= 10; i++) { //start print job if (OpenPrinter(pParams->wsPrinterName, &hPrinter, &pd)) { //register to wait for a nova event - wait until PDf is finished pNova->RegisterNovaEvent(L"NOVAPDF_EVENT_START_DOC"); //get default printer DEVMODE int nSize = DocumentProperties(NULL, hPrinter, pParams->wsPrinterName, NULL, NULL, 0); pDevmode = (PDEVMODEW)LocalAlloc(LPTR, nSize); DocumentProperties(NULL, hPrinter, pParams->wsPrinterName, pDevmode, NULL, DM_OUT_BUFFER); //set page size in DEVMODE pDevmode->dmPaperSize = DMPAPER_USER; pDevmode->dmPaperLength = 2970;//5940; pDevmode->dmPaperWidth = 2100;//4200; pDevmode->dmFields = DM_PAPERSIZE | DM_PAPERLENGTH | DM_PAPERWIDTH; DocumentProperties(NULL, hPrinter, pParams->wsPrinterName, pDevmode, pDevmode, DM_IN_BUFFER | DM_OUT_BUFFER); //Print a page HDC hDC = CreateDC(L"", pParams->wsPrinterName, NULL, pDevmode); DOCINFO docInfo = {sizeof(DOCINFO)}; // PDF document name and path docInfo.lpszDocName = PDF_FILE_NAME; StartDoc(hDC,&docInfo); StartPage(hDC); // Draw text on page TextOut(hDC, 100, 80, PDF_TEXT, (int) wcslen(PDF_TEXT)); EndPage(hDC); EndDoc(hDC); DeleteDC(hDC); LocalFree(pDevmode); ClosePrinter(hPrinter); pNova->WaitForNovaEvent(-1, &bTimeout); } } //delete profile pNova->DeleteProfile(pwsNewProfileID); CoTaskMemFree(pwsNewProfileID); } //delete temporarry printer pNova->DeleteNovaPrinter(pParams->wsPrinterName); //release NovaPdfOptions pNova->Release(); } return 0; }