用于 GDI 打印的 MSDN 示例中缺少文件

Posted

技术标签:

【中文标题】用于 GDI 打印的 MSDN 示例中缺少文件【英文标题】:Missing file from MSDN example for GDI printing 【发布时间】:2014-01-09 12:39:11 【问题描述】:

我正在尝试学习使用GDI 进行打印。

我搜索了MSDN 的资源并找到了this 示例。

我喜欢将打印放在单独的线程中的想法,并且使用GDI 比使用XPS API 更容易学习,所以我下载了示例。

尝试编译后(我使用Visual Studio 2008)我得到这个错误:

fatal error C1083: Cannot open include file: 't2embapi.h': No such file or directory

根据this,我发现我不是唯一一个面临这个问题的人。

不过,我尝试Google 上述错误并发现this 表明我没有最新的SDK

我在C:\Program Files\Microsoft SDKs\Windows 中搜索并找到了一个文件夹v6.0A,这表明我没有安装最新的SDK

但是,here 我发现了一个帖子,有同样问题的人没有通过下载最新的SDK 解决它(虽然该帖子的发布年份是 2006 年,但当时文件仍然丢失,并且下载 SDK 没有帮助 - 为什么现在要改变?)。

我的问题是:

    有没有办法得到这个文件(如果我下载最新的SDK有误,请纠正我)?

    我认为这个文件必须与字体有关 - 有没有办法修改示例以便我不必使用该文件?

感谢您查看此主题并尝试提供帮助。

最好的问候。

【问题讨论】:

【参考方案1】:

T2Embapi.h 由 Windows SDK 提供,它包含用于处理嵌入 OpenType 字体的字体嵌入服务库的声明。显然,您使用的 SDK 版本太旧而无法使用。不确定需要哪个版本,我知道 v6.0 没有,但 v7.1 有。

由于它是作为 XPS 示例开始的,因此该项目有些草率。构建 GDI 示例实际上不需要 T2Embapi。您可以简单地从 stdafx.h 中删除#include。项目的 Release 配置设置也有些草率,从链接器的 Additional Dependencies 设置中删除 T2embed.lib 和 XpsPrint.lib。

【讨论】:

谢谢,我会尝试并报告我的结果。最好的问候。 我试图删除库,但找不到它们在哪里。我查看了 project->*Properties*->*Linker*->*Advanced*。然而,程序运行,但打印到XPS 文件。难道是因为我没有打印机?请为我的打扰道歉,但您似乎已经尝试过此应用程序,所以我问。谢谢你和最好的问候。 如前所述,它们位于发布配置设置中。您可能只查看调试设置。我没有看过,但假设程序将打印到默认打印机。通常是 XPS 打印机。选择另一台打印机作为默认打印机。使用 FILE 端口让它将输出写入文件而不是打印机。 谢谢帕桑特先生。由于该程序有效,并且通过查看它,我发现他们在说明基础知识方面做得很少,我认为您是对的。因此,我会接受您的回答(并投票赞成),因为删除库是另一个与此问题无关的问题。最好的问候。 好的,我找到了——我找错地方了。我已经删除了它们,但即使我将默认打印机更改为 One Note(我没有打印机),文件仍然发送到 XPS。这不是什么大问题,我仍然可以从示例中学习。再次感谢您并致以最诚挚的问候。【参考方案2】:

你的问题是:

1. 有没有办法得到这个文件(如果我下载最新的SDK有错误请纠正我)?

最新版本的 Windows SDK 适用于 Windows 8.1。 Windows Software Development Kit (SDK) for Windows 8.1。但是,我认为“t2embapi.h”已经包含 Windows 7 的 Windows SDK,因为我在“C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include”中找到了头文件。

2. 我认为这个文件必须对字体做一些事情——有没有办法修改这个例子,所以我不必使用那个文件?

@Hans Passant 已经回答了这个问题。

【讨论】:

感谢您的回答,我会尝试下载7.1版本并报告我的结果。最好的问候。 我只能接受一个答案,Mr.Passant 更快。感谢您的帮助,我已赞成您的回答。最好的问候。 别担心。我也知道 Mr.Passant 的回答更快,而且非常有用。感谢您的评论和好意! :)

以上是关于用于 GDI 打印的 MSDN 示例中缺少文件的主要内容,如果未能解决你的问题,请参考以下文章

从命令提示符打印目录到文本文件时缺少特殊字符

缺少“让 Windows 管理我的默认打印机”[关闭]

这个 WMD 示例缺少啥?

Chrome 打印网站,缺少布局选项

AWK 比较两个文件中的两列输出匹配行 - 匹配中缺少行

C# 中缺少用于类型安全数据绑定的“nameof”运算符的解决方法?