You haven't signed in yet, you can have a better experience after signing in
You haven't signed in yet, you can have a better experience after signing in

Activity Rules
1、Activity time:{{ info.groupon.start_at }} ~ {{ info.groupon.end_at }}。
1、Activity time:cease when sold out。
2、Validity period of the Group Buying:{{ info.groupon.expire_days * 24 }} hours。
3、Number of Group Buying:{{ info.groupon.need_count }}x。
Please Pay Attention
1、Teamwork process: Join/initiate a Group Buying and make a successful payment - Within the validity period, the number of team members meets the activity requirements - Group Buying succeeded!
2、If the number of participants cannot be met within the valid period, the group will fail, and the paid amount will be refunded in the original way.
3、The number of people required and the time of the event may vary among different products. Please pay attention to the rules of the event.

novaPDF 11 个人版 PDF文档创建工具软件




novaPDF,您强大的PDF创建工具
novaPDF 是适用于 Windows 的 PDF 打印机,可让您轻松创建行业标准的PDF文件(可搜索且可选地符合PDF / A)。
打印到 PDF 从未如此简单,您只需打开文档,单击“打印”并选择 novaPDF 作为打印机即可生成 PDF。
使用 novaPDF,您可以轻松地从任何可打印的文档创建 PDF 文件,就像打印到物理打印机一样。其直观的界面使其易于初学者使用,但也包括高级用户的高级功能。立即下载试用版,并免费使用长达30天。
novaPDF 与以下操作系统兼容:Windows 11,10,8,7,Vista(32/64位);服务器 2022, 2019, 2016, 2012, 2008R2
以下是使用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)
买前试用:购前可免费试用 30 天。
如何收货:购买后,激活信息会以邮件的形式发送到下单时的邮箱,同时可在个人中心,我的订单中查看对应的产品激活码。
设备数量:可安装 1 台电脑。
更换电脑:原电脑卸载,新电脑激活。
激活引导:待添加。
特殊说明:待添加。

Any question
多台打印机示例与临时打印机示例类似,但它使用了多个线程。
笔记
要使用示例,您必须安装 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; }




















