Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  pdftk commandline option

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  pdftk commandline option (178 / mal gelesen)
Bernd P
Ehrenmitglied V.I.P. h.c.
cook-general



Sehen Sie sich das Profil von Bernd P an!   Senden Sie eine Private Message an Bernd P  Schreiben Sie einen Gästebucheintrag für Bernd P

Beiträge: 3403
Registriert: 07.06.2001

W10-64bit, AMD Ryzen 7 3700X,32GB RAM, Sapphire Pulse Radeon RX 570 8G G5, Canon TX-3000 MFP, Maus Cherry MW4500, Sub:Infrastructure Design Suite, Office 365

erstellt am: 07. Feb. 2024 09:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

servus,

Ich versuch PDFTK.exe über Lisp zu steuern. Ziel ist zwei PDF in Abhängigkeit des Layoutnamens zu verbinden. LAST und TEMP1 sollen in PLANLAUF verbunden werden.
Und jetzt häng ich wie ich den Befehl ausführe. Startapp und Shell hab ich versucht und scheitere. Hat jemand eine Tipp für mich?

"C:\Program Files (x86)\PDFtk\bin\pdftk.exe" "C:\Users\pongratz\Documents\PDF-Entwuerfe\200.000 Last.PDF" "C:\Users\pongratz\Documents\PDF-Entwuerfe\200.000TEMP.PDF" cat output "C:\Users\pongratz\Documents\PDF-Entwuerfe\200.000.PDF"

Code:
(defun c:PL_mergePDF (/ PLANLAUF)
  (vl-load-com)
  (setq PLANLAUF (strcat (getvar "dwgprefix") "PDF-Entwuerfe\\")) (VL-MKDIR PLANLAUF) ;Verzeichnis und Erstellen
  (setq PLANLAUF (strcat PLANLAUF (getvar "ctab")));Layoutname
  (setq TEMP (strcat PLANLAUF "TEMP.PDF"))
  (setq LAST (strcat PLANLAUF " Last.PDF")) 
  (setq PLANLAUF (strcat PLANLAUF ".PDF")) 
  (setq PLANLAUF1 (strcat PLANLAUF ))
  (setq TEMP1 (strcat TEMP ))
  (command "_.Shell" (strcat (chr 34) "C:\\Program Files (x86)\\PDFtk\\bin\\pdftk.exe" (chr 34) " " (chr 34)LAST(chr 34) " " (chr 34)TEMP(chr 34) " cat output " (chr 34)PDF1(chr 34)))
)

Lösung derzeit, ich schreibs in eine Bat und starte sie. Direkt wäre es halt schöner.


------------------
<----- Bitte Systeminfo eintragen, warum siehst du hier. Schöne Grüsse aus der Steiermark  Bernd P.

[Diese Nachricht wurde von Bernd P am 07. Feb. 2024 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

archtools
Mitglied



Sehen Sie sich das Profil von archtools an!   Senden Sie eine Private Message an archtools  Schreiben Sie einen Gästebucheintrag für archtools

Beiträge: 909
Registriert: 09.10.2004

Entwickler für AutoCAD, BricsCAD u.a., alle Systeme

erstellt am: 07. Feb. 2024 10:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Bernd P 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Bernd P:
servus,

Ich versuch PDFTK.exe über Lisp zu steuern. Ziel ist zwei PDF in Abhängigkeit des Layoutnamens zu verbinden. LAST und TEMP1 sollen in PLANLAUF verbunden werden.
Und jetzt häng ich wie ich den Befehl ausführe. Startapp und Shell hab ich versucht und scheitere. Hat jemand eine Tipp für mich?

"C:\Program Files (x86)\PDFtk\bin\pdftk.exe" "C:\Users\pongratz\Documents\PDF-Entwuerfe\200.000 Last.PDF" "C:\Users\pongratz\Documents\PDF-Entwuerfe\200.000TEMP.PDF" cat output "C:\Users\pongratz\Documents\PDF-Entwuerfe\200.000.PDF"

Code:
(defun c:PL_mergePDF (/ PLANLAUF)
  (vl-load-com)
  (setq PLANLAUF (strcat (getvar "dwgprefix") "PDF-Entwuerfe\\")) (VL-MKDIR PLANLAUF) ;Verzeichnis und Erstellen
  (setq PLANLAUF (strcat PLANLAUF (getvar "ctab")));Layoutname
  (setq TEMP (strcat PLANLAUF "TEMP.PDF"))
  (setq LAST (strcat PLANLAUF " Last.PDF")) 
  (setq PLANLAUF (strcat PLANLAUF ".PDF")) 
  (setq PLANLAUF1 (strcat PLANLAUF ))
  (setq TEMP1 (strcat TEMP ))
  (command "_.Shell" (strcat (chr 34) "C:\\Program Files (x86)\\PDFtk\\bin\\pdftk.exe" (chr 34) " " (chr 34)LAST(chr 34) " " (chr 34)TEMP(chr 34) " cat output " (chr 34)PDF1(chr 34)))
)



Das ist ja mal ein äußerst wirrer Lisp-Code. (setq TEMP1 (strcat TEMP )) ist sinnfrei, und TEMP1 wird gar nicht weiter verwendet. Die Variablenwerte in PLANLAUF und PLANLAUF1 werden ebenfalls nicht verwendet, dafür aber die im Code nicht mit Wert gefüllte Variable  PDF1. LAST ist eine Lisp-Funktion, der solltest Du nicht per SETQ einen neuen Wert zuweisen. (chr 34) ist das Leerzeichen, und das verwendest Du auch als " " im Code. Und das solltest Du nicht bei Command-Aufrufen einem command voranstellen, auch wenn das beim Shell-Command vermutlich nicht stört.

Bitte erst mal aufräumen. Und dann prüfst Du mal, wie Du PDFK.EXE in einer Konsole aufrufen kannst. Genau so muss das dann auch in einer Shell aus AutoCAD heraus aufgerufen werden.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadffm
Moderator
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 22049
Registriert: 03.06.2002

Alles

erstellt am: 07. Feb. 2024 11:06    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Bernd P 10 Unities + Antwort hilfreich

Hi,

nachdem ich jetzt eine ausführliche und scharfe Antwort verfasst hatte [DEL], hier meine Antwort.


1. Schau doch als erstes wie das ganz händisch funktioniert, komplett ohne Lisp, ohne CAD.
   (ich nehme ja an das deine fett geschriebene Zeile NICHT funktioniert.

   Wenn das dann klappt

2. Öffne die VLIDE und fange komplett neu an, ohne defun, einfach nur die Zeilen, Stück für Stück
   und eine neue Zeile erste beginnen wenn die vorherige funktioniert.

   Pfad file1 file2 file3, getvar dwgprefix, setq und strcat sind bekannt, das reicht.
  

   Ich fühlte mich persönlich verarscht von deinem Post, das setq-Massaker sieht einfach nur aus nach
   'hier habt ihr irgendetwas wild zusammengestückeltes, macht mir - das es läuft'
   Habe mich dann aber wieder beruhigt und schreibe nun diese nette Antwort  

  
3. Shell-Zeile
   Da du bereits den richtigen Aufruf in 1)  ermittelt hast, kannst du jetzt ganz locker versuchen
   genau diesen String in Lisp umzusetzen (man kann ja zum Testen PRINC statt command shell nutzen,
   schon bist du fertig. (Spoiler: Lisp-technisch ist der String in Ordnung, wenn die drei Dateinamen enthalten, ich vermute nur inhaltlich, also bereits zu 1) einen Fehler)


Ich gehe mal eine rauchen  

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Bernd P
Ehrenmitglied V.I.P. h.c.
cook-general



Sehen Sie sich das Profil von Bernd P an!   Senden Sie eine Private Message an Bernd P  Schreiben Sie einen Gästebucheintrag für Bernd P

Beiträge: 3403
Registriert: 07.06.2001

W10-64bit, AMD Ryzen 7 3700X,32GB RAM, Sapphire Pulse Radeon RX 570 8G G5, Canon TX-3000 MFP, Maus Cherry MW4500, Sub:Infrastructure Design Suite, Office 365

erstellt am: 07. Feb. 2024 11:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Servus, ist 'etwas' wirr beim herumprobieren und ändern, hier der geänderte Code.

Schreibt die nötigen Befehle jetzt komplett in eine Bat in %TEMP% und startet sie.

btw (chr 34) ist Anführungszeichen nicht Leerzeichen. 

Code:
(defun c:PL_mergePDF (/ PLANLAUF TEMP LAST BATFILE BATCMD1 BATCMD2 BATCMD3)
  (vl-load-com)
  (setq PLANLAUF (strcat (getvar "dwgprefix") "PDF-Entwuerfe\\")) (VL-MKDIR PLANLAUF) ;Verzeichnis und Erstellen
  (setq PLANLAUF (strcat PLANLAUF (getvar "ctab")));Layoutname
  (setq TEMP (strcat PLANLAUF "TEMP.PDF"))
  (setq LAST (strcat PLANLAUF " Last.PDF")) 
  (setq PLANLAUF (strcat PLANLAUF ".PDF")) 
  (setq PLANLAUF1 (strcat PLANLAUF ))
  (setq BATFILE (strcat (getvar "tempprefix") "TEMP.bat"))
  (setq BATCMD1 (strcat "copy " (chr 34)PLANLAUF(chr 34) " " (chr 34)TEMP(chr 34)))
  (setq BATCMD2 (strcat (chr 34) "C:\\Program Files (x86)\\PDFtk\\bin\\pdftk.exe" (chr 34) " " (chr 34)LAST(chr 34) " " (chr 34)TEMP(chr 34) " cat output " (chr 34)PLANLAUF1(chr 34)))
  (setq BATCMD3 (strcat "del " (chr 34)TEMP(chr 34)))
  (setq des (open BATFILE "w"))
  (write-line "chcp 1252" des)
  (write-line BATCMD1 des)
  (write-line BATCMD2 des)
  (write-line BATCMD3 des)
  (close des)
  (startapp "explorer" (strcat "/e, " BATFILE )) 
)

Nachdem es jetzt so funktioniert, ist es für mich erledigt.

------------------
<----- Bitte Systeminfo eintragen, warum siehst du hier. Schöne Grüsse aus der Steiermark  Bernd P.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Bernd P
Ehrenmitglied V.I.P. h.c.
cook-general



Sehen Sie sich das Profil von Bernd P an!   Senden Sie eine Private Message an Bernd P  Schreiben Sie einen Gästebucheintrag für Bernd P

Beiträge: 3403
Registriert: 07.06.2001

W10-64bit, AMD Ryzen 7 3700X,32GB RAM, Sapphire Pulse Radeon RX 570 8G G5, Canon TX-3000 MFP, Maus Cherry MW4500, Sub:Infrastructure Design Suite, Office 365

erstellt am: 07. Feb. 2024 11:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

1. hab ich doch "C:\Program Files (x86)\PDFtk\bin\pdftk.exe" "C:\Users\pongratz\Documents\PDF-Entwuerfe\200.000 Last.PDF" "C:\Users\pongratz\Documents\PDF-Entwuerfe\200.000TEMP.PDF" cat output "C:\Users\pongratz\Documents\PDF-Entwuerfe\200.000.PDF" läuft im DOS-Eingabefenster
2. Werde ich verwenden.
3. Das ist der springende Punkt, der leider Untergegangen ist, mit Shell tut sich nix im Gegensatz zum DOS-Eingabefenster. Ich nahm an, das es dort noch eine Formatierung und/oder Umlauten im Pfad lag, die man noch ergänzen muss. (was beim BAT mit chcp 1252 ergänzt ist)

Sorry...

------------------
<----- Bitte Systeminfo eintragen, warum siehst du hier. Schöne Grüsse aus der Steiermark  Bernd P.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadffm
Moderator
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 22049
Registriert: 03.06.2002

Alles

erstellt am: 07. Feb. 2024 11:37    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Bernd P 10 Unities + Antwort hilfreich

>>"Servus, ist 'etwas' wirr beim herumprobieren und ändern, hier der geänderte Code."
DANKE, etwas besser, aber nicht aufgeräumt.
Kann ich  nicht verstehen bei Zeilen welche man selbst schreibt 


>>"Nachdem es jetzt so funktioniert, ist es für mich erledigt."
Okay, jetzt hast du denselben String gezeigt und dazu bestätigt das dieser aus deiner .bat Datei funktioniert,
ich testete es gleich und auch bei mir funktionierte es (zu meinem geringen Erstaunen, denn das passte nicht zu
meinen 3 Minuten Erfahung mit dem Tool)

JETZT schaue ich gerne noch einmal nach, so erfahren vielleicht wir beide warum es verschiedene Möglichkeiten für den Aufruf gibt
und wo es ggf. über Lisp hakt.

Bis später 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadffm
Moderator
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 22049
Registriert: 03.06.2002

Alles

erstellt am: 07. Feb. 2024 11:45    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Bernd P 10 Unities + Antwort hilfreich

überschnitten, daher:


Original erstellt von Bernd P:
1. hab ich doch
In der Doku welche ich zuerst gelesen hatte, stand ein anderer Aufruf-Aufbau, welchen ich auch testete,
daher dachte ich das es dabei schon hakt.

"2. Werde ich verwenden."
Gut. Dann kommst du auch schnell darauf keine vorhandenen Standard Lispfunktionen neu zu definieren (siehe dein Code, Variable LAST)

3. Das ist der springende Punkt, der leider Untergegangen ist, mit Shell tut sich nix im Gegensatz zum DOS-Eingabefenster.
Der ist klar untergegangen, weil mit dem setq-Massaker am Anfang hätte ohnehin nichts laufen können mit dem Code
und Programme laufen wie man sie schreibt und man wie man Fehler sucht, von Anfang bis Ende.
Daher war die letzte Zeile zunächst relativ irrelevant, wobei mir halt doch schon ein andere Befehlsstring aufgefallen war.
Nun gut, das kläre ich noch.

>>"und/oder Umlauten im Pfad lag,"
Dewsegen testet man (auch) ohne Sonderzeichen. Spoiler: Daran liegt es nicht.

Und jetzt mache ich wirklich mal Pause  

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz