Virtual Printer for Developers
© 2000-2012, Two Pilots

На английском: Virtual Printer
Другие проекты: PDF Library
В начало История версий Документация Скачать Поддержка Купить

Виртуальный Принтер для C++, C#, VB.NET, Delphi, VB (Visual Basic)

 

Printer Previewer

В этом примере мы создадим приложение Print Previewer. Оно будет читать инофрмацию из INI-файла и выводить её на форму. Так же приложение будет отображать EMF-файлы, сгенерированные виртуальным принтером:

Printer Previewer для Виртуального принтера

В правой части формы размещен ListBox, который содержит детальную информацию о работе принтера, включая список распечатанных страниц. Кликнув на имя EMF-файла, он отобразится на форме. При двойном клике на preview-окно откроется просмотрщик для EMF-файлов, который установлен на вашем компьютере.

 

Наши рекомендации по написанию этого приложения на языке C#

Если вы используете C# или VB.NET (или любой другой язык .NET), вы не найдете ни одной функции, которая манипулирует INI-файлами. Единственный способ - воспользоваться функцией GetPrivateProfileString из Windows API.

Вот версия такого кода на C#:

using System;
using System.Text;
using System.Runtime.InteropServices;

namespace Ini
{
    public class IniFile
    {
        public string m_sIniFilePath;

        [DllImport("kernel32")]
        private static extern long WritePrivateProfileString
		(string section,  string key, string val, string sIniFilePath);
        [DllImport("kernel32")]
        private static extern int GetPrivateProfileString
		(string section, string key,  string def, StringBuilder retVal, int size, string sIniFilePath);

        public IniFile(string sIniFilePath)
        { 
            m_ sIniFilePath = sIniFilePath; 
        }

        public void IniWriteValue(string Section, string Key, string Value)
        { 
            WritePrivateProfileString(Section, Key, Value,  m_ sIniFilePath); 
        }

        public string IniReadValue(string Section, string Key, string Default)
        {
            StringBuilder temp = new StringBuilder(255);
            GetPrivateProfileString(Section, Key, "", temp, 1024, m_ sIniFilePath);
            return (temp.Length>0) ? temp.ToString() : Default;
        }
    }
}

INI-файл содежит много параметров, поэтому мы сведем их и функцию чтения в класс. Назовем его IniFile. В классе IniFile будет хранится вся информация из INI-файла (имя принтера, ориентация страницы, разрешение, количество распечатанных страниц, пути к EMF-файлам и т.д.) Для заполнения ListBox'a мы будм пользоваться экземпляром класса DocumentProperties. DocumentProperties внутри себя содержит экземрляр класса IniFile, для манипуляции с INI-фалом.

Экземпляр класса DocumentProperties создается используя путь к INI-файлу, который получен из командной строки:

DocumentProperties m_docProps = new DocumentProperties();
...
// Parse .ini file
if (m_docProps.Retrieve(m_commandLine) == true)
{
    // Fill ListBox
}

После этого в любом месте программы можно использовать экземпляр класса DocumentProperties для получения данных о напечатанном документе. Так, например, можно отображать EMF-файл на форме, с помощью контрола PictureBox:

pictureBox.Image = Image.FromFile(m_docProps.Files[pageNumber]);

 

Скачать Printer Prewiever:

Виртуальный принтер для C++/MFC
Виртуальный принтер для Delphi
Виртуальный принтер для C#
Виртуальный принтер для VB.Net
Виртуальный принтер для нескольких языков

О компании | Контакты | Карта сайта

Copyright © 2000-2012 Two Pilots. Все права защищены.