@@ -27,6 +27,7 @@ interface
2727 function SetValidatorLibPath (const _Path : String) : IXRechnungValidationHelperJava;
2828 function SetValidatorConfigurationPath (const _Path : String) : IXRechnungValidationHelperJava;
2929 function SetVisualizationLibPath (const _Path : String) : IXRechnungValidationHelperJava;
30+ function SetFopLibPath (const _Path : String) : IXRechnungValidationHelperJava;
3031 function Validate (const _InvoiceXMLData : String; out _CmdOutput,_ValidationResultAsXML,_ValidationResultAsHTML : String) : Boolean;
3132 function ValidateFile (const _InvoiceXMLFilename : String; out _CmdOutput,_ValidationResultAsXML,_ValidationResultAsHTML : String) : Boolean;
3233 function Visualize (const _InvoiceXMLData : String; _TrueIfUBL_FalseIfCII : Boolean; out _CmdOutput,_VisualizationAsHTML : String) : Boolean;
@@ -45,6 +46,7 @@ TXRechnungValidationHelperJava = class(TInterfacedObject,IXRechnungValidationH
4546 ValidatorLibPath : String;
4647 ValidatorConfigurationPath : String;
4748 VisualizationLibPath : String;
49+ FopLibPath : String;
4850 CmdOutput : TStringList;
4951 function ExecAndWait (_Filename, _Params: string): Boolean;
5052 function QuoteIfContainsSpace (const _Value : String) : String;
@@ -55,6 +57,7 @@ TXRechnungValidationHelperJava = class(TInterfacedObject,IXRechnungValidationH
5557 function SetValidatorLibPath (const _Path : String) : IXRechnungValidationHelperJava;
5658 function SetValidatorConfigurationPath (const _Path : String) : IXRechnungValidationHelperJava;
5759 function SetVisualizationLibPath (const _Path : String) : IXRechnungValidationHelperJava;
60+ function SetFopLibPath (const _Path : String) : IXRechnungValidationHelperJava;
5861 function Validate (const _InvoiceXMLData : String; out _CmdOutput,_ValidationResultAsXML,_ValidationResultAsHTML : String) : Boolean;
5962 function ValidateFile (const _InvoiceXMLFilename : String; out _CmdOutput,_ValidationResultAsXML,_ValidationResultAsHTML : String) : Boolean;
6063 function Visualize (const _InvoiceXMLData : String; _TrueIfUBL_FalseIfCII : Boolean; out _CmdOutput,_VisualizationAsHTML : String) : Boolean;
@@ -140,6 +143,13 @@ function TXRechnungValidationHelperJava.ExecAndWait(_Filename, _Params: string):
140143 end ;
141144end ;
142145
146+ function TXRechnungValidationHelperJava.SetFopLibPath (
147+ const _Path: String): IXRechnungValidationHelperJava;
148+ begin
149+ FopLibPath := IncludeTrailingPathDelimiter(_Path);
150+ Result := self;
151+ end ;
152+
143153function TXRechnungValidationHelperJava.SetJavaRuntimeEnvironmentPath (
144154 const _Path: String): IXRechnungValidationHelperJava;
145155begin
@@ -454,9 +464,10 @@ function TXRechnungValidationHelperJava.VisualizeFileAsPdf(
454464 if not _TrueIfUBL_FalseIfCII then
455465 if not FileExists(VisualizationLibPath+' xsl\cii-xr.xsl' ) then
456466 exit;
457-
458467 if not FileExists(VisualizationLibPath+' xsl\xrechnung-html.xsl' ) then
459468 exit;
469+ if not FileExists(FopLibPath+' fop\build\fop.jar' ) then
470+ exit;
460471
461472 hstrl := TStringList.Create;
462473 cmd := TStringList.Create;
@@ -478,26 +489,58 @@ function TXRechnungValidationHelperJava.VisualizeFileAsPdf(
478489 QuoteIfContainsSpace(ValidatorLibPath+' libs\Saxon-HE-11.4.jar;' +ValidatorLibPath+' libs\xmlresolver-4.4.3.jar' )+
479490 ' net.sf.saxon.Transform' +' -s:' +QuoteIfContainsSpace(ChangeFileExt(_InvoiceXMLFilename,' -xr.xml' ))+
480491 ' -xsl:' +QuoteIfContainsSpace(VisualizationLibPath+' xsl\xr-pdf.xsl' )+
481- ' -o:' +QuoteIfContainsSpace(ChangeFileExt(_InvoiceXMLFilename,' -.pdf ' )));
492+ ' -o:' +QuoteIfContainsSpace(ChangeFileExt(_InvoiceXMLFilename,' -.fo ' ))); // geändert von pdf auf fo
482493
483- cmd.SaveToFile(_InvoiceXMLFilename+' .bat' ,TEncoding.ANSI);
494+ cmd.SaveToFile(_InvoiceXMLFilename+' .bat' ,TEncoding.ANSI); // ToDo
495+ // cmd.SaveToFile(_InvoiceXMLFilename+'.bat');
484496
485497 Result := ExecAndWait(_InvoiceXMLFilename+' .bat' ,' ' );
486498
487499 _CmdOutput := CmdOutput.Text;
488500
489501 DeleteFile(_InvoiceXMLFilename+' .bat' );
490- // DeleteFile(ChangeFileExt(_InvoiceXMLFilename,'-xr.xml'));
491502
503+ if not Result then
504+ exit;
505+
506+ // //////////////////////////////////////////////////////////////////////////
507+ // Fopper aufrufen. Datei ist eine fo Datei. Saxon HE gibt eine fo-Datei zurück!
508+ // cmd Inhalt aus der apache-fop\foop\fop.bat ausgelesen mit echo "%JAVACMD%" %JAVAOPTS% %LOGCHOICE% %LOGLEVEL% -cp "%LOCALCLASSPATH%" %FOP_OPTS% org.apache.fop.cli.Main %FOP_CMD_LINE_ARGS%
509+ if FileExists(ChangeFileExt(_InvoiceXMLFilename,' -.fo' )) then
510+ begin
511+ cmd.Clear;
512+ cmd.Add(' pushd ' +QuoteIfContainsSpace(ExtractFilePath(_InvoiceXMLFilename)));
513+ cmd.Add(QuoteIfContainsSpace(JavaRuntimeEnvironmentPath+' bin\java.exe' )+' -cp ' +
514+ QuoteIfContainsSpace(FopLibPath+' fop\build\fop.jar;' +FopLibPath+' fop\lib\batik-all-1.16.jar;' +
515+ FopLibPath+' fop\lib\commons-io-2.11.0.jar;' +FopLibPath+' fop\lib\commons-logging-1.0.4.jar;' +
516+ FopLibPath+' fop\lib\fontbox-2.0.24.jar;' +FopLibPath+' fop\lib\serializer-2.7.2.jar;' +
517+ FopLibPath+' fop\lib\xml-apis-1.4.01.jar;' +FopLibPath+' fop\lib\xml-apis-ext-1.3.04.jar;' +
518+ FopLibPath+' fop\lib\xmlgraphics-commons-2.8.jar;' ) +
519+ ' org.apache.fop.cli.Main ' +
520+ QuoteIfContainsSpace(ChangeFileExt(_InvoiceXMLFilename,' -.fo' )) + ' ' +
521+ QuoteIfContainsSpace(ChangeFileExt(_InvoiceXMLFilename,' -.pdf' ) ));
522+
523+ cmd.SaveToFile(_InvoiceXMLFilename+' .bat' );
524+
525+ Result := ExecAndWait(_InvoiceXMLFilename+' .bat' ,' ' );
526+
527+ _CmdOutput := _CmdOutput + #13 #10 + CmdOutput.Text;
528+
529+ DeleteFile(_InvoiceXMLFilename+' .bat' );
530+ DeleteFile(ChangeFileExt(_InvoiceXMLFilename,' -.fo' ));
531+ end else
532+ Result := false;
533+
534+ DeleteFile(ChangeFileExt(_InvoiceXMLFilename,' -xr.xml' ));
535+ // //////////////////////////////////////////////////////////////////////////
492536 if FileExists(ChangeFileExt(_InvoiceXMLFilename,' -.pdf' )) then
493537 begin
494538 _VisualizationAsPdf := TMemoryStream.Create;
495539 _VisualizationAsPdf.LoadFromFile(ChangeFileExt(_InvoiceXMLFilename,' -.pdf' ));
496540 _VisualizationAsPdf.Position := 0 ;
497- // DeleteFile(ChangeFileExt(_InvoiceXMLFilename,'-.pdf'));
541+ DeleteFile(ChangeFileExt(_InvoiceXMLFilename,' -.pdf' ));
498542 end else
499543 Result := false;
500-
501544 finally
502545 hstrl.Free;
503546 cmd.Free;
0 commit comments