C++ PDFCreator将打印TIFF而不是PDF

C++ PDFCreator将打印TIFF而不是PDF,c++,pdf-generation,C++,Pdf Generation,我正在尝试将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", "

我正在尝试将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;
}
//TestCOMPDF.cpp:定义控制台应用程序的入口点。
//
#包括
#包括
#包括
#包括
#导入“MSVBVM60.DLL”重命名(“EOF”、“VBEOF”)、重命名(“RGB”、“VBRGB”)//如果不使用此选项,您将遇到大麻烦
#导入“PDFCreator.exe”
int _tmain(int argc,_TCHAR*argv[]
{
共初始化(空);
{
CComPtr pdfObject;
HRESULT hr=pdfObject.CoCreateInstance(L“PDFCreator.clsPDFCreator”);
pdfObject->cStart(“/NoProcessingAtStartup”,1);
PDFCreator::\u clsPDFCreatorOptionsPtr opt=pdfObject->getcopions();
opt->UseAutosave=1;
opt->useautosaveditory=1;
opt->AutosaveDirectory=“c:\\temp\\”;
opt->AutosaveFormat=0;//用于PDF
opt->AutosaveFilename=“gigi13”;
pdfObject->腐败(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”);
睡眠(1000);
如果(pdfObject->cCountOfPrintjobs==0)
打破
}
printf(“完成”\n);
pdfObject->cPrinterStop=true;
pdfObject->cDefaultPrinter=DefaultPrinter;
}
coninitialize();
返回0;
}
当运行此代码示例而不是直接创建PDF时,它会提示我一个保存对话框,该对话框仅为我提供了选择TIFF文件(不需要)的输出选项。有人能给我指出正确的方向或提供一些建议吗

谢谢


Iulian这只是一个猜测。。。我有一个类似的问题——不是在以编程方式使用PDFCreator时(这超出了我的能力),而是在使用它作为标准打印机打印到PDF时

首先,我用了几天,没有任何问题。不是我安装的,而是我的搭档。正如我所说。。。它只是工作,并创造了美丽的PDF

然后,不知何故,我们家电脑上的某个人(我们是三个不同的人在使用它)一定改变了设置(可能是无意的),使其输出TIFF而不是PDF。对我来说,我的默认打印机名为“PDFcreator”,这让我非常困惑,为什么它突然想要创建TIFF

与此同时,我在所有设置的用户界面上都做了很多修改,并且学会了知道如果出现问题,应该在哪里查找

最新版本的左侧treeview面板中列出了一个名为“保存”的项。如果选择它,则可以配置默认文件名约定以及“标准保存格式”。在我的下拉列表视图中,选择了“TIFF”而不是“PDF”

查看您的代码,您正在调用
PDFCreator.exe
(我不了解详细信息,但我可以在代码中看到此字符串)。我的打赌是这样的:不知何故,您的代码用来运行的用户帐户的标准存储格式设置为TIFF。可能是您查看了打印机设置(在我的Windows XP上,我只需键入
控制打印机
,然后右键单击PDFCreator printername以选择属性…),没有发现任何可疑内容


但是,PDFcreator会将每个用户的设置存储到不同的位置,可能在
%userprofile%\local settings\temp\PDFcreator\…
中,甚至在注册表中…

这只是一个猜测。。。我有一个类似的问题——不是在以编程方式使用PDFCreator时(这超出了我的能力),而是在使用它作为标准打印机打印到PDF时

首先,我用了几天,没有任何问题。不是我安装的,而是我的搭档。正如我所说。。。它只是工作,并创造了美丽的PDF

然后,不知何故,我们家电脑上的某个人(我们是三个不同的人在使用它)一定改变了设置(可能是无意的),使其输出TIFF而不是PDF。对我来说,我的默认打印机名为“PDFcreator”,这让我非常困惑,为什么它突然想要创建TIFF

与此同时,我在所有设置的用户界面上都做了很多修改,并且学会了知道如果出现问题,应该在哪里查找

最新版本的左侧treeview面板中列出了一个名为“保存”的项。如果选择它,则可以配置默认文件名约定以及“标准保存格式”。在我的下拉列表视图中,选择了“TIFF”而不是“PDF”

查看您的代码,您正在调用
PDFCreator.exe
(我不了解详细信息,但我可以在代码中看到此字符串)。我的打赌是这样的:不知何故,您的代码用来运行的用户帐户的标准存储格式设置为TIFF。可能是您查看了打印机设置(在我的Windows XP上,我只需键入
控制打印机
,然后右键单击PDFCreator printername以选择属性…),没有发现任何可疑内容


但是,PDFcreator会将每个用户的设置存储到不同的位置,可能在
%userprofile%\local settings\temp\PDFcreator\…
中,甚至在注册表中…

这是哪个PDFcreator库?windowsPDFCreator上有一些:好吧,最后看起来PDFCreator有点“愚蠢”。我们通过运行外部脚本来实现我们想要的——虽然程序的C++部分完全相同,但这是哪个PDFC造化库?windowsPDFCreator上有一些:好吧,最后看起来PDFCreator有点“愚蠢”。我们通过运行外部脚本来完成我们想要的——尽管程序的C++部分做了完全相同的事情。谢谢这个提示,我将研究它。我将把它当作一个答案,但不幸的是它不能解决我的问题。再次感谢您的尝试(请参阅我对问题的评论)。感谢您的提示,我将对此进行调查。我将以此作为答案,但不幸的是,它没有解决问题