Member 13753037 Ответов: 1

{Текст в PCL} Я должен распечатать текстовый файл с помощью PCL5 на языке Си, применив к нему шрифты. Не могли бы вы, пожалуйста, помочь мне в этом ?


Привет,
Я студент, работающий над проектом, основанным на PCL5 .
Пытаюсь разработать программу, которая будет обеспечивать функциональность печати текстовых файлов на принтере.
Драйвер будет реализован на языке Си.
Я реализовал команды PCL5 в программе C, приведенной ниже.
Теперь я хочу изменить шрифт текстового файла, но он не меняется.
Пожалуйста, помогите и предложите выяснить, где я допустил ошибку, и дайте мне знать, правильны ли команды для печати текстовых файлов или нет ?
Вот код для преобразования текста в PCL, над которым я работаю

Что я уже пробовал:

#include <stdio.h>
#include<conio.h>

typedef struct text {
	unsigned char data[100],
	coloumn,
	count_lines;
}TEXT;

struct text detail;

int main()
{
	int Esc = 27;
	int totalchar;
	unsigned char cPCLLineData[128];
	
	char cGraphicsBegin[] = { 27, '&', 'a', '0', 'C', 27, '&', 'a', '0', 'R', 27, '(', '1', '2', 'U' };
	char cRowHeader[] = { 27, '*', 's', '3', 'I' };
	char cGraphicEnd[] = { 27, '*', 'c', '8', '3', 'E' };
	FILE *fptr1, *fptr2;
	char filename[100], c;

	printf("Enter the filename to open for reading \n");
	scanf("%s", filename);

	// Open one file for reading
	fptr1 = fopen(filename, "r");
	if (fptr1 == NULL)
	{
		printf("Cannot open file %s \n", filename);
		exit(0);
	}

	printf("Enter the filename to open for writing \n");
	scanf("%s", filename);

	// Open another file for writing
	fptr2 = fopen(filename, "w");
	if (fptr2 == NULL)
	{
		printf("Cannot open file %s \n", filename);
		exit(0);
	}
	fwrite(&cGraphicsBegin, sizeof(cGraphicsBegin), 1, fptr2); /* Creating PCl file header */
	{
	// Read contents from file
	c = fgetc(fptr1);
	while (c != EOF)
	{
		fputc(c, fptr2);
		c = fgetc(fptr1);
	}
	int u32ColCounter = 0;
	for (int rowCounter = 0; rowCounter <= (detail.coloumn - 1); rowCounter++)
	{
		/* Adding the data for single row */
		for (int Coloumncounter = 0; Coloumncounter <= detail.count_lines; Coloumncounter++)
		{
			fwrite(&cGraphicEnd, sizeof(cGraphicEnd), 1, fptr2);
		}
	}
	fwrite(&cRowHeader, sizeof(cRowHeader), 1, fptr2);/* adding a header per row */
	fwrite(&cPCLLineData, detail.coloumn, 1, fptr2); /* adding a header per row */
	}
	fwrite(&cGraphicEnd, sizeof(cGraphicEnd), 1, fptr2);/* Creating PCl file footer */
	
	printf("\nContents copied to %s", filename);

	fclose(fptr1);
	fclose(fptr2);
	return 0;
}

Richard MacCutchan

Вы используете поля в структуре с именем detail, но никогда не инициализируете ее никакими значениями.

Patrice T

Похоже, код и вопрос не связаны между собой?
объясните проблему кода.

1 Ответов

Рейтинг:
0

KarstenK

Читайте на сайте Функциональный справочник по командному языку принтера о командах и отправить их на принтер. (найдено с помощью Google за минуту)