PDFCreator将打印TIFF而不是PDF

时间:2010-08-10 13:55:15

标签: 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", "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文件(不需要)提供输出选项。有人能指出我正确的方向或提出一些建议吗?

谢谢,

尤利安

1 个答案:

答案 0 :(得分:3)

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

首先,我使用它几天没有任何问题。不是我安装了它,而是我的伙伴。正如我所说......它只是起作用,并创造了漂亮的PDF。

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

与此同时,我在其所有设置的用户界面中进行了大量搜索,并学会了在出现问题时知道在哪里查看。

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

查看你的代码,你以某种方式调用PDFCreator.exe(我不明白细节,但我可以在你的代码中看到这个字符串)。我的赌注是这样的:不知何故,你的代码用来运行的用户帐户将标准保存格式设置为TIFF。您可能需要查看打印机设置(在我的Windows XP上,我只需键入control printers,然后右键单击PDFCreator printername以选择属性... )并找不到任何可疑内容。< / p>

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