Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Rund um AutoCAD
  PDF mit Ghostscript / autom. Größenanpassung

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:  PDF mit Ghostscript / autom. Größenanpassung (419 mal gelesen)
GuG
Mitglied



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

Beiträge: 333
Registriert: 07.02.2002

ACAD2002SP1 / W2kSP4 / P3-866 / HP DesignJet 1050c;
- bei C_Dilla- od. Netzwerkproblemen
Kuhlmann Zeichenbrett A0 :)

erstellt am: 27. Feb. 2003 16:19    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


2pdf.zip

 
Hi,
seit einen Tagen tauchen hier im Forum immer wieder Fragen zur PDF-Erstellung auf, z.B. die Blattformateinstellungen, das Beschneiden eines zu großen Formates oder automatische Erstellung.
Heute ist die gleiche Frage hier aufgetaucht, aber ich hatte mir, dank diesem Forum, schon einige Gedanken gemacht.

Da es bei uns auch nur einen Acrobat 5 Distiller gibt, habe ich versucht eine Lösung mit Ghostscript zu finden.
Ghostscript allein kann die Größe des Blattformates nicht feststellen, normalerweise teilt man ihm das Format mit.
Es gibt aber auch eine Möglichkeit ihm nicht das Format, sondern die Abmessungen zu übergeben 
Und AutoCAD gibt, wenn man per Autospool druckt, auch das Format heraus!
Also hab ich mal ein kleines Programm (eigentlich für den Eigenbedarf) geschrieben, das die Abmessungen umrechnet und eine Batchdatei zur Konvertierung schreibt.

Vorteil: jedes Blattformat des PS-Druckers wird in eine PDF-Datei gedruckt, egal ob Sonderformat, Hoch- oder Querformat. Die Abmessungen werden für jede Zeichnung angepasst. Wenn sich die Ränder des PS-Treibers auf "0" einstellen lassen (z.B. bei ACAD2002Sp1) gibt es keinen Rand, den man wegschneiden müßte.

Da ich das Prog für eigene Zwecke gebastelt habe, ist es (noch?) nicht zu konfigurieren, d.h. meine vorgegebenen Pfade sind z.B. nicht änderbar.

Damit es funktioniert:
- die Dateien "plot.bat" und "2pdf.exe" müssen ins Verzeichnis "c:\ps2pdf" kopiert werden.
- Ghostscript 8.00 muß im Verzeichnis C:\Program Files\gs\ installiert sein. Die ausführbare Datei "gswin32.exe" liegt demzufolge in c:\program files\gs\gs8.00\bin. Das läßt sich z.Zt. nicht ändern!!!
- als "Position der Druckerspoolerdatei" muß C:\ps2pdf stehen
- die "Ausführbare Druckerspooldatei" heißt
C:\ps2pdf\plot.bat %s %d %n %w %h

Wo dies zu finden ist, müßte sich durch die Bilder im Anhang selbst erklären.

Wie es funktioniert:

1. AutoCad druckt über den Postscript-Drucker (Anschluß AutoSpool) eine Datei mit zufälligem Namen in das Verzeichnis C:\ps2pdf.

2. Anschließend startet es das eingetragene AutoSpool-Programm (plot.bat). Diesem wird
- %s => der Name Spooldatei
- %d => der Name und Pfad der Zeichnung
- %n => der Name des Plotters
- %w => die Breite des Plots
- %h => die Höhe des Plots
übergeben.

3. Die Batchdatei benennt die Spooldatei in temp.ps um und startet 2pdf.exe.

4. 2pdf.exe errechnet aus Breite x Höhe die entsprechenden Postscript-Abmessungen und schreibt eine kleine Batchdatei namens "konv.bat".

5. Plot.bat startet konv.bat und Ghostscript beginnt die PDF zu bauen.

6. Die neue temp.pdf wird in das Zeichnungsverzeichnis kopiert, d.h. neben Zeichnung.dwg liegt hinterher auch Zeichnung.dwg.pdf
Wenn das nicht gewünscht ist, einfach die Zeile ändern, löschen oder auskommentieren.

Wer es möchte kann es gerne (auf eigene Verantwortung) ausprobieren. Es ist sicher noch nicht fehlerfrei und mit heißer Nadel gestrickt - aber es läuft bei uns problemlos auf 3 Rechnern.

WICHTIG: Die Batchdateien vertragen keine Namen oder Verzeichnisangaben mit LEERZEICHEN. Vielleicht gehts mit ein paar Änderungen an der Batchdatei, ich habs allerdings noch nicht probiert.

Gruß Gunnar

------------------
Wer Rechtschreibfehler findet, der darf sie behalten

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

CADchup
Ehrenmitglied V.I.P. h.c.




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

Beiträge: 3329
Registriert: 14.03.2001

Sicher ist, dass nichts sicher ist. Selbst das nicht.
Joachim Ringelnatz

erstellt am: 28. Feb. 2003 08:59    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 GuG 10 Unities + Antwort hilfreich

Interessanter Ansatz.
Aber wenn Autospool Breite und Höhe der Datei weitergibt, würde es dann nicht ausreichen, diese Parameter (umgerechnet) an GS weiterzugeben?
Also eine BAT mit sowas wie:
-dDEVICEWIDTHPOINTS=%w*72/25.4 -dDEVICEHEIGHTPOINTS==%h*72/25.4

Keine Ahnung, wie man so eine Berechnung in Batch-Dateien macht. Müsste aber doch möglich sein, oder?

------------------
www.cadditions.de

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



Expert Product Data Management (m/w/d)

MOLDINO. Unsere Produkte begeistern seit Jahrzehnten Kunden aus dem Werkzeug- und Formenbau in ganz Europa, denn unsere Leidenschaft ist die Herstellung und Anwendung hochpräziser Zerspanungswerkzeuge. Wir lieben komplexe Herausforderungen und Perfektion bis ins Detail ist unser Anspruch. Mehr als 150 Kollegen arbeiten europaweit in Produktmanagement, Vertrieb und Administration ...

Anzeige ansehenWeitere: Handwerk, Dienstleistung und Fertigung
GuG
Mitglied



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

Beiträge: 333
Registriert: 07.02.2002

ACAD2002SP1 / W2kSP4 / P3-866 / HP DesignJet 1050c;
- bei C_Dilla- od. Netzwerkproblemen
Kuhlmann Zeichenbrett A0 :)

erstellt am: 28. Feb. 2003 09:08    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

Hi,
genauso läufts!
Aber Batchdateien allein sind zu doof, und bevor ich mich mit div. Erweiterungen oder Interpretern rumschlage (die u.U. weitere Probleme machen) habe ich ein kurzes Prog in Pascal geschrieben, das die Umrechnung erledigt und die Konvertierung-Batchdatei schreibt.

Was da hinten rauskommt sieht dann so aus:
c:\"program files"\gs\gs8.00\bin\gswin32 -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite  -dDEVICEWIDTHPOINTS=2384 -dDEVICEHEIGHTPOINTS=1684 -sOutputFile=c:\ps2pdf\temp.pdf -c .setpdfwrite -f c:\ps2pdf\temp.ps

Der kurze Quellcode ist ähnlich einfach:

Code:

program konv2pdf;
uses sysutils;

var
  p1          : string;
  p2          : string;
  acad_height : longint;
  acad_width  : longint;
  ps_height  : longint;
  ps_width    : longint;
  f          : text;

const
  gs = 'c:\"program files"\gs\gs8.00\bin\';
 
begin
  if paramcount <> 2 then writeln ('so nich')
  else
    begin
        p1 := paramstr(1);
        p2 := paramstr(2);
        p1 := copy (p1,1,(length(p1)-5));
        p2 := copy (p2,1,(length(p2)-5));
        acad_width  := strtoint(p1);
        acad_height := strtoint(p2);
        ps_width  := round(acad_width / 25.4 * 72);
        ps_height := round(acad_height / 25.4 * 72);
        writeln ('Abmessungen =  ', p1, ' x ', p2);
        writeln ('            => ', ps_width,' x ', ps_height);
        assign (f, 'c:\ps2pdf\konv.bat');
        rewrite(f);
        write (f, gs,'gswin32 -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite ',
                ' -dDEVICEWIDTHPOINTS=',ps_width,
                ' -dDEVICEHEIGHTPOINTS=',ps_height,
                ' -sOutputFile=c:\ps2pdf\temp.pdf -c .setpdfwrite',
                ' -f c:\ps2pdf\temp.ps');
        close(f);
    end;
end.


Den passenden Compiler gibts hier http://www.freepascal.org

Gruß Gunnar

------------------
Wer Rechtschreibfehler findet, der darf sie behalten

[Diese Nachricht wurde von GuG am 28. Februar 2003 editiert.]

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)2023 CAD.de | Impressum | Datenschutz