Неправильная печать акцентов (Zebra ZD420, ZPL)C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Неправильная печать акцентов (Zebra ZD420, ZPL)

Сообщение Anonymous »

У меня возникла проблема с печатью акцентированных и специальных символов на принтере Zebra ZD420. При печати этикеток акценты и некоторые символы отображаются неправильно. Например, «Code Lot reduit» становится «Code Lot réduit».
Я использую язык ZPL и уже попробовал несколько решений:
Я добавил команду ^CI28 для международного набора символов.
Я добавил ^FH перед каждым текстовым полем (^FD), содержащим специальные символы.
Я сохранил свой файл ZPL в формате UTF-8.
Я пытался закодировать текст в UTF-8 в своем коде C# перед отправкой его на принтер, используя этот код:

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

[HttpPost]
public IActionResult ImprimerEtiquetteModifiee()
{
try
{
// Chemin vers le fichier ZPL d'origine
string cheminFichierZPL = Path.Combine(Directory.GetCurrentDirectory(), "etiquette_lot_reduit.prn");

// Vérifier si le fichier existe
if (!System.IO.File.Exists(cheminFichierZPL))
{
return Json(new { success = false, message = "Fichier ZPL introuvable." });
}

// Lire le contenu du fichier ZPL
string contenuZPL = System.IO.File.ReadAllText(cheminFichierZPL, Encoding.UTF8);
contenuZPL = ConvertirCaracteresSpeciaux(contenuZPL);

// Remplacer les placeholders (@01, @02, etc.) par des valeurs simulées
contenuZPL = contenuZPL
.Replace("@01", "CodeLotReduit123")
.Replace("@02", "Num OC 456")
.Replace("@03", "Quantite 789")
.Replace("@04", "CodePF001")
.Replace("@05", "ProduitFiniXYZ")
.Replace("@06", "Lot987654");

// Créer un nouveau fichier ZPL avec le contenu modifié
string fichierModifie = Path.Combine(Directory.GetCurrentDirectory(), "etiquette_modifiee.zpl");
System.IO.File.WriteAllText(fichierModifie, contenuZPL, Encoding.UTF8);

// Chemin UNC de l'imprimante
string cheminImprimante = @"\\FRLORBRIPRTA20P\FRLORBRIPRT8002";

// Envoyer le fichier ZPL modifié à l'imprimante via le chemin UNC
using (var fileStream = new FileStream(cheminImprimante, FileMode.OpenOrCreate, FileAccess.Write))
{
byte[] zplData = Encoding.UTF8.GetBytes(contenuZPL);
fileStream.Write(zplData, 0, zplData.Length);
}

return Json(new { success = true, message = "Étiquette imprimée avec succès via l'imprimante : " + cheminImprimante });
}
catch (Exception ex)
{
_logger.LogError($"Erreur lors de l'impression : {ex.Message}");
return Json(new { success = false, message = "Erreur lors de l'impression : " + ex.Message });
}
}

public string ConvertirCaracteresSpeciaux(string texte)
{
var replacements = new Dictionary
{
{ "é", "_82" },
{ "è", "_8A" },
{ "ê", "_90" },
{ "ë", "_91" },
{ "à", "_85" },
{ "â", "_83" },
{ "ä", "_84" },
{ "ç", "_87" },
{ "î", "_8C" },
{ "ï", "_8D" },
{ "ô", "_93" },
{ "ö", "_94" },
{ "ù", "_97" },
{ "û", "_99" },
{ "ü", "_9A" },
{ "°", "_F8" }
};

foreach (var replacement in replacements)
{
texte = texte.Replace(replacement.Key, replacement.Value);
}

return texte;
}
но безуспешно.
Есть ли у вас какие-либо решения этой проблемы? Заранее спасибо.

Подробнее здесь: https://stackoverflow.com/questions/793 ... -zd420-zpl
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»