1

非標準フォントを使用した単語文書があります。埋め込まれていませんが、問題のマシンにインストールされています。Word 2010では、特定のプリンタードライバー(HP Color LaserJet 2800シリーズPS)を指定して、それをポストスクリプトファイルに印刷すると、そのフォントが正常に埋め込まれます(サブセット化されます)。それは、Wordアプリケーション自体から実行する場合です。

msword :: _ Document :: Printoutを使用してプログラムで実行しようとし、同じプリンタードライバーを指定すると、問題のフォントが別のものに置き換えられます。どちらの場合も同じプリンタードライバーが使用されていることはわかっています。両方の方法で生成された.psファイルには、上部にプリンタードライバーの名前が表示されます。この方法で自動化を行うとフォントが置き換えられるのに、アプリ自体は置き換えられない理由はありますか?

CComVariant vIgnore; 
vIgnore.vt = VT_ERROR;
vIgnore.scode = DISP_E_PARAMNOTFOUND;

CComVariant vFalse = false;
CComVariant vTrue = true;
CComVariant vOutputFile(m_csTempOutputFile);
CComVariant vOneCopy((int)1);  

 ...
 ....

 m_piApp->SetActivePrinter( (LPCTSTR) csPrinterName); 

 m_Doc.PrintOut(
        &vFalse,//Background, return control while printing? FALSE
        &vFalse,//Append, append output to existing file? FALSE, overwrite file
        &vIgnore,//Range, the page range
        &vOutputFile,//OutputFileName, name of printtofile file
        &vIgnore,//From, starting page (ignored)
        &vIgnore,//To, ending page (ignored)
        &vIgnore,//Item, what content to print, DEFAULT
        &vOneCopy,//Copies, number of
        &vIgnore,//Pages, page range
        &vIgnore,//PageType, even only, odd only, etc
        &vTrue,//PrintToFile, TRUE
        &vIgnore,//Collate,
        &vIgnore,//ActivePrinterMacGX, (mac feature only)
        &vIgnore,//ManualDuplexPrint,
        &vIgnore,//PrintZoomColumn, (printing several pages on one page)
        &vIgnore,//PrintZoomRow,
        &vIgnore,//PrintZoomPaperWidth,
        &vIgnore);//PrintZoomPaperHeight,
4

2 に答える 2

1

使用するプリンタドライバには、フォントの処理に影響を与えるさまざまな設定があります。彼らは制御します...

  • ...フォントが埋め込まれているかどうか(「フォントをプリンタにダウンロード」または「プリンタフォントを使用」)および
  • ...埋め込まれている場合、これはどのように行われますか('As TrueType''Convert to Outlines'、 ' Usesubstitution table'など)

警告:現在、実際のWindowsシステムでは検索できません。これらの点を、メモリから引用しています。

これで、これらのプリンタードライバー設定を管理者が設定できるようになり、すべてのユーザーのデフォルトになります。

各ユーザーは、これらの設定を異なるモードに変更することもできます。

今ここに私の理論が来ます:

  • Wordアプリケーションからテストを行う場合は、特定のユーザーとしてログインしているときに確実にテストを行い、このユーザーの設定が生成されるPostScriptに適用されます。

  • プログラムでテストを行うと、このプロセスが、異なる設定が有効になっている別の異なるユーザーとして実行されている状況になる可能性があります。

この可能性を排除するだけであっても、このトラックをたどる価値は確かにあります...

于 2012-05-29T20:19:16.610 に答える
1

これが表示される一部のシステムでは、サーバーを再起動すると問題が修正されました。True Typeフォントをインストールした後、サーバーを再起動する必要があるようです。

実際、一部のシステムでは、再起動後、フォントが埋め込まれているのがわかりました。なぜWordアプリで同じことをするのに再起動は必要なかったのに、自動化を行うのに必要だったのか-私にはわかりません。

http://www.idautomation.com/kb/ttf-printing.html

于 2012-05-30T20:00:00.657 に答える