Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
deniska91
54 / 3 / 3
Регистрация: 17.05.2014
Сообщений: 72
#1

Печать текстового файла - C++

11.07.2014, 22:59. Просмотров 563. Ответов 8
Метки нет (Все метки)

Пытаюсь распечатать текстовый файл.
Использую шаги и функции как написано в MSDN:

To begin a print job, call StartDocPrinter.
To begin each page, call StartPagePrinter.
To write data to a page, call WritePrinter.
To end each page, call EndPagePrinter.
Repeat 2, 3, and 4 for as many pages as necessary.
To end the print job, call EndDocPrinter.


И вроде все нормально, все функции выполняются успешно ( возвращают не 0 ), но печать не начинается все равно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.07.2014, 22:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Печать текстового файла (C++):

Печать текстового файла - C++
Всем привет! Нужно написать программу, которая выводит на печать файл file.txt Каким образом в С++ можно это сделать? Добавлено...

Описать функцию PoslSu(t), которая выводит на печать последнюю строку непустого текстового файла - C++
Описать функцию PoslSu(t), которая выводит на печать последнюю строку непустого текстового файла t (t-файловая переменная). Каким образом...

Добавить в конец первого текстового файла содержимое второго текстового файла - C++
Даны два текстовых файла. Добавить в конец первого файла содержимое второго файла.

Преобразование текстового файла в двоичный и чтение исходных данных из двоичного файла. - C++
#include<iostream> #include<fstream> #include<locale.h> #include<iomanip> #include <cstdlib> using namespace std; struct...

Сортировка слов текстового файла путём слияния данных из файла и заданного внутреннего массива - C++
Здравствуйте. Имеется задание, которое я ни в коем случае не прошу за меня сделать. Мне непонятно пару моментов, которые бы мне...

Указание текстового файла-источника и принимающего файла в cmd - C++
Подскажите, как сделать что б при вводе через cmd надо было указывать файл-исходник и принимающий файл? "полный путь\fdsfsd.exe in.txt...

8
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
11.07.2014, 23:40 #2
deniska91, код в студию!
0
deniska91
54 / 3 / 3
Регистрация: 17.05.2014
Сообщений: 72
11.07.2014, 23:48  [ТС] #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
int PrintFileToPrinter(char* sFileName)
{
     int ret = 0;
     HANDLE     hPrinter;
     DOC_INFO_1 DocInfo;
     DWORD      dwJob;
     DWORD      dwBytesWritten;
     char buffer[4096];
     DWORD dwCount;
     FILE* pF;
 
     TCHAR sPrinterName[MAX_PATH] = {0};
     DWORD Size = MAX_PATH;
 
     GetDefaultPrinter(sPrinterName, &Size);
    
     pF = fopen(sFileName, "rb");
     if (pF)
     {
           if( OpenPrinter( sPrinterName, &hPrinter, NULL ) )
           {
                DocInfo.pDocName = sFileName;
                DocInfo.pOutputFile = NULL;
                DocInfo.pDatatype = "RAW";
 
                if( (dwJob = StartDocPrinter( hPrinter, 1, (LPBYTE)&DocInfo )) != 0 )
                {
                      if( StartPagePrinter( hPrinter ) )
                      {
                          while( ret = !feof(pF) )
                          {
                                dwCount = fread( buffer, sizeof( char ), sizeof( buffer ) / sizeof( char ), pF );
                                if (dwCount <= 0) break;
                                if( !WritePrinter( hPrinter, &buffer[0] , dwCount, &dwBytesWritten ) ) break;
                          }
                          EndPagePrinter( hPrinter );
                      }
                      EndDocPrinter( hPrinter );
                }
                ClosePrinter( hPrinter );
           }
           fclose(pF);
     }
     return ret;
}
0
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
12.07.2014, 00:28 #4
deniska91, я думаю, Вам стоит посмотреть в сторону функции GetDefaultPrinter. Почитайте еще раз документацию. Она первым параметром просит строку с названием принтера, а Вы ей пустую строку. не хорошо как-то.
0
deniska91
54 / 3 / 3
Регистрация: 17.05.2014
Сообщений: 72
12.07.2014, 00:48  [ТС] #5
metaluga145, нет, тут все правильно. Эта функция возвращает имя принтера по умолчанию.

Файл даже в очередь на печать добавляется, но после функции EndDocPrinter вылетает из очереди без печати. Я так понимаю, что нужен какой то завершающий символ передать.
0
MrCold
855 / 753 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
12.07.2014, 00:50 #6
уже исправили
0
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
12.07.2014, 00:58 #7
MrCold, если вопрос решен где-то еще, то скажите решение. всем же интересно
0
deniska91
54 / 3 / 3
Регистрация: 17.05.2014
Сообщений: 72
12.07.2014, 01:01  [ТС] #8
Я не видел решение по данной проблеме на других ресурсах, хотя находил вопросы примерно по той же проблеме
0
zss
Модератор
Эксперт С++
6404 / 5970 / 1945
Регистрация: 18.12.2011
Сообщений: 15,401
Завершенные тесты: 1
12.07.2014, 10:24 #9
Проблема, мне кажется, в том, что Вы посылаете на принтер непосредственно содержимое файла.
А он этого не понимает, поскольку требует некоторых последовательностей,
которые определены в постскрипт формате.
Думаю, проще будет пользоваться не WritePrinter, а функциями GDI используя hPrinter как HDC.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.07.2014, 10:24
Привет! Вот еще темы с ответами:

как может корректно выполняющийся оператор >> (чтение из текстового файла) негативно влиять на открытие другого файла? - C++
Друзья! Создадим два текстовых файла, f_0.txt и f_1.txt и что-нибудь в них запизаем, например в первый запихаем 1234 а во второй 5678 и...

Печать файла на принтере - C++
Обясните пожалуста как в с++ отправить файл принтеру на печать, или киньте ссылку где можно почитать.

Обработка текстового файла - C++
Доброго времени суток. Вопрос: как происходит обработка данного текстового файла при данном коде. Если возможно, с коментария у каждой...

Выборка из текстового файла - C++
Добрый день! Помогите пожалуйста решить такую задачу: Есть текстовый файл 1.txt, многострочный. Требуется выводить в другой файл 2.txt...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Yandex
Объявления
12.07.2014, 10:24
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru