Zebra Etiket Yazıcıya Resim Gönderme Sorunu

ragnorak

Altın Üye
Katılım
4 Haziran 2016
Mesajlar
202
Excel Vers. ve Dili
Excel 2021
Zebra yazıya Vba'dan ZPL türünde veri gönderiyorum. Aşağıdaki kod etiket tasarımı içindeki bir resim dosyasına ait. http://labelary.com/viewer.html adresine kopyalanınca resim dosyası görünüyor. Sabit resim dosyalarının kodlarını Vba içerisine Zebranın etiket tasarım programı (ZebraDesigner Pro) dan alarak gömebiliyorum. Sorun şu değişken bir resim alanım var ve Vba içerisine resim dosyalarını .GRF formatına çevirecek bir kod yazmam gerekiyor. https://stackoverflow.com/questions/19160981/vb-net-printing-image-to-zebra adresinde Vb.Net ile yapılmış bir örnek bulabildim ama Vba'da çalıştıramadım. Zebra yazıcıların kodlamasına hakim arkadaşlardan yardım bekliyorum.

Kod:
^XA

:~DG001.GRF,01152,012,

,:::::::::::::::::::::::J0WFC,::J0E0T01C,:::J060T01C,J0E0T01C,J0E0L010L01C,J0E0L030L01C,J0E0L010L01C,J0E0L030L01C,::J060J07F7F780I01C,J0E0I07FKF80H01C,J0E0H01FLFE0H01C,J0E0H07FMF8001C,J0E0H0OFE001C,J0E003FOFH01C,J0E007FOF801C,:J0600F7F7F7F7F7F401C,J0E01FPFE01C,:J0E03FQF01C,:J0E07FQF81C,::J0607C7F637F0F787C1C,J0E0E00F007801C00C1C,J0E0L030L01C,::J0E0L010L01C,::J060L010L01C,J0E0L010L01C,::::::J060L010L01C,J0E0L010L01C,::::::J060L01020J01C,J0E0L01020J01C,:::J0E0L01060J01C,J0E0L01040J01C,J0E0M0F80J01C,J060T01C,J0E0T01C,::::J0WFC,:J07F7F7F7F7F7F7F7F7C,^XA

^FT288,416^XG001.GRF,1,1^FS
^XZ
 

ragnorak

Altın Üye
Katılım
4 Haziran 2016
Mesajlar
202
Excel Vers. ve Dili
Excel 2021
Kod:
^XA

^FO0,320^GFA,01152,01152,00012,:Z64:eJxjYBgF+MF/KPiDh/0AqlaGSHYCHjUCSGwDIsSxsYHm19dXwMTZga5sgLLlgewHUHY9kP0Dygb55B+EzQz2FoTNDmY3oLMT+OtBwAEsLg8Wf4DBtgezP2Cw68HsH/jYCTX1yfX8FTVg8Qf8DBWMB3iI9Tt6WGFjJxChhhI2XcxXQBInlZ2AxHZAsPkbCKdPUti48ks9FNQwAAB97Mjy:3014

^XZ
Program resim dosyaları .GRF yapmadan yukarıdaki gibi de kodluyor. Aynı sonucu veriyor ama resmi hangi sistemde koda çevirdiğini anlayamadım. .GRF tipi daha mantıklı geldi
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,270
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Program resim dosyaları .GRF yapmadan yukarıdaki gibi de kodluyor. Aynı sonucu veriyor ama resmi hangi sistemde koda çevirdiğini anlayamadım. .GRF tipi daha mantıklı geldi

Gördüğüm kadarıyla, "Z64" ile başlayan kısım, aslında Base64 gibi encode edilmiş resim dosyasının kendisi.

İnternetten gördüğüm kadarıyla, Zebra yazıcıya gönderirken script yazarak da direkt olarak dosya adıyla gönderebiliyorsunuz.

.
 
Son düzenleme:

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,270
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Demek istediğim şuydu; "b64" gibi encode edilmiş..... Tam olarak b64 değil.

.
 

ragnorak

Altın Üye
Katılım
4 Haziran 2016
Mesajlar
202
Excel Vers. ve Dili
Excel 2021
Tecrübe etmiş olduk Haluk Hocam :)
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,225
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
C# veya Vb.NET ile üretilen çözümlerin işe yaradığını belirtmişler....

O metotları klasik VB (VBA) olarak yazabilmek için hem algoritmayı anlamak, hem de klasik VB' nin kabiliyetini aştığı için Win32 API fonksiyonları da kullanmak gerekiyor.

Bence o kodları Visual Studio ile ActiveX dll olarak derleyerek VBA içersinden çağırmak daha kolay görünüyor.
 

ragnorak

Altın Üye
Katılım
4 Haziran 2016
Mesajlar
202
Excel Vers. ve Dili
Excel 2021
Bence o kodları Visual Studio ile ActiveX dll olarak derleyerek VBA içersinden çağırmak daha kolay görünüyor.
Kolay olmasını beklemiyordum ama bu nedir Zeki hocam :rolleyes: Sadece print edebilmek için bile aşağıdaki gibi API kullanmışlar
Kod:
Private Type DOCINFO
pDocName As String
pOutputFile As String
pDatatype As String
End Type

Private Declare Function ClosePrinter Lib "winspool.drv" (ByVal _
hPrinter As Long) As Long
Private Declare Function EndDocPrinter Lib "winspool.drv" (ByVal _
hPrinter As Long) As Long
Private Declare Function EndPagePrinter Lib "winspool.drv" (ByVal _
hPrinter As Long) As Long
Private Declare Function OpenPrinter Lib "winspool.drv" Alias _
"OpenPrinterA" (ByVal pPrinterName As String, phPrinter As Long, _
ByVal pDefault As Long) As Long
Private Declare Function StartDocPrinter Lib "winspool.drv" Alias _
"StartDocPrinterA" (ByVal hPrinter As Long, ByVal Level As Long, _
pDocInfo As DOCINFO) As Long
Private Declare Function StartPagePrinter Lib "winspool.drv" (ByVal _
hPrinter As Long) As Long
Private Declare Function WritePrinter Lib "winspool.drv" (ByVal _
hPrinter As Long, pBuf As Any, ByVal cdBuf As Long, _
pcWritten As Long) As Long

Dim lhPrinter As Long
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,225
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
Manuel yazdırma kodları bu. Yalnız eksik yapıştırdınız. Olmazsa dll olarak ekleyeyim buraya.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,225
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
Ekteki dll'i, istediğiniz lokasyona attıktan sonra (d: sürücüsü tavsiyem) aşağıdaki örnek komut satırındaki yolları da dzüenlediktan sonra yönetici olarak başlatacağınız dos penceresine yapıştırarak Enter' layın.

Late bind ile örnek:
C#:
debug.print createobject("zebra.printer").CreateGRF("d:\falanfilan.[jpg|bmp]")
32 bit excel komut satırı:
PHP:
cd %windir%\Microsoft.NET\Framework\v4.0.30319
regasm /codebase "d:\zebra.dll" /tlb:"d:\zebra32.tlb"
64bit excel komut satırı:
PHP:
cd %windir%\Microsoft.NET\Framework64\v4.0.30319
regasm /codebase "d:\zebra.dll" /tlb:"d:\zebra64.tlb"
.
 

Ekli dosyalar

ragnorak

Altın Üye
Katılım
4 Haziran 2016
Mesajlar
202
Excel Vers. ve Dili
Excel 2021
Hocam elinize emeğini sağlık, beni yine bir sorundan kurtardınız. Çok güzel çalışıyor. Teşekkür ederim.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,225
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
Geri dönüş için de ben teşekkür ederim.
 
Üst