Erster Commit: nativer Linux-Port aus macOS-Bytecode
Läuft die Voice Acoustic VA-Remotecontrol (AllDSP AllControl) nativ unter Linux auf echtem wxGTK 3.0 — ohne Wine und ohne dekompilierten App-Code. Ausgeführt wird das unveränderte Python-2.7-Bytecode aus dem macOS-.app; C-Extensions (wxGTK/numpy/ scipy/PortAudio) kommen nativ aus Debian stretch. Enthält: va/ (Original-.pyc + pure-Python-Libs + Assets + launch.py mit den drei Linux-Fixes), Dockerfile/run.sh/entrypoint.sh, reference/ (dekompilierter Quellcode zum Debuggen) und README/STATUS. img.cache (378 MB, regenerierbar) ist per .gitignore ausgeschlossen. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
from fpdf import *
|
||||
import re
|
||||
|
||||
class PDF(FPDF):
|
||||
def __init__(self, orientation='P',unit='mm',format='A4'):
|
||||
#Call parent constructor
|
||||
FPDF.__init__(self,orientation,unit,format)
|
||||
#Initialization
|
||||
self.b=0
|
||||
self.i=0
|
||||
self.u=0
|
||||
self.href=''
|
||||
self.page_links={}
|
||||
|
||||
def write_html(self, html):
|
||||
#HTML parser
|
||||
html=html.replace("\n",' ')
|
||||
a=re.split('<(.*?)>',html)
|
||||
for i,e in enumerate(a):
|
||||
if(i%2==0):
|
||||
#Text
|
||||
if(self.href):
|
||||
self.put_link(self.href,e)
|
||||
else:
|
||||
self.write(5,e)
|
||||
else:
|
||||
#Tag
|
||||
if(e[0]=='/'):
|
||||
self.close_tag(e[1:].upper())
|
||||
else:
|
||||
#Extract attributes
|
||||
attr={}
|
||||
a2=e.split(' ')
|
||||
tag=a2.pop(0).upper()
|
||||
for v in a2:
|
||||
a3 = re.findall('''^([^=]*)=["']?([^"']*)["']?''',v)[0]
|
||||
if a3:
|
||||
attr[a3[0].upper()]=a3[1]
|
||||
self.open_tag(tag,attr)
|
||||
|
||||
def open_tag(self, tag,attr):
|
||||
#Opening tag
|
||||
if(tag=='B' or tag=='I' or tag=='U'):
|
||||
self.set_style(tag,1)
|
||||
if(tag=='A'):
|
||||
self.href=attr['HREF']
|
||||
if(tag=='BR'):
|
||||
self.ln(5)
|
||||
|
||||
def close_tag(self, tag):
|
||||
#Closing tag
|
||||
if(tag=='B' or tag=='I' or tag=='U'):
|
||||
self.set_style(tag,0)
|
||||
if(tag=='A'):
|
||||
self.href=''
|
||||
|
||||
def set_style(self, tag,enable):
|
||||
#Modify style and select corresponding font
|
||||
t = getattr(self,tag.lower())
|
||||
if enable:
|
||||
t+=1
|
||||
else:
|
||||
t+=-1
|
||||
setattr(self,tag.lower(),t)
|
||||
style=''
|
||||
for s in ('B','I','U'):
|
||||
if(getattr(self,s.lower())>0):
|
||||
style+=s
|
||||
self.set_font('',style)
|
||||
|
||||
def put_link(self, url, txt):
|
||||
#Put a hyperlink
|
||||
self.set_text_color(0,0,255)
|
||||
self.set_style('U',1)
|
||||
self.write(5,txt,url)
|
||||
self.set_style('U',0)
|
||||
self.set_text_color(0)
|
||||
|
||||
html="""You can now easily print text mixing different
|
||||
styles : <B>bold</B>, <I>italic</I>, <U>underlined</U>, or
|
||||
<B><I><U>all at once</U></I></B>!<BR>You can also insert links
|
||||
on text, such as <A HREF="http:#www.fpdf.org">www.fpdf.org</A>,
|
||||
or on an image: click on the logo."""
|
||||
|
||||
pdf=PDF()
|
||||
#First page
|
||||
pdf.add_page()
|
||||
pdf.set_font('Arial','',20)
|
||||
pdf.write(5,'To find out what\'s new in self tutorial, click ')
|
||||
pdf.set_font('','U')
|
||||
link=pdf.add_link()
|
||||
pdf.write(5,'here',link)
|
||||
pdf.set_font('')
|
||||
#Second page
|
||||
pdf.add_page()
|
||||
pdf.set_link(link)
|
||||
pdf.image('logo.png',10,10,30,0,'','http:#www.fpdf.org')
|
||||
pdf.set_left_margin(45)
|
||||
pdf.set_font_size(14)
|
||||
pdf.write_html(html)
|
||||
pdf.output('tuto6.pdf','F')
|
||||
Reference in New Issue
Block a user