🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

PDF in Writer erstellen mittels einem Makro?

Alles zur Programmierung im LibreOffice.
mikele
* LO-Experte *
Beiträge: 1930
Registriert: Mo 1. Aug 2011, 20:51

Re: PDF in Writer erstellen mittels einem Makro?

Beitrag von mikele » Sa 28. Nov 2020, 13:12

Hallo,
Was meinst du mit "sDateiname"?
???
Es ist eine Variable.
Gruß,
mikele

Strunz
Beiträge: 99
Registriert: Fr 9. Sep 2011, 19:51

Re: PDF in Writer erstellen mittels einem Makro?

Beitrag von Strunz » Sa 28. Nov 2020, 19:26

Hier ist mein Code:

Code: Alles auswählen

Sub druckenpdf

Dim odoc As Object
Dim formular As Object
Dim args(0) As New com.sun.star.beans.PropertyValue

args(0).Name = "Filtername"
args(0).Value = "writer_pdf_Export"

odoc = ThisComponent

formular = odoc.DrawPage.Forms.getByName("Formular")

formular.storeToURL("file:///Users/strunz/Desktop/test.pdf", args ())

Jetzt kommt folgende Fehlermeldung:

Eigenschaft oder Methode nicht gefunden (formular.storeToURL usw.)

mikele
* LO-Experte *
Beiträge: 1930
Registriert: Mo 1. Aug 2011, 20:51

Re: PDF in Writer erstellen mittels einem Makro?

Beitrag von mikele » Mo 30. Nov 2020, 20:42

Hallo,
ursprünglich hieß es, in der Codezeile

Code: Alles auswählen

odoc.storeToURL("file:///Users/strunz/Desktop/test.pdf", args ())
Nach oben
käme eine Fehlermeldung.
Nach verschiedenen Vorschlägen eine Lösung zu finden, obwohl die Fehlermeldung sehr untypisch wäre, lautet die Codezeile nun auf einmal

Code: Alles auswählen

formular.storeToURL("file:///Users/strunz/Desktop/test.pdf", args ())
Diese ist offensichtlich falsch und führt zu der genannten Fehlermeldung. Die ursprüngliche Codezeile ist fehlerfrei. :evil:
Gruß,
mikele

gogo
* LO-Experte *
Beiträge: 1081
Registriert: Sa 5. Feb 2011, 19:07

Re: PDF in Writer erstellen mittels einem Makro?

Beitrag von gogo » Di 1. Dez 2020, 11:24

Strunz hat geschrieben:
Fr 27. Nov 2020, 16:21
Hallo,

ich brauche ein Makro mit dem ich ein Dokument (Writer-Formular) in
ein "PDF"-Formular konvertieren kann?

Mfg
Strunz
sry -ich glaube wir haben da etwas überlesen oder falsch verstanden "Dokument (Writer-Formular)" ist missverständlich. Ein Dokument kannst Du mit .storetoUrl() speichern, ein Formular innerhalb des Dokuments hat diese Methode nicht.

Daher stellt sich jetzt die Frage: Möchtest Du jetzt das ganze Dokument neu abspeichern, oder nur die Daten, die in diesem Formular sind als eigene Datei speichern?
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

Strunz
Beiträge: 99
Registriert: Fr 9. Sep 2011, 19:51

Re: PDF in Writer erstellen mittels einem Makro?

Beitrag von Strunz » Di 1. Dez 2020, 18:53

gogo hat geschrieben:
Di 1. Dez 2020, 11:24
Strunz hat geschrieben:
Fr 27. Nov 2020, 16:21
Hallo,

ich brauche ein Makro mit dem ich ein Dokument (Writer-Formular) in
ein "PDF"-Formular konvertieren kann?

Mfg
Strunz
sry -ich glaube wir haben da etwas überlesen oder falsch verstanden "Dokument (Writer-Formular)" ist missverständlich. Ein Dokument kannst Du mit .storetoUrl() speichern, ein Formular innerhalb des Dokuments hat diese Methode nicht.

Daher stellt sich jetzt die Frage: Möchtest Du jetzt das ganze Dokument neu abspeichern, oder nur die Daten, die in diesem Formular sind als eigene Datei speichern?
Ich möchte nur die Daten, die in diesem Formular sind als eigene Datei speichern!

craig
* LO-Experte *
Beiträge: 1137
Registriert: Do 21. Apr 2016, 11:42

Re: PDF in Writer erstellen mittels einem Makro?

Beitrag von craig » Di 1. Dez 2020, 19:44

Hallo,

ein Hinweis:

Dieses führt auf Windows-Systemen zu einem Explorerfehler:
file:///Users/

richtig ist:
file:///C:/Users/

Statt C:/ kann auch ein anderer Laufwerksbuchstabe korrekt sein.
Gruß

Craig

Nie die Sicherungskopie vergessen!

════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 7.4.5.1 (x64) • AOO 4.1.8

mikele
* LO-Experte *
Beiträge: 1930
Registriert: Mo 1. Aug 2011, 20:51

Re: PDF in Writer erstellen mittels einem Makro?

Beitrag von mikele » Di 1. Dez 2020, 20:59

Hallo craig,

Strunz schrieb, dass der Fehler unter Mac OS X auftaucht.
Allerdings variieren die Fehlermeldungen:
ursprünglich sollte es
Eigenschaft oder Methode nicht gefunden "storeToURL"
gewesen sein
dann
Die Datei konnte nicht geöffnet werden
Dazu geht es um unterschiedlichen Code.
Ich werde daraus nicht schlau.
Gruß,
mikele

craig
* LO-Experte *
Beiträge: 1137
Registriert: Do 21. Apr 2016, 11:42

Re: PDF in Writer erstellen mittels einem Makro?

Beitrag von craig » Di 1. Dez 2020, 22:04

Hallo mikele
mikele hat geschrieben:Mac OS X
Sorry, hatte ich nicht gelesen.
Wie der Pfad, wohl eher die URL bei einem Mac aussieht weiß ich nicht.
Ich denke ähnlich wie unter Unix/ Linux.
Dabei wird es wichtig sein die Zugriffsrechte zu prüfen, usw.
Und ich würde mich freuen wenn sich Strunz hierzu äußert, damit ich auch etwas lernen kann... ;)


Es stellen sich auf jeden Fall mehrere Fragen:
  1. Zeichne ein Textfeld und ein Listenfeld in ein Writerdokument.
    Kontextmenü → Formulareigenschaften → Register "Allgemein"´→ Name = Formular
    Dies bei beiden Steuerelementen.
  2. Code: Alles auswählen

    REM  *****  BASIC  *****
    
    Sub Main
    Dim oDoc as Object
    Dim oForm1 as Object
    oDoc = ThisComponent
    'xray odoc
    oForm1 = oDoc.DrawPage.Forms.getByName("Formular")
    Print oForm1.count
    
    xray oForm1.ControlModels
    
    End Sub
    
    Somit ist "oForm1" die Referenz für beide Steuerelemente.
  3. Dies kann nicht funktionieren, weil

    Code: Alles auswählen

    'oForm1.storeToURL("file:///Users/strunz/Desktop/test.pdf", args ())
    1. kein explizites Element angesprochen wird
    2. und es kann nicht funktionieren, weil es weder eine Eigenschaft, noch eine Methode
      "oForm1.storeToURL" gibt.

      Code: Alles auswählen

      xray oDoc.DrawPage.Forms.getByName("Formular")
  4. Selbst wenn man sich nun explizit das richtige Steuerelement greift (z.B. Textfeld1),
    gibt es keine Eigenschaft oderMethode storeToURL
    Es bliebe nur den String des Steuerelements auszulesen, diesen in ein Dokument schreiben und nun den Export starten.
@Strunz
Ein kleiner Verbesserungsvorschlag:

Code: Alles auswählen

formular = odoc.DrawPage.Forms.getByName("Formular")
Ich habe mehrfach gelesen , dass man es vermeiden sollte, eine Variable 1:1 nach einem bestehenden
Objekt, einer Methode oder Eigenschaft, usw. zu benennen, da dies u.U. zu Konflikten führen kann.

Es kann zwar jeder programmieren wie er möchte, aber gerade am
Anfang ist es sinnvoll sich an diese Konventionen zu halten.
https://wiki.openoffice.org/wiki/DE/Mak ... #Variablen

Verbesserungsvorschlag:

Code: Alles auswählen

Dim oForm1 as Object
oForm1 = odoc.DrawPage.Forms.getByName("Formular")
oder so:

Code: Alles auswählen

Dim oFormular as Object
oFormular = odoc.DrawPage.Forms.getByName("Formular")
Gruß

Craig

Nie die Sicherungskopie vergessen!

════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 7.4.5.1 (x64) • AOO 4.1.8

gogo
* LO-Experte *
Beiträge: 1081
Registriert: Sa 5. Feb 2011, 19:07

Re: PDF in Writer erstellen mittels einem Makro?

Beitrag von gogo » Di 1. Dez 2020, 23:09

Strunz hat geschrieben:
Di 1. Dez 2020, 18:53
... Ich möchte nur die Daten, die in diesem Formular sind als eigene Datei speichern!...
2 Fragen noch:
1. als lesbares schönes pdf, oder nur die Rohdaten
2. sollen in der Datei Daten eines Datensatzes vorkommen oder kommen mehrere Datensätze zusammen? Beispiel: Adresse im Briefkopf = "Daten eines Datensatzes", die Artikel eines Einkaufs = "mehrere Datensätze"
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten