| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | | | PNY: der unverzichtbare Partner für umfassende KI-Lösungen von Workstations bis zu Edge Computing und KI-Cluster-Bereitstellung, eine Pressemitteilung
|
Autor
|
Thema: pdftk commandline option (355 / mal gelesen)
|
Bernd P Ehrenmitglied V.I.P. h.c. cook-general
Beiträge: 3434 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 / zitieren --> Unities abgeben:
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
Beiträge: 970 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 07. Feb. 2024 10:58 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd P
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 良い精神
Beiträge: 22298 Registriert: 03.06.2002 Alles
|
erstellt am: 07. Feb. 2024 11:06 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd P
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
Beiträge: 3434 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 / zitieren --> Unities abgeben:
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
Beiträge: 3434 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 / zitieren --> Unities abgeben:
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-Eingabefenster2. 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 良い精神
Beiträge: 22298 Registriert: 03.06.2002 Alles
|
erstellt am: 07. Feb. 2024 11:37 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd P
>>"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 良い精神
Beiträge: 22298 Registriert: 03.06.2002 Alles
|
erstellt am: 07. Feb. 2024 11:45 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd P
ü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 >>)
|