pdf - 将 MFC CView 导出为矢量格式

标签 pdf view printing mfc svg

通过我的 MFC 应用程序,我能够使用 CView 类在屏幕上打印我的 CDocument。 基本上,我使用 CDC 类在屏幕上编写文本和绘制多边形以提供我的文档的 View 表示。

现在假设我想在 Microsoft Word 中使用该输出 View 。

从用户的角度来看,无需开发人员的工作,我可以:

  • 将我的绘图复制粘贴到 Word 中:这会生成一个光栅 BMP 文件,我可以将其粘贴到 Word 中
  • 打印我的绘图并使用 PDF 导出器:这会生成矢量 PDF 文件,该文件轻巧且可缩放,但不容易在 Word 中重复使用。

这两个毫不费力的解决方案很棒,因为我可以保持 View 的准确布局,但也有缺点(光栅或格式)

解决我的问题的另一种方法是编写 SVG 或 VML,但我不会得到相同的布局,这需要大量工作。

是否有库可以将同类 PDF 导出/打印机制转换为标准格式?

您有什么建议?非常感谢。

最佳答案

要将您的 View 绘制到增强型元文件中,请先阅读文档@MSDN: http://msdn.microsoft.com/en-us/library/427wezx1%28v=VS.80%29.aspx

这是一个例子,它是如何工作的:

CMetaFileDC MFDC;

CRect rect(0,0,width,height);

MFDC.CreateEnhanced(NULL,NULL,rect,NULL);
MFDC.SetBkMode(TRANSPARENT);
MFDC.SetMapMode(MM_HIMETRIC);

CDC tempDC;
tempDC.CreateCompatibleDC(&MFDC);
MFDC.SetAttribDC(tempDC.m_hDC);

// now you draw into the DC like it was your original view

HENHMETAFILE hEnhMetaFile = MFDC.CloseEnhanced();
HENHMETAFILE hEMF = NULL;
hEMF = CopyEnhMetaFile(hEnhMetaFile,"C:\\Temp\\Test.emf");
DeleteEnhMetaFile(hEMF);
DeleteEnhMetaFile(hEnhMetaFile);

关于pdf - 将 MFC CView 导出为矢量格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13720320/

相关文章:

python - Django APIClient 发布为空

javascript - 使用 Javascript 打印 HTML + 多个 PDF 文件

java - 打印多个 Vaadin 图表

ruby - 无法通过 gsub 和 ||= ruby​​ 方法解析多个电话号码

pdf - 如何使用iText从PDF文件中获取所有字段和值?

pdf - 在 Mac 上使用 Preview,为什么不做任何更改而简单地保存 PDF 会完全改变文件的内容?

c# - 将 PDF 流式传输到 iframe

sql-server - SQL Server Management Studio Pane 设置,始终显示图表 Pane 、条件 Pane 和 SQL Pane

mysql - 如何重写具有连接子查询的 SQL 查询

php - 打开/关闭打印调试消息的功能