Bonjour,

je cherche (en C# à l'origine) à imprimer des chaines de caractères sur une imprimante matricielle via la librairie winspool.drv, ce qui fonctionne bien, mais mes caractères accentués sortent sous forme de 0. Après moults tentatives sous C# me conduisant au même résultat (parfois avec le réencodage j'obtiens ? à la place de 0).

je suis donc parti sur une micro application C++ histoire d'avoir une base sûr pour rebondir ensuite en C#, mais même en C++ j'obtiens invariablement le même résultat. Je précise que les RawPrinterHelper fournis par MS ne résolvent pas ce souci :/


Je cherche à imprimer en Mode RAW, 80 caractères par ligne. Le mode Text permet d'avoir les caractères accentués, mais je ne maitrise plus alors ma mise en page....

Donc il me serait bénéfique que
- soit j'arrive à imprimer ces caractères accentués en raw
- soit on me m'indique comment gérer la "mise en page" en mode text (quand j'ai essaye, la présentation des lignes était pas respecté, à la fin de l'impression l'imprimante fait défiler une page, alors que je veux du continu)

Mon Code C++
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
int _tmain(int argc, _TCHAR* argv[])
{
    LPWSTR printerName = L"EPSON LX-300+II ESC/P";
    HANDLE hPrinter;
    char Buff[] = "ABCDéé\r\n";
    DWORD written;

    DOC_INFO_2W doc; //Quand je tente avec un DOCINFOW, ça n'imprime pas
	doc.pDatatype = L"RAW";
	doc.pDocName = L"TEst1";
	doc.pOutputFile = NULL;


	LPVOID pBuf = Buff;

	PRINTER_DEFAULTS pdef;
	pdef.DesiredAccess=PRINTER_ALL_ACCESS;
	pdef.pDevMode=NULL;
	pdef.pDatatype=L"RAW";



	BOOL b0 = OpenPrinter(printerName, &hPrinter, NULL);
	BOOL b1 = StartDocPrinter(hPrinter, 1, (LPBYTE)&doc);
	BOOL b2 = StartPagePrinter(hPrinter);

	BOOL b3 = WritePrinter(hPrinter, pBuf, sizeof(Buff), &written);

	EndPagePrinter(hPrinter);
	EndDocPrinter(hPrinter);
	ClosePrinter(hPrinter);
        Sleep(2000);

	return 0;
}
Merci pour votre aide

Edit : sous ms-dos, si je monte l'imprimante (usb) sur un port lpt via net use et que derrière je fais echo éééé > lpt3 par exemple, ça imprime sans souci. Dans les paramètres de l'imprimante c'est du RAW l'option format de données