PDFライターの判定 – プログラミング – Home

通知
すべてクリア

[解決済] PDFライターの判定


TETU
 TETU
(@TETU)
ゲスト
結合: 19年前
投稿: 13
Topic starter  

お世話になっております。

開発環境:VS2010, MFC
言語:C++
OS:Windows10 64bit

WindowsAPIのEnumPrinters()を使ってプリンタの列挙情報を取得することまではできた
のですが、列挙したプリンタが、PDFライターか実際のプリンタかを識別する方法がわ
からず困っております。

PRINTER_INFO_5構造体のpPrinterName変数にプリンタ名が入っているので、そこ
にPDFという文字が含まれていれば、PDFライターである、という識別方法を考えまし
たが、強引な気がしています。

PDFライターを判別する良い方法がありましたら、ご教授いただけないでしょうか?


引用未解決
トピックタグ
TETU
 TETU
(@TETU)
ゲスト
結合: 19年前
投稿: 13
Topic starter  

やろうとしていることは以下の通りになります。

#include stdafx.h
#include <windows.h>
#pragma warning(disable : 4996)

int _tmain(int argc, _TCHAR* argv[])
{
// Sample: C++
TCHAR szBuf[256];
DWORD dwSize = 0, dwResult;
PRINTER_INFO_5 * pInfo = NULL;

if (!EnumPrinters(PRINTER_ENUM_NAME, NULL,
5, (byte*)pInfo, 0,
&dwSize, &dwResult))
{
if (dwSize > 0)
{
pInfo = (PRINTER_INFO_5*)new byte[dwSize];
if (EnumPrinters(PRINTER_ENUM_NAME, NULL,
5, (byte*)pInfo, dwSize,
&dwSize, &dwResult))
{
for (DWORD i = 0; i < dwResult; ++i)
{
// 判定方法を再考
if(_tcsstr(pInfo[i].pPrinterName,
_T(PDF)))
{
_stprintf(szBuf, _T(%sはPDF
ライターです。\n), pInfo[i].pPrinterName);
}
else
{
_stprintf(szBuf, _T(%sはPDF
ライターではない。\n), pInfo[i].pPrinterName);
}
OutputDebugString(szBuf);
}
}
delete [] (byte*)pInfo;
}
}

return 0;
}


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

うーん、
 PDFライターの仕様が定まっていないですからね。
 個々のPDFライターに依存すると思います。
 ポストスプリクト使っているのが多いのかな?
 商用は分からないので、まずはGPL等の公開している
 フリーのPDFライターを調べてみるしかないかもしれませんね。


返信引用
TETU
 TETU
(@TETU)
ゲスト
結合: 19年前
投稿: 13
Topic starter  

返信ありがとうございます。そして返信が遅くなり申し訳ありません。

元々ポストスクリプトで手動で記述しようと思ったのですが、工数がかかり過ぎると判
断し、インストール済みの仮想プリンタを利用しようと思った次第です。

この機能自体、いったん保留することとなったので、ひとまず解決とさせていただきま
す。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました