Печать документа в Windows

Общие вопросы, не зависящие от языка реализации.

Модераторы: Duncon, Hawk, Romeo, Eugie

Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Любые векторные графические редакторы (напр, Visio, CorelDraw и т.д.) поддерживают экспорт в формат Windows Mwtafile (WMF).
Также формат WMF некоторым образом связан с WinAPI-функциями группы GDI.
Так как это фактически сценарий отрисовки векторных объектов (последовательного вызова GDI-функций).
Аватара пользователя
WinMain
Сообщения: 929
Зарегистрирован: 14 янв 2005, 10:30
Откуда: Москва
Контактная информация:

Если нужно нарисовать бланк платёжки, то лучше это делать в Excel или в Word. Другое дело, что эти редакторы не сохраняют изображение в метафайл, поэтому приходится копировать изображение в буфер обмена и сохранять его через другое приложение...
Можешь сделать так: создай консольный проект Win32 с названием SaveEmf. Помести в него следующий код и скомпилируй проект...

Код: Выделить всё

#include "stdafx.h"
#include <windows.h>

int _tmain(int argc, _TCHAR* argv[])
{
	if (argc < 2)
	{
		_tprintf(_T("%s\n"), 
			_T("The file name was not pointed in command line."));
		return -1;
	}
	//
	if (::OpenClipboard(NULL) != 0)
	{
		HENHMETAFILE hEmf = (HENHMETAFILE)::GetClipboardData(CF_ENHMETAFILE);
		if (hEmf != NULL)
		{
			::CopyEnhMetaFile(hEmf, argv[1]);
		}
		::CloseClipboard();
	}
	return 0;
}
Затем открой (или создай) в Excel файл с бланком документа. Выдели нужную область ячеек и скопируй в буфер обмена. Потом запусти в командной строке только что сделанную утилиту, к примеру так: SaveEmf.exe BlankDoc.emf
В результате чего появится файл BlankDoc.emf, который и является тем самым метафайлом.
Аватара пользователя
Decoder
Сообщения: 308
Зарегистрирован: 19 фев 2008, 23:11
Откуда: Moscow

Спасибо, WinMain! Очень помог.
Ответить