malli88
Goto Top

Probleme bei Batch PDF Konvertierung durch verschiedene Nutzer an einem 2008er Server

Hallo zusammen,

ich habe folgendes Problem.

Ich habe ein Batch Script welches ein Perl Dokument startet um eine Batch Konvertierung von verschiedenen RTF Dateien in PDF durchzuführen.
Wenn Wir dieses Script mit dem Benutzer Administrator ausführen hat die PDF danach die Schriftart ARIAL.
Gehen wir jetzt aber hin und führen das Script mit einem anderen Benutzer aus der auch Administrationsrechte hat oder führen es sogar mit diesem Benutzer als Administrator aus kommen jedes mal andere Ergebnisse raus.
Im Log File zu der Konvertierung wird behauptet das der PDF Konverter die Schriftart Txxxxxx nicht kenn und deshalb durch Curiur ersetzt. Wenn ich aber dann die dadurch erzeugten Dokumente in Word kopiere und nachsehe welche Schriftart verwendet wurde steht da Txxxxxxx. xxxxxx ist bei beiden mit dem anderen Benutzer konvertierten Dokumenten anders.

Bitte um Hilfe. Ich habe keine Ahnung mehr woran es liegen kann.

Liebe Grüße
Stephan

Content-ID: 233168

Url: https://administrator.de/contentid/233168

Ausgedruckt am: 22.11.2024 um 17:11 Uhr

Pago159
Pago159 20.03.2014 um 09:48:35 Uhr
Goto Top
Hallo Stephan,

was für die Hilfe bei deinem Problem sehr hilfreich wäre, wären folgende Angaben:

1) Wie lautet der Script Code (Batch und Perl)
2) Mit welchem Programm und Versionsstand konvertierst du?
3) Haben die RTF-Dokumente immer die Schriftart ARIAL? Oder liegen immer unterschiedliche Schriftarten vor?
4) Sind die Einstellungen der Programme beim Administrator und den Anwendern identisch?

Lg Pago
Malli88
Malli88 20.03.2014 aktualisiert um 11:49:11 Uhr
Goto Top
OK, dann fangen wir mal an.

CODE PDFCONVERT.BAT
___________________________________________________________________________________________________________
set gsbin = C:\gs\gs9.07\bin\gswin64c.exe
set gs_fontpath = C:\gs\fonts
PDFconvert.pl
___________________________________________________________________________________________________________

CODE PDFCONVERT.pl
___________________________________________________________________________________________________________
#!/usr/bin/perl


  1. Module laden
use strict;
use FileHandle;
use File::Copy;
use Getopt::Std;
use MIME::Lite;

  1. DPCom Module
use BraFo::_module;

  1. Subroutinen definieren
sub GetSubDirs($);

  1. globale Variablen definieren
our $g_debug = 1;
our $g_log_file = 'log\PDFconvert.log';

  1. Variablen definieren
my $RTF = 'RTF';
my $PDF = 'PDF';
my $RTF_converted = 'RTF_converted';
my $PDF_sent = 'PDF_sent';

my $print_dir = 'C:\Abit\Druck';
my $officelog = 'C:\Office2PDF2\log';
my $archive_dir = 'D:\Archive\Abit';

my $office2pdf_dir = 'C:\Office2PDF2';


autoflush STDOUT 1;

unlink $g_log_file if $TEST;

InitLogger();

Info("Starte Script '$0'");

#
  1. Hauptprogramm
#

  1. Alle Unterverzeichnisse im Druckverzeichnis verarbeiten
my @main_dir_names = GetSubDirs($print_dir);

foreach my $main_dir_name (@main_dir_names)
{
my $main_dir = $print_dir."\\".$main_dir_name;
Info("Verarbeite Verzeichnis: '$main_dir'");

          1. Alle Verzeichnisse im RTF Verzeichnis verarbeiten
          my @convert_dir_names = GetSubDirs($main_dir.'\RTF');

          Info("Konvertiere RTF nach PDF in folgenden Verzeichnissen:");
          foreach my $convert_dir_name (@convert_dir_names)
          {
          my $rtf_dir = $main_dir."\\".$RTF."\\".$convert_dir_name;
          my $pdf_dir = $main_dir."\\".$PDF."\\".$convert_dir_name;

          Info("==>> '$rtf_dir' => '$pdf_dir'");
          system("title PDFconvert: '$rtf_dir' nach '$pdf_dir'");

          Debug("Enthaltene RTF Dokumente in PDF umwandeln...");
          my $sys = $office2pdf_dir.'\office2pdf.exe -i '.$rtf_dir.' -o '.$pdf_dir.' -c '.$office2pdf_dir.'\config.ini';
          Debug("Systemaufruf: '$sys'\n". ( '-' x 120 ) );
          my $office2pdf_log = `$sys`;
          Debug("Office2PDF Log:\n$office2pdf_log\n");
          Debug( '^' x 94 );

                          1. Nachdem die PDF Dateien erzeugt wurden, sollen die RTF Dokumente archiviert werden.
                          2. Dies wird NUR für jede erzeugte PDF Datei gemacht.

                          1. PDF Verzeichnis lesen
                          opendir(DIR, $pdf_dir) or Fatal("Kann das PDF Verzeichnis '$pdf_dir' nicht oeffnen!\nSystem Fehlermeldung:$!\n");
                          my @pdf_file_names = grep {-f "$pdf_dir/$_" && $_ =~ /\.pdf$/i} readdir(DIR);
                          closedir(DIR);

                                          1. Die RTF Dateien zu den jeweils erzeugten PDF Dateien archivieren
                                          foreach my $pdf_file_name (@pdf_file_names)
                                          {
                                          my $rtf_file_name = $pdf_file_name;
                                          $rtf_file_name =~ s/\.pdf$/\.rtf/;
                                          my $rtf_file = $rtf_dir."\\".$rtf_file_name;
                                          my $pdf_file = $pdf_dir."\\".$pdf_file_name;
                                          my $archive_file = $archive_dir."\\".$main_dir_name."\\".$RTF_converted."\\".$convert_dir_name."\\".$rtf_file_name;

                                          if (-e $rtf_file)
                                          {
                                          Debug("Archiviere RTF Datei: '$rtf_file' nach '$archive_file'");
                                          move($rtf_file, $archive_file) or Error("Kann die Datei '$rtf_file' nicht in das Archiv '$archive_file' verschieben!\nSystem Fehlermeldung:$!\n");
                                          }
                                          elsif (-e $archive_file)
                                          {
                                          Debug("Die Datei '$archive_file' wurde bereits archiviert.");
                                          }
                                          else
                                          {
                                          Error("Zu der PDF Datei '$pdf_file' gibt es kein RTF Dokument, auch nicht im Archiv!");
                                          }
                                          }
                                          }
                                          }


                                          Info("Script ohne Fehler beendet.\n");
                                          exit 0;


                                          sub GetSubDirs($)
                                          {
                                          my $dir = shift;

                                          opendir(DIR, $dir) or Fatal("Kann das Verzeichnis '$dir' nicht oeffnen!\nSystem Fehlermeldung:$!\n");
                                          my @sub_dirs = grep {-d "$dir/$_" && $_ !~ /^\./} readdir(DIR);
                                          closedir(DIR);

                                          return @sub_dirs;
                                          }


                                          __END__
                                          ___________________________________________________________________________________________________________


                                          Die RTF Daten haben alle die Schriftart Book Antiqua.


                                          Einstellungen sind identisch.


                                          DANKE!
Malli88
Malli88 20.03.2014 um 11:52:33 Uhr
Goto Top
PDF Writer - bioPDF 9.10.0.1629

Das ist der PRinter
Pago159
Pago159 20.03.2014 um 13:20:51 Uhr
Goto Top
Hallo Stephan,

das Script schaut jetzt soweit ich das eben mal schnell überflogen habe gut aus.
Was für mich allerdings nicht ganz schlüssig ist, sind folgende Variablen deklarationen in dem Batch teil, da du im anschluss das Script aufrufst ohne etwas mit zu geben:

set gsbin = C:\gs\gs9.07\bin\gswin64c.exe
set gs_fontpath = C:\gs\fonts

oder macht die Batch Datei noch etwas anderes?

Hast du mal die Berechtigungen von dir und dem Anwender verglichen?
Wie verhält sich das Script, wenn ein neu angelegter Benutzer dieses ausführt?

Kannst du die Schriftart der RTF-Dokumente beeinflussen? Dann würde ich dir anraten alles direkt in Arial zu speichern. So wie es sich für mich liest, kennt der PDF-Writer die Schriftart "Book Antiqua" nicht kennen. Dies ist soweit ich das weis auch keine Standard Schriftart. Somit muss diese Schriftart überall, wo sie genutzt wird bekannt sein.

Lg Pago
Malli88
Malli88 20.03.2014 um 13:29:10 Uhr
Goto Top
Nein Es ist nichts im Batch ausser die drei Zeilen.
Ebenso kann ich die Schriftart nicht beeinflussen da die Dokumente von einem Mandanten kommen.
Das mit dem neuen Benutzer versuche ich mal.
Pago159
Pago159 21.03.2014 um 14:32:08 Uhr
Goto Top
Was sollen denn diese zwei Zeilen bezwecken?

set gsbin = C:\gs\gs9.07\bin\gswin64c.exe
set gs_fontpath = C:\gs\fonts

Hast du die Batch und das Script selbst geschrieben? Oder hast du es geschrieben bekommen?

Du weist hier der Variable "gsbin" den Wert "C:\gs\gs9.07\bin\gswin64c.exe" zu und der Variable "gs_fontpath" weist du den Wert "C:\gs\fonts" zu.
Diese beiden Variablen werden aber in keinster weise benötigt oder benutz, denn nach der Variablen zuweisung startest du das Pearl script, welches nicht auf Batch Variablen zurückgreift.

In deinem Pearl Script nutzt du noch eine ini Datei mit konfigurationsdaten.
Könntest du diese bitte auch mal Posten? In dieser Datei werden ja noch weitere konfigurationen für office2pdf zur verfügung gestellt (Konvertierungsoptionen denke ich mal).

Konntest du mit dem neuen User etwas erreichen?

Lg Pago
Malli88
Malli88 21.03.2014 um 14:40:23 Uhr
Goto Top
  1. Configuration of Office2PDF:
[configsection]

  1. Path to Ghostscript:
gsbin = C:\gs\gs9.07\bin\gswin64c.exe

  1. Ghostscript Fontpath environment variable
gs_fontpath = C:\gs\fonts

  1. Postscript Printer to be used
printer = bioPDF

  1. File types to be converted
word = ['.doc', '.dot' '.rtf', '.txt']
excel = ['.xls', '.xlt', '.csv']
powerpoint = ['.ppt', '.pps']
publisher = ['.pub']

  1. Using PDF/A (not working now)
use_pdfa = True

  1. Ghostscript Interpreter Options (see possible devices below)
gsoptions =-sDEVICE="pdfwrite" -dNOPAUSE -dBATCH -dSAFER -dQUIET

  1. License Code of Office2PDF
license = 67659445676
Pago159
Pago159 24.03.2014 aktualisiert um 16:48:35 Uhr
Goto Top
Also ich kann da jetzt so auf anhieb nichts finden, weshalb es bei einem Anwender nicht funktionieren sollte.
Deine Anwender haben aber anfürsich zugriff auf C:\GS\ ?
Und der Druckr bioPDF ist vorhanden?
Kannst du evtl. noch die LOG-Datei anhängen?