This commit is contained in:
devdesk 2023-06-11 12:20:57 +03:00
parent 0dc0b7dc9b
commit 15a2e4d070
5 changed files with 115 additions and 6 deletions

1
.gitignore vendored
View File

@ -160,3 +160,4 @@ cython_debug/
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/
labels/

View File

@ -2,12 +2,56 @@
fancy name, QL-570 text formater
using gpt i got a shell script and then a python one. the python tries to detect letter width and maximise it to fit the label printer constraints (62mm width)
TDLR
`sudo brother_ql -b pyusb --model QL-570 -p usb://0x04f9:0x2028/000M12345678 print -l 62 logo.png`
TODO:
### TODO
- use as printer
- fix missing font defentions fail to take into account letter width
- works, but cant detect the length of text, will output a set (page?) length
- fix missing font defentions
- fail to take into account letter width
- telegram bot (!)
## CLI
`sudo brother_ql -b pyusb --model QL-570 -p usb://0x04f9:0x2028/000M12345678 print -l 62 logo.png`
## python
python tries to detect letter width and maximise it to fit the label printer constraints (62mm width)
`python thermatext.py "label to print"`
## inkscape
[gptgist](https://gist.github.com/5shekel/98cc4898a1a8c7a5a1b305acc01d4326)
inskcape user extension path
`/home/${USER}/.config/inkscape/extensions`
symbolic link the dir fro here to the inkscape extension
`ln -s /home/${USER}/yair/thermatext/inkscape /home/${USER}/.config/inkscape/extensions/thermatext`
then check
```bash
find ~/.config/inkscape/ -type l
```
takes from the [inkscape-silhouette](https://github.com/fablabnbg/inkscape-silhouette) extension, as in, how to install.
```bash
$ git clone https://github.com/fablabnbg/inkscape-silhouette
Cloning into 'inkscape-silhouette'...
remote: Enumerating objects: 2764, done.
remote: Counting objects: 100% (795/795), done.
remote: Compressing objects: 100% (364/364), done.
remote: Total 2764 (delta 483), reused 657 (delta 416), pack-reused 1969
Receiving objects: 100% (2764/2764), 8.53 MiB | 3.64 MiB/s, done.
Resolving deltas: 100% (1786/1786), done.
$ cd inkscape-silhouette/
$ make install-local
mkdir -p locale
mkdir -p /home/devdesk/.config/inkscape/extensions
cp -r silhouette /home/devdesk/.config/inkscape/extensions
install -m 755 *silhouette*.py /home/devdesk/.config/inkscape/extensions
install -m 644 *.inx /home/devdesk/.config/inkscape/extensions
cp -r locale /home/devdesk/.config/inkscape/extensions
mkdir -p /home/devdesk/.config/inkscape/templates
install -m 644 templates/*.svg /home/devdesk/.config/inkscape/templates
```

2
inkscape/print.sh Normal file
View File

@ -0,0 +1,2 @@
#!/bin/bash
sudo brother_ql -b pyusb --model QL-570 -p usb://0x04f9:0x2028/000M6Z401370 print -l 62 ~/text285.png

13
inkscape/thermo.inx Normal file
View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>therma</_name>
<id>org.inkscape.effect.exportandrunscript</id>
<dependency type="executable" location="extensions">thermatext/thermo.py</dependency>
<effect>
<object-type>all</object-type>
</effect>
<script>
<command reldir="extensions" interpreter="python">thermatext/thermo.py</command>
</script>
<category>Fx</category>
</inkscape-extension>

49
inkscape/thermo.py Normal file
View File

@ -0,0 +1,49 @@
#!/usr/bin/env python3
import inkex
import os
import subprocess
class ExportAndRunScript(inkex.EffectExtension):
def effect(self):
# Define the export file path
png_file_path = "~/yair/exported.png"
# Get the current selection
selection = self.svg.selected
# If there's no selection, show an error and exit
if not selection:
inkex.dialogs.errormsg("No selection to export.")
return
# Export the selection to PNG
self.export_selection_to_png(selection, png_file_path)
# Run the bash script on the exported PNG
self.run_script_on_png(png_file_path)
def export_selection_to_png(self, selection, png_file_path):
# Create a command that calls Inkscape's command line interface to export the selection to a PNG
command = ["inkscape", "--export-area-drawing", "--export-dpi=96", "--export-background-opacity=0", "-o", "{}".format(png_file_path)]
# Add the IDs of the selected items to the command
for id, item in selection.items():
command.append("--export-id={}".format(id))
# Run the command
subprocess.check_call(command)
def run_script_on_png(self, png_file_path):
# Define the path to your bash script
bash_script_path = "print.sh"
# Create a command that calls the bash script with the PNG as an argument
command = ["bash", bash_script_path, png_file_path]
# Run the command
subprocess.check_call(command)
if __name__ == "__main__":
ExportAndRunScript().run()