I have questions about installing PDFcamp Printer

I have PDFcamp Printer v2.3 Developer License, on Win7 64-bit & WinXP systems.

I am unable to properly install/register the PDFcamp Printer on my Win7 64-bit development machine. I tried installing the driver downloaded from the "PDFcamp Printer Unlimited Royalty Free License" download link (pdfcamp_setup.exe).

Setups to followed when installing PDFcamp Printer
1) Start pdfcamp_setup.exe
2) Windows pop up a message box asking "Do you want to allow the following program from an unknown publisher to make changes to this computer?". I answer yes and it continues to the setup app.
3) For each step I accept the default setting.

After setup is completed there is not a PDFcamp printer device created and there is nor a printer driver listed for PDFcamp in Print Management or on the Advance tab of  the Printer Properties of an existing printer where the Printer Driver can be changed.

This screenshot shows that the PDFcamp driver is not listed in Print Management, even though "VeryPDF PDFcamp Printer v2.3" is listed in the Uninstall programs list.

When "VeryPDF PDFcamp Printer v2.3" is uninstalled I get the following message. After clicking OK the next message is that it was successfully uninstalled.

PDFcamp Printer

PDFcamp Printer

If I download and install the "PDFcamp Printer x64 v2.5" driver (pdfcamp-printer-x64.exe), then it creates a printer device and will create PDF files when used. However it prompts for a registration key and will not accept the key provided by SWReg Digital River.

So that I can continue working on our app I have installed and registered the driver on a Windows XP (32-bit) development machine without any problems. I have also updated one of our applications so that it will  automatically save printed reports to PDF files .

However I still have a few questions.
1) How is PDFcamp Printer supposed to be installed on a Win 7 64-bit machine?
2) How is PDFcamp Printer supposed to be installed/registered on client machines as part of our product installation?
a) Is there a merge module that can be added to our install package or an installer that takes parameters so that the user does not need to be involved?
b) Can a different name be assigned to the printer device during installation?

Our product is a 32-bit application that may be running on either a 32-bit or a 64-bit version of Windows. We need a single process to load the PDFcamp driver on either type of Windows setup.
======================================================
>>1) How is PDFcamp Printer supposed to be installed on a Win 7 64-bit machine?

PDFcamp Printer v2.3 is support 32bit system only, it doesn’t support Windows 7 64bit system, if you wish use PDFcamp Printer on 64bit system, you have to install PDFcamp Printer x64 v2.5 application, PDFcamp Printer x64 v2.5 does support both 32bit and 64bit systems.

>>2) How is PDFcamp Printer supposed to be installed/registered on client machines as part of our product installation?

Yes, after you purchased the Developer License, you can integrate PDFcamp Printer into your application, then you can install and uninstall it from your application silently.

>>a) Is there a merge module that can be added to our install package or an installer that takes parameters so that the user does not need to be involved?

Thank you for your business, please refer to following information about how to install and uninstall PDFcamp Printer from your application,

1. Please go to "C:\Program Files\VeryPDF PDFcamp Printer v2.3" folder, you can run "setup.exe" to install the PDFcamp Printer, you can run "unpdf.exe" to uninstall the PDFcamp Printer, you can also call the "setup.exe" and "unpdf.exe" from your installation package.

2. Please notice, you need copy the "encryptpdf.api" and "email.exe" to your system32 folder from your installation package,

3. Please set "PromptForDefaultPrinter=No" in "config.ini" file to install PDFcamp Printer silently, for example,

[installation]
PromptForDefaultPrinter=No

4. Please write your registration key into your registry from your installation package,
4.1. Set your registration key for all users of this computer,
HKEY_LOCAL_MACHINE\SOFTWARE\verypdf\pdfcamp
RegisterNO = XXXXXXXXXXXX

4.2. Set your registration key for current user of this computer,
HKEY_CURRENT_USER\Software\verypdf\pdfcamp
RegisterNO = XXXXXXXXXXXX

5. Then it's fine.

Files in the "C:\Program Files\VeryPDF PDFcamp Printer v2.3" folder,
1. "setup.exe" will set up the PDFcamp Printer,
2. "unpdf.exe" will delete the PDFcamp Printer,
3. "driver" folder is the driver for the PDFcamp Printer,
4. "encrypdf.api" should be copied into your system32 folder from your setup package,

The following files are necessary,
~~~~~~~~~~
encrypdf.api
pdfcp.exe
setup.exe
unpdf.exe
pdfxp.dll
driver\pdfcamp.ppd
driver\pdfprn.dll
driver\pdfui.dll
~~~~~~~~~~

>>b) Can a different name be assigned to the printer device during installation?

You can’t change the printer name during installation, however, you can rename the PDFcamp Printer easily after installation, please refer to a simple source code at below.

The code snippet is used to rename a printer programmatically. The program initially gets the handle to the printer specified by name using the OpenPrinter function. The current printer settings will be available in the PRINTER_INFO_2 structure. It then retrieves the current printer settings using GetPrinter function. Modify the settings you wish to do by creating the instance of the PRINTER_INFO_2 structure. Set the latest settings using the SetPrinter function. Finally close the printer using ClosePrinter function.

You can use this code as such or with minor alteration in any MFC application to rename a printer.

void CRenamePrinterDlg::OnRenamePrinter()
{
HANDLE hPrinter = NULL;
DWORD dwNeeded = 0;
PRINTER_INFO_2 *pi2 = NULL;
DEVMODE *pDevMode = NULL;
PRINTER_DEFAULTS pd;
BOOL bFlag;
LONG lFlag;
// Open printer handle (on Windows NT, you need
full-access because you
// will eventually use SetPrinter)...
LPTSTR pPrinterName = "LASER-Printer" ;
ZeroMemory(&pd, sizeof(pd));
pd.DesiredAccess = PRINTER_ALL_ACCESS;
bFlag = OpenPrinter(pPrinterName, &hPrinter, &pd);
if (!bFlag || (hPrinter == NULL))
return;
// The first GetPrinter tells you how big the buffer should be in
// order to hold all of PRINTER_INFO_2. Note that this should fail with
// ERROR_INSUFFICIENT_BUFFER.  If GetPrinter fails for any other reason
// or dwNeeded isn't set for some reason, then there is a problem...
SetLastError(0);
bFlag = GetPrinter(hPrinter, 2, 0, 0, &dwNeeded);
if ((!bFlag) && (GetLastError() !=ERROR_INSUFFICIENT_BUFFER) ||(dwNeeded == 0))
{
ClosePrinter(hPrinter);
return ;
}
// Allocate enough space for PRINTER_INFO_2...
pi2 = (PRINTER_INFO_2 *)GlobalAlloc(GPTR, dwNeeded);
if (pi2 == NULL)
{
ClosePrinter(hPrinter);
return ;
}
// The second GetPrinter fills in all the current settings, so all you
// need to do is modify what you're interested in...
bFlag = GetPrinter(hPrinter, 2, (LPBYTE)pi2,dwNeeded, &dwNeeded);
CString bval;
bval.Format(" GetPrinter: %d",bFlag);
AfxMessageBox(bval);
if (!bFlag)
{
GlobalFree(pi2);
ClosePrinter(hPrinter);
return;
}
// If GetPrinter didn't fill in the DEVMODE, try to get it by calling
// DocumentProperties...
if (pi2->pDevMode == NULL)
{
dwNeeded = DocumentProperties(NULL, hPrinter, pPrinterName, NULL, NULL, 0);
if (dwNeeded <= 0)
{
GlobalFree(pi2);
ClosePrinter(hPrinter);
return ;
}
pDevMode = (DEVMODE *)GlobalAlloc(GPTR, dwNeeded);
if (pDevMode == NULL)
{
GlobalFree(pi2);
ClosePrinter(hPrinter);
return ;
}
lFlag = DocumentProperties(NULL, hPrinter, pPrinterName, pDevMode, NULL,
DM_OUT_BUFFER);
if (lFlag != IDOK || pDevMode == NULL)
{
GlobalFree(pDevMode);
GlobalFree(pi2);
ClosePrinter(hPrinter);
return ;
}
pi2->pDevMode = pDevMode;
}
// Driver is reporting that it doesn't support this change...
if (!(pi2->pDevMode->dmFields & DM_ORIENTATION))
{
GlobalFree(pi2);
ClosePrinter(hPrinter);
if (pDevMode)
GlobalFree(pDevMode);
return ;
}
// Specify exactly what we are attempting to change...
/*pi2->pDevMode->dmFields = DM_ORIENTATION;
pi2->pDevMode->dmOrientation = dmOrientation;*/
//CTS_SR
LPTSTR lpPrinterName = "Hi! I am the new printer";
pi2->pPrinterName = lpPrinterName;
// Do not attempt to set security descriptor
pi2->pSecurityDescriptor = NULL;
// Make sure the driver-dependent part of devmode is updated...
lFlag = DocumentProperties(NULL,hPrinter,pPrinterName,
pi2->pDevMode, pi2->pDevMode,DM_IN_BUFFER | DM_OUT_BUFFER);
if (lFlag != IDOK)
{
GlobalFree(pi2);
ClosePrinter(hPrinter);
if (pDevMode)
GlobalFree(pDevMode);
return;
}
// Update printer information...
bFlag = SetPrinter(hPrinter, 2, (LPBYTE)pi2, 0);
if (!bFlag)
// The driver doesn't support, or it is unable to make the change...
{
GlobalFree(pi2);
ClosePrinter(hPrinter);
if (pDevMode)
GlobalFree(pDevMode);
return;
}
// Tell other apps that there was a change...
SendMessageTimeout(HWND_BROADCAST, WM_DEVMODECHANGE, 0L, (LPARAM)(LPCSTR)pPrinterName, SMTO_NORMAL, 1000, NULL);
// Clean up
if (pi2)
GlobalFree(pi2);
if (hPrinter)
ClosePrinter(hPrinter);
if (pDevMode)
GlobalFree(pDevMode);
return;
}

>>Our product is a 32-bit application that may be running on either a 32-bit or a 64-bit version of Windows. We need a single process to load the PDFcamp driver on either type of Windows setup.

PDFcamp Printer x64 v2.5 is support both 32bit and 64bit system, if you wish use PDFcamp Printer x64 v2.5, please feel free to let me know, I will send a license key of PDFcamp Printer x64 v2.5 to you shortly.

VeryPDF

VN:F [1.9.20_1166]
Rating: 7.0/10 (1 vote cast)
VN:F [1.9.20_1166]
Rating: 0 (from 0 votes)
I have questions about installing PDFcamp Printer, 7.0 out of 10 based on 1 rating

Related Posts

This entry was posted in PDFcamp Printer and tagged . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *


Verify Code   If you cannot see the CheckCode image,please refresh the page again!