Drucken mit Linux

Für allgemeine Fragen zur Programmierung mit PureBasic.
stevie1401
Beiträge: 659
Registriert: 19.10.2014 15:51
Kontaktdaten:

Drucken mit Linux

Beitrag von stevie1401 »

Gibt es irgendeine uralt Linux-Version und eine uralt Purebasic-Version mit der man drucken kann?
Ich muss ein Programm für Linux schreiben wo gedruckt wird. Kann gerne eine ältere Version sein, solange drucken funktioniert.
Weiß da jemand was?
Ich programmiere nur noch mit Linux.
Linux Mint 21.x
Benutzeravatar
Sicro
Beiträge: 955
Registriert: 11.08.2005 19:08
Kontaktdaten:

Re: Drucken mit Linux

Beitrag von Sicro »

Unter der aktuellen PB-Version (und sicherlich auch unter einigen älteren Versionen) kann ich ohne Probleme unter Linux drucken.
Bild
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
stevie1401
Beiträge: 659
Registriert: 19.10.2014 15:51
Kontaktdaten:

Re: Drucken mit Linux

Beitrag von stevie1401 »

Wie kommst du darauf?
Siehe Linux-Bugs.
Es ist seit Jahren (?) nicht möglich richtig mit Linux und PB zu drucken.

Verrätst du mir dann bitte den Trick?
PB kann nur mit einer Auflösung von ca. 70 DpI ca. 600x800 drucken. Da geht nix!
Ich programmiere nur noch mit Linux.
Linux Mint 21.x
Benutzeravatar
Sicro
Beiträge: 955
Registriert: 11.08.2005 19:08
Kontaktdaten:

Re: Drucken mit Linux

Beitrag von Sicro »

stevie1401 hat geschrieben:Wie kommst du darauf?
Durch einen selbst durchgeführten Test.
stevie1401 hat geschrieben:Verrätst du mir dann bitte den Trick?
VectorDrawing => PrinterVectorOutput
Das verrät dir aber auch die PB-Hilfe:
PrinterOutput()
[...]
Anmerkungen
Das Zeichnen auf dem Drucker mittels pixel-basiertem Zeichnen kann die Druckqualität verringern und für zusätzliche Komplexität sorgen, da die Drucker-Auflösung berücksichtigt werden muss. Vektor-basiertes Zeichnen mittels PrinterVectorOutput() sollte daher bevorzugt werden, da es Auflösungs-unabhängige Funktionen für hohe Druckqualität bietet.
Bild
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
stevie1401
Beiträge: 659
Registriert: 19.10.2014 15:51
Kontaktdaten:

Re: Drucken mit Linux

Beitrag von stevie1401 »

Ich habe bis dato noch keinen funktionierenden Code hinbekommen, um unter Linux zu drucken.
Kannst du mir bitte ein einfaches Beispiel aufschreiben.
Die Community und ich wären dir sehr dankbar!
Ich kenne nur das Druckerbeispiel und mit dem kann ich nichts anfangen.
Ich programmiere nur noch mit Linux.
Linux Mint 21.x
Benutzeravatar
Sicro
Beiträge: 955
Registriert: 11.08.2005 19:08
Kontaktdaten:

Re: Drucken mit Linux

Beitrag von Sicro »

Nachfolgend ein Beispiel-Code. Ich habe noch ein paar Wrapper eingebaut, die die Vector-Funktionen wie 2DDrawing-Funktionen aufrufen lassen.

Code: Alles auswählen

CompilerIf #PB_Compiler_OS = #PB_OS_Windows
  Path_Slash$ = "\"
CompilerElse
  Path_Slash$ = "/"
CompilerEndIf

#Blue_Alpha  = -65536    ;RGBA(0, 0, 255, 255)
#Black_Alpha = -16777216 ;RGBA(0, 0, 0, 255)

Procedure Vector_DrawText(x.d, y.d, Text$, FrontColor=#Black_Alpha)
  MovePathCursor(x, y)
  AddPathText(Text$)
  VectorSourceColor(FrontColor)
  FillPath()
EndProcedure

Procedure Vector_DrawImage(x.d, y.d, ImageID, Alpha=255, NewWidth.d=-1.0, NewHeight.d=-1.0)
  MovePathCursor(x, y)
  If NewWidth > 0 And NewHeight > 0
    DrawVectorImage(ImageID, Alpha, NewWidth, NewHeight)
  Else
    DrawVectorImage(ImageID, Alpha)
  EndIf
EndProcedure

Procedure Vector_LineXY(x1.d, y1.d, x2.d, y2.d, LineWidth.d=1.0, Color=#Black_Alpha)
  MovePathCursor(x1, y1)
  AddPathLine(x2, y2)
  VectorSourceColor(Color)
  StrokePath(LineWidth)
EndProcedure

If PrintRequester() And StartPrinting("Test") And StartVectorDrawing(PrinterVectorOutput(#PB_Unit_Pixel))
  
  ; Text zeichnen
  If LoadFont(0, "Arial", 20)
    VectorFont(FontID(0))
    Vector_DrawText(20, 20, "Das ist ein Text.", #Blue_Alpha)
  EndIf
  
  ; Zeichne eine horizontale Linie
  Vector_LineXY(20, 200, 700, 200)
  
  ; Male noch ein Bild dazu
  If LoadImage(0, #PB_Compiler_Home + "examples" + Path_Slash$ + "sources" + Path_Slash$ +
                  "Data" + Path_Slash$ + "PureBasicLogo.bmp")
    Vector_DrawImage(20, 300, ImageID(0))
  EndIf
  
  StopVectorDrawing()
  StopPrinting()
  
  Debug "Es wird gedruckt..."
Else
  Debug "Es ist ein Fehler aufgetreten!"
EndIf
Bild
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
stevie1401
Beiträge: 659
Registriert: 19.10.2014 15:51
Kontaktdaten:

Re: Drucken mit Linux

Beitrag von stevie1401 »

Das sieht sehr gut aus! Vielen Dank!
Aber wie stelle ich nun eine DIN A4 Seite ein?
Ich brauche doch FESTE Maße, um drucken zu können. Also FESTE Seitenbreite und FESTE Seitenhöhe.

EDIT:

Ah,ich vermute, ich brauche nur auf "#PB_Unit_Millimeter" umstellen, gell?
Mal schauen wie es bei unterschiedlichen Auflösungen dann klappt bei Schrift und Bildern.
Erst einmal vielen Dank!
Ich habe mir einen Wolf abgesucht und wäre im Leben nicht auf VectorDrawing gekommen. Wie auch?
So lange das "normale" Drucken unter Linux defekt ist, hätte man DEIN Beispiel in die Hilfe aufnehmen sollen.
Ich programmiere nur noch mit Linux.
Linux Mint 21.x
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Drucken mit Linux

Beitrag von ts-soft »

stevie1401 hat geschrieben:Ich habe mir einen Wolf abgesucht und wäre im Leben nicht auf VectorDrawing gekommen. Wie auch?
So lange das "normale" Drucken unter Linux defekt ist, hätte man DEIN Beispiel in die Hilfe aufnehmen sollen.
Da ist nichts defekt, es mangelt wahrscheinlich eher an API-Kenntnissen, die erforderlich sind um ein gescheites Druckbild
zu erhalten. Aber um das ganze zu vereinfachen gibt es ja jetzt die VectrorDrawing lib.

Hinweise findet man in der Hilfe: http://www.purebasic.com/german/documen ... utput.html im Abschnitt
Anmerkungen.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
stevie1401
Beiträge: 659
Registriert: 19.10.2014 15:51
Kontaktdaten:

Re: Drucken mit Linux

Beitrag von stevie1401 »

Wieso benötige ich API Kenntnisse, wenn ich unter Linux drucken möchte?
Unter Windows und OSX benötige ich keine Vectorgrafik, da geht es einfach. Unter Linux werden die Variablen PrinterWidth() und PrinterHeight() ignoriert und es wird lediglich eine Papierbreite von ca. 600 Pixel verarbeitet. Das ist ein Bug.
Ich programmiere nur noch mit Linux.
Linux Mint 21.x
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Drucken mit Linux

Beitrag von ts-soft »

Und Windows nutzt man auch meist GDI-Drucker, während unter Linux eher professionelle Lösungen ala Postscript genutzt wird.

Unter Windows benötigt man genauso viel API wie unter Linux, für ein professionelles Druckbild!
PS: Nicht jeder Drucker kann 600 DPI und nicht jeder möchte mit 600 DPI drucken :mrgreen:

Du kannst PB mangelnde Druckerunterstützung vorwerfen, aber das gilt für alle OS und ist kein Bug.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten