來源:http://www.pdfforge.org/files/old_forum/1002.html
a working sample with C++ & COM
2007-08-15 22:56:18 by eckart
hi,?
here is a working sample of how to use PDFCreator in Visual C++ (after searching on internet for something similar I guess this is the only sample)?
This sample is reading c:\2.txt file and output to c:\pdf\2.pdf?
1. you need to #import 1?
#import "C:\WINDOWS\system32\MSVBVM60.DLL" rename ( "EOF", "VBEOF" ), rename ( "RGB", "VBRGB" ) //if you don't use this you will be in BIG trouble?
#import "C:\Program Files\PDFCreator\PDFCreator.exe"?
2. start your PDF engine?
::CoInitialize(NULL);?
CComPtr<pdfcreator::_clspdfcreator>?pdfObject;?
HRESULT hr = pdfObject.CoCreateInstance(L"PDFCreator.clsPDFCreator");?
if (!FAILED(hr))?
{?
if (pdfObject->cStart(L"/NoProcessingAtStartup", FALSE)==FALSE)?
{?
AfxMessageBox("can't start printer");?
return;?
};?
PDFCreator::_clsPDFCreatorOptionsPtr opt= pdfObject->GetcOptions();?
opt->PutUseAutosave(1);?
opt->PutUseAutosaveDirectory(1);?
opt->PutAutosaveDirectory(L"c:\\pdf\\"); //here you put your output folder?
opt->PutAutosaveFormat(0); //0 for PDF?
opt->PutAutosaveFilename(L"2.pdf"); //pdf output file name?
pdfObject->PutRefcOptions(opt);?
pdfObject->PutcDefaultPrinter(L"PDFCreator"); //use PDFCreator printer from ControlPanel->Printers?
pdfObject->cClearCache();?
//pdfObject->cSaveOptions(L"1");?
pdfObject->PutcPrinterStop(VARIANT_FALSE); //let's start with PDFCreator Printer Process Queue ON?
pdfObject->cPrintFile(L"c:\\2.txt"); //input of the file that will be translated into PDF format?
Sleep(4000); //lets wait for processing, TODO implement __clsPDFCreator_eReadyEventHandler?
BSTR fn = pdfObject->GetcOutputFilename(); //if your PDFCreator Printer is OFF you will get nothing ""?
AfxMessageBox(CString((const wchar_t*)fn));?
pdfObject->cClose();?
}?
pdfObject.Release();?
//--------------------------------
*tada*?
if this sample is not working I guess is not my fault ;-)?
thanks,?
--adi?
adrian.paleacu[a]gmail.[0m?
?
2008-12-16 10:56:50 by hwewet
Hi!
This sample works fine, but is it possible to do this
without the #import instructions ???
by the way, i dont want use the *.tlh *.tli files of course!