我正在尝试将RTF文档转换为PDF。我有以下代码:
// TestCOMPDF.cpp : Defines the entry point for the console application.
//
#include <windows.h>
#include <tchar.h>
#include <objbase.h>
#include <atlbase.h>
#import "MSVBVM60.DLL" rename ( "EOF", "VBEOF" ), rename ( "RGB", "VBRGB" ) //if you don't use this you will be in BIG trouble
#import "PDFCreator.exe"
int _tmain(int argc, _TCHAR* argv[])
{
CoInitialize(NULL);
{
CComPtr<PDFCreator::_clsPDFCreator> pdfObject;
HRESULT hr = pdfObject.CoCreateInstance(L"PDFCreator.clsPDFCreator");
pdfObject->cStart("/NoProcessingAtStartup", 1);
PDFCreator::_clsPDFCreatorOptionsPtr opt = pdfObject->GetcOptions();
opt->UseAutosave = 1;
opt->UseAutosaveDirectory = 1;
opt->AutosaveDirectory = "c:\\temp\\";
opt->AutosaveFormat = 0; // for PDF
opt->AutosaveFilename = "gigi13";
pdfObject->PutRefcOptions(opt);
pdfObject->cClearCache();
_bstr_t DefaultPrinter = pdfObject->cDefaultPrinter;
pdfObject->cDefaultPrinter = "PDFCreator";
hr = pdfObject->cPrintFile("c:\\temp\\RTF\\garage.rtf");
pdfObject->cPrinterStop = false;
while(true)
{
printf("sleep\n");
Sleep(1000);
if(pdfObject->cCountOfPrintjobs == 0)
break;
}
printf("done\n");
pdfObject->cPrinterStop = true;
pdfObject->cDefaultPrinter = DefaultPrinter;
}
CoUninitialize();
return 0;
}
当运行此代码示例而不是直接创建PDF时,它会通过“保存”对话框提示我,该对话框仅提供选择TIFF文件(不需要)的选项给我输出。有人可以指出我正确的方向还是提供建议?
谢谢,
尤利安人
最佳答案
这只是一个猜测...我有一个类似的问题-不是以编程方式使用PDFCreator时(这超出了我的能力),而是将其用作我的标准打印机以打印到PDF时。
首先,我使用了几天没有任何问题。不是我安装了它,而是我的伙伴。正如我说的那样,它确实起作用,并创建了精美的PDF。
然后,以某种方式,我们家用计算机上的某个人(我们是3个人使用它)必须更改了设置(可能是无意间),以使其输出TIFF而不是PDF。对我来说,我的默认打印机名为“ PDFcreator”,这让我很困惑,为什么突然想要创建TIFF。
同时,我在其所有设置的用户界面中都花了很多力气,并学会了知道哪里出了问题。
左侧树形视图面板中的最新版本列出了一个名为“保存”的项目。如果选择它,则可以配置默认文件名约定以及“标准保存格式”。在我的下拉列表视图中,选择了“ TIFF”而不是“ PDF”。
查看您的代码,您以某种方式调用了PDFCreator.exe
(我不了解详细信息,但是我可以在您的代码中看到此字符串)。我敢打赌:不知何故,您的代码用于运行的用户帐户将其标准保存格式设置为TIFF。可能是您查看了打印机设置(在Windows XP上,我只是键入control printers
,然后右键单击PDFCreator打印机名称以选择“ Properties ...”),却没有发现任何可疑的内容。
但是,PDFcreator将每个用户的设置存储在不同的位置,可能在%userprofile%\local settings\temp\pdfcreator\...
甚至在注册表中。