Hur åstadkomma radbrytning i en dymo label fil med python?

Permalänk
Medlem

Hur åstadkomma radbrytning i en dymo label fil med python?

Jag har lyckats få mitt pythonprogram att skriba ut på en dymo labelwriter 450 etikettskrivare, dock så blir jag tokig på hur jag ska få den göra en radbrytning.

Såhär ser labelfilen ut:

<?xml version="1.0" encoding="utf-8"?> <DieCutLabel Version="8.0" Units="twips"> <PaperOrientation>Landscape</PaperOrientation> <Id>LargeAddress</Id> <PaperName>30321 Large Address</PaperName> <DrawCommands> <RoundRectangle X="0" Y="0" Width="2025" Height="5020" Rx="270" Ry="270" /> </DrawCommands> <ObjectInfo> <TextObject> <Name>portokod1</Name> <ForeColor Alpha="255" Red="0" Green="0" Blue="0" /> <BackColor Alpha="0" Red="255" Green="255" Blue="255" /> <LinkedObjectName></LinkedObjectName> <Rotation>Rotation0</Rotation> <IsMirrored>False</IsMirrored> <IsVariable>False</IsVariable> <HorizontalAlignment>Left</HorizontalAlignment> <VerticalAlignment>Top</VerticalAlignment> <TextFitMode>ShrinkToFit</TextFitMode> <UseFullFontHeight>True</UseFullFontHeight> <Verticalized>False</Verticalized> <StyledText> <Element> <String>A A A A A A A A A A A A</String> <Attributes> <Font Family="Arial" Size="72" Bold="False" Italic="False" Underline="False" Strikeout="False" /> <ForeColor Alpha="255" Red="0" Green="0" Blue="0" /> </Attributes> </Element> </StyledText> </TextObject> <Bounds X="322" Y="177.348022460938" Width="2147.86181640625" Height="1762.65197753906" /> </ObjectInfo> <ObjectInfo> <TextObject> <Name>portokod2</Name> <ForeColor Alpha="255" Red="0" Green="0" Blue="0" /> <BackColor Alpha="0" Red="255" Green="255" Blue="255" /> <LinkedObjectName></LinkedObjectName> <Rotation>Rotation0</Rotation> <IsMirrored>False</IsMirrored> <IsVariable>False</IsVariable> <HorizontalAlignment>Left</HorizontalAlignment> <VerticalAlignment>Top</VerticalAlignment> <TextFitMode>ShrinkToFit</TextFitMode> <UseFullFontHeight>True</UseFullFontHeight> <Verticalized>False</Verticalized> <StyledText> <Element> <String>A A A A A A A A A A A A</String> <Attributes> <Font Family="Arial" Size="72" Bold="False" Italic="False" Underline="False" Strikeout="False" /> <ForeColor Alpha="255" Red="0" Green="0" Blue="0" /> </Attributes> </Element> </StyledText> </TextObject> <Bounds X="2785.75" Y="162.348022460938" Width="2147.86181640625" Height="1762.65197753906" /> </ObjectInfo> </DieCutLabel>

Såhär ser python koden ut:

from win32com.client import Dispatch portokod = ('QWERTKLUXSADD') barcode_path = ('porto.label') my_printer = 'DYMO LabelWriter 450' printer_com = Dispatch('Dymo.DymoAddIn') printer_com.SelectPrinter(my_printer) printer_com.Open(barcode_path) printer_label = Dispatch('Dymo.DymoLabels') printer_label.SetField('portokod1',portokod) printer_com.StartPrintJob() printer_com.Print(1, False) printer_com.EndPrintJob()

Det är alltså det som står i variablen portokod som ska skrivas ut på 3 stycken rader, början med QWER osv... i fältet i xml filen som heter portokod1.
Jag har försökt med \n men den verkar inte förstå det, någon som har något förslag?

Permalänk
Skrivet av Tallrot:

Jag har lyckats få mitt pythonprogram att skriba ut på en dymo labelwriter 450 etikettskrivare, dock så blir jag tokig på hur jag ska få den göra en radbrytning.

Såhär ser labelfilen ut:

<?xml version="1.0" encoding="utf-8"?> <DieCutLabel Version="8.0" Units="twips"> <PaperOrientation>Landscape</PaperOrientation> <Id>LargeAddress</Id> <PaperName>30321 Large Address</PaperName> <DrawCommands> <RoundRectangle X="0" Y="0" Width="2025" Height="5020" Rx="270" Ry="270" /> </DrawCommands> <ObjectInfo> <TextObject> <Name>portokod1</Name> <ForeColor Alpha="255" Red="0" Green="0" Blue="0" /> <BackColor Alpha="0" Red="255" Green="255" Blue="255" /> <LinkedObjectName></LinkedObjectName> <Rotation>Rotation0</Rotation> <IsMirrored>False</IsMirrored> <IsVariable>False</IsVariable> <HorizontalAlignment>Left</HorizontalAlignment> <VerticalAlignment>Top</VerticalAlignment> <TextFitMode>ShrinkToFit</TextFitMode> <UseFullFontHeight>True</UseFullFontHeight> <Verticalized>False</Verticalized> <StyledText> <Element> <String>A A A A A A A A A A A A</String> <Attributes> <Font Family="Arial" Size="72" Bold="False" Italic="False" Underline="False" Strikeout="False" /> <ForeColor Alpha="255" Red="0" Green="0" Blue="0" /> </Attributes> </Element> </StyledText> </TextObject> <Bounds X="322" Y="177.348022460938" Width="2147.86181640625" Height="1762.65197753906" /> </ObjectInfo> <ObjectInfo> <TextObject> <Name>portokod2</Name> <ForeColor Alpha="255" Red="0" Green="0" Blue="0" /> <BackColor Alpha="0" Red="255" Green="255" Blue="255" /> <LinkedObjectName></LinkedObjectName> <Rotation>Rotation0</Rotation> <IsMirrored>False</IsMirrored> <IsVariable>False</IsVariable> <HorizontalAlignment>Left</HorizontalAlignment> <VerticalAlignment>Top</VerticalAlignment> <TextFitMode>ShrinkToFit</TextFitMode> <UseFullFontHeight>True</UseFullFontHeight> <Verticalized>False</Verticalized> <StyledText> <Element> <String>A A A A A A A A A A A A</String> <Attributes> <Font Family="Arial" Size="72" Bold="False" Italic="False" Underline="False" Strikeout="False" /> <ForeColor Alpha="255" Red="0" Green="0" Blue="0" /> </Attributes> </Element> </StyledText> </TextObject> <Bounds X="2785.75" Y="162.348022460938" Width="2147.86181640625" Height="1762.65197753906" /> </ObjectInfo> </DieCutLabel>

Såhär ser python koden ut:

from win32com.client import Dispatch portokod = ('QWERTKLUXSADD') barcode_path = ('porto.label') my_printer = 'DYMO LabelWriter 450' printer_com = Dispatch('Dymo.DymoAddIn') printer_com.SelectPrinter(my_printer) printer_com.Open(barcode_path) printer_label = Dispatch('Dymo.DymoLabels') printer_label.SetField('portokod1',portokod) printer_com.StartPrintJob() printer_com.Print(1, False) printer_com.EndPrintJob()

Det är alltså det som står i variablen portokod som ska skrivas ut på 3 stycken rader, början med QWER osv... i fältet i xml filen som heter portokod1.
Jag har försökt med \n men den verkar inte förstå det, någon som har något förslag?

Tjo!

Har du provat med "\r\n" utöver "\n"? Dvs., "portokod = ('QWERT\r\nKLUXS\r\nADD')"

Har du provat att använda flera TextObjects på rad där varje sådan då representerar en del av din text?

Har du kikat här: https://www.matteomattei.com/use-python-to-print-labels-with-... ?

Denna person verkar använda setField() två gånger, dock inte sett något visuellt resultat av hur det ser ut då.

Mvh,
WKF.

Visa signatur

(V)ulnerabilities
(I)n
(B)asically
(E)verything
Programming

Permalänk
Medlem

Har skrivaren stöd för det?

Jag har fått lov att ta en ny text på en ny rad på min Zebra GX420t.
D.v.s. nån automatisk radbrytning kan jag glömma

Har iofs inte gått på djupet med det, kanske går.

Men generellt sett har bara 1 text på 1 rad.

Visa signatur

5700x3D | RTX 3080 | 2 TB M.2 | 32 GB RAM

Permalänk
Medlem
Skrivet av WebbkodsFrilansaren:

Tjo!

Har du provat med "\r\n" utöver "\n"? Dvs., "portokod = ('QWERT\r\nKLUXS\r\nADD')"

Har du provat att använda flera TextObjects på rad där varje sådan då representerar en del av din text?

Har du kikat här: https://www.matteomattei.com/use-python-to-print-labels-with-... ?

Denna person verkar använda setField() två gånger, dock inte sett något visuellt resultat av hur det ser ut då.

Mvh,
WKF.

Ja det fick den att göra en radbrytning, tusen tack för snabb hjälp!

Permalänk
Skrivet av Tallrot:

Ja det fick den att göra en radbrytning, tusen tack för snabb hjälp!

Hehe, då måste jag själv tacka Gemini 2.0 Thinking Version för den gav förslag på vad som kunde provas.🫡

🥚Trevlig Påsk!🥚

Mvh,
WKF.

Visa signatur

(V)ulnerabilities
(I)n
(B)asically
(E)verything
Programming

Permalänk
Medlem
Skrivet av WebbkodsFrilansaren:

Hehe, då måste jag själv tacka Gemini 2.0 Thinking Version för den gav förslag på vad som kunde provas.🫡

🥚Trevlig Påsk!🥚

Mvh,
WKF.

Ah, missade det men jag tackar er bägge då Trevlig påsk på dig också!