Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Exception when generating PDF #765

Open
ustegrew opened this issue Mar 5, 2025 · 2 comments
Open

Exception when generating PDF #765

ustegrew opened this issue Mar 5, 2025 · 2 comments

Comments

@ustegrew
Copy link

ustegrew commented Mar 5, 2025

I am unsuccessfully trying to create a view copy from this X-Invoice (Code shortened to relevant bits):

<?xml version="1.0" encoding="UTF-8"?>
<rsm:CrossIndustryInvoice xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100" xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100" xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100" xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:100">
  [...]
  <rsm:SupplyChainTradeTransaction>
    [...]
    <ram:ApplicableHeaderTradeSettlement>
      [...]
      <ram:SpecifiedTradePaymentTerms>
        <ram:Description>30 Tage 3%, 60 Tage netto</ram:Description>
        <ram:DueDateDateTime>
          <udt:DateTimeString format="102">20250420</udt:DateTimeString>
        </ram:DueDateDateTime>
      </ram:SpecifiedTradePaymentTerms>
      <ram:SpecifiedTradePaymentTerms>
        <ram:Description>30 Tage 3%, 60 Tage netto</ram:Description>
        <ram:DueDateDateTime>
          <udt:DateTimeString format="102">20250321</udt:DateTimeString>
        </ram:DueDateDateTime>
        <ram:ApplicableTradePaymentDiscountTerms>
          <ram:BasisDateTime>
            <udt:DateTimeString format="102">20250219</udt:DateTimeString>
          </ram:BasisDateTime>
          <ram:BasisAmount>[... omitted ...]</ram:BasisAmount>
          <ram:CalculationPercent>3.00</ram:CalculationPercent>
          <ram:ActualDiscountAmount>[... omitted ...]</ram:ActualDiscountAmount>
        </ram:ApplicableTradePaymentDiscountTerms>
      </ram:SpecifiedTradePaymentTerms>
    </ram:ApplicableHeaderTradeSettlement>
  </rsm:SupplyChainTradeTransaction>
</rsm:CrossIndustryInvoice>

Note that my XML invoice has got two elements

rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction[1]/ram:ApplicableHeaderTradeSettlement[1]/SpecifiedTradePaymentTerms

The X-Invoice validates OK with no messages

<?xml version="1.0" encoding="UTF-8"?>

<validation filename="zugferd-invoice.xml" datetime="2025-02-28 15:13:11">
  <xml>
    <info>
      <version>2</version>
      <profile>urn:cen.eu:en16931:2017#conformant#urn:zugferd.de:2p0:extended</profile>
      <validator version="2.16.2"/>
      <rules>
        <fired>324</fired>
        <failed>0</failed>
      </rules>
      <duration unit="ms">1816</duration>
    </info>
    <summary status="valid"/>
  </xml>
  <summary status="valid"/>
</validation>

I store the XML content of the X-Invoice inside a string. To create a view copy I apply:

import org.mustangproject.ZUGFeRD.ZUGFeRDVisualizer;

[... lots of code ...]

ZUGFeRDVisualizer   mustangVisualizer;
byte[]              fileContent;

mustangVisualizer = new ZUGFeRDVisualizer();
try {
    fileContent = mustangVisualizer.toPDF(xInvoiceXML);
    if (fileContent != null) {
        // send fileContent to display
    } else {
        // log ("Plain PDF, has no X-Invoice inside");
    }
catch (Throwable e) { // yes, I am lazy
    System.err.println (
        e.getClass().getSimpleName() + ": " + e.getMessage()
    );
}

[... lots of more code ...]

With the given XML invoice this code produces on the standard error output:

NullPointerException: Cannot invoke "String.getBytes(java.nio.charset.Charset)" because "fopInput" is null

I run the program on my IDE and get below exception message and stack trace. I assume the date CSV 2025-04-20;2025-03-21 are two dates 20250420 and 20250321 in the ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime tags.

When I remove one of the ram:SpecifiedTradePaymentTerms tags the visualizer produces a view copy successfully,
without any exceptions.

With other X-Invoices I do get a view copy - with ZUGFeRD PDFs and invoice XMLs.
I don't know the underlying standard, but I think it is allowed to put two ram:SpecifiedTradePaymentTerms tags at that place.

My java version:

openjdk version "22.0.1" 2024-04-16
OpenJDK Runtime Environment (build 22.0.1+8-16)
OpenJDK 64-Bit Server VM (build 22.0.1+8-16, mixed mode, sharing)

My OS:

DISTRIB_ID="ManjaroLinux"
DISTRIB_RELEASE="25.0.0"
DISTRIB_CODENAME="Zetar"
DISTRIB_DESCRIPTION="Manjaro Linux"

Is there anything I should do different to get a view copy for X-Invoices which have two ram:SpecifiedTradePaymentTerms tags in the given location?

Thank you so much for clarification!

The exception message:

net.sf.saxon.trans.XPathException: Invalid date "2025-04-20;2025-03-21" (Day must be two digits). Found while atomizing the first argument of fn:normalize-space() in {$content} on line 128
    at net.sf.saxon.expr.Atomizer$AtomizerElaborator.lambda$elaborateForPull$0(Atomizer.java:687) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.expr.AtomicSequenceConverter$AtomicSequenceConverterElaborator.lambda$elaborateForPull$0(AtomicSequenceConverter.java:536) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.expr.CardinalityChecker$CardinalityCheckerElaborator.lambda$elaborateForPull$0(CardinalityChecker.java:506) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.expr.elab.PullElaborator.lambda$elaborateForItem$1(PullElaborator.java:54) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.expr.elab.PullElaborator.lambda$elaborateForUnicodeString$3(PullElaborator.java:76) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.functions.NormalizeSpace_1$NormalizeSpaceFnElaborator.lambda$elaborateForBoolean$2(NormalizeSpace_1.java:115) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.expr.instruct.Choose$ChooseExprElaborator.lambda$elaborateForPush$10(Choose.java:1168) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.expr.instruct.Block$BlockElaborator.lambda$elaborateForPush$3(Block.java:885) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.expr.instruct.NamedTemplate.expand(NamedTemplate.java:247) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.expr.instruct.CallTemplate$CallTemplatePackage.processLeavingTail(CallTemplate.java:515) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.expr.Expression.dispatchTailCall(Expression.java:976) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.expr.instruct.CallTemplate$CallTemplateElaborator.lambda$elaborateForPush$1(CallTemplate.java:634) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.expr.instruct.Block$BlockElaborator.lambda$elaborateForPush$4(Block.java:895) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.expr.instruct.DocumentInstr$DocumentInstrElaborator.lambda$elaborateForItem$3(DocumentInstr.java:392) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.expr.elab.OptionalItemEvaluator.evaluate(OptionalItemEvaluator.java:41) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.expr.elab.LearningEvaluator.evaluate(LearningEvaluator.java:61) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.expr.instruct.WithParam.getSelectValue(WithParam.java:322) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.expr.instruct.Instruction.assembleParams(Instruction.java:200) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.expr.instruct.CallTemplate$CallTemplateElaborator.lambda$elaborateForPush$0(CallTemplate.java:590) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.expr.instruct.NamedTemplate.expand(NamedTemplate.java:247) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.expr.instruct.CallTemplate$CallTemplateElaborator.lambda$elaborateForPush$1(CallTemplate.java:633) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.expr.instruct.Block$BlockElaborator.lambda$elaborateForPush$4(Block.java:895) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.expr.instruct.NamedTemplate.expand(NamedTemplate.java:247) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.expr.instruct.CallTemplate$CallTemplateElaborator.lambda$elaborateForPush$1(CallTemplate.java:633) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.expr.instruct.DocumentInstr$DocumentInstrElaborator.lambda$elaborateForItem$3(DocumentInstr.java:392) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.expr.elab.OptionalItemEvaluator.evaluate(OptionalItemEvaluator.java:41) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.expr.elab.LearningEvaluator.evaluate(LearningEvaluator.java:61) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.expr.instruct.WithParam.getSelectValue(WithParam.java:322) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.expr.instruct.Instruction.assembleParams(Instruction.java:200) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.expr.instruct.CallTemplate$CallTemplateElaborator.lambda$elaborateForPush$0(CallTemplate.java:590) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.expr.instruct.NamedTemplate.expand(NamedTemplate.java:247) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.expr.instruct.CallTemplate$CallTemplateElaborator.lambda$elaborateForPush$1(CallTemplate.java:633) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.expr.instruct.Block$BlockElaborator.lambda$elaborateForPush$4(Block.java:895) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.expr.instruct.FixedElement$FixedElementElaborator.lambda$elaborateForPush$0(FixedElement.java:640) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.expr.instruct.DocumentInstr$DocumentInstrElaborator.lambda$elaborateForItem$3(DocumentInstr.java:392) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.expr.elab.OptionalItemEvaluator.evaluate(OptionalItemEvaluator.java:41) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.expr.elab.LearningEvaluator.evaluate(LearningEvaluator.java:61) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.expr.instruct.WithParam.getSelectValue(WithParam.java:322) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.expr.instruct.Instruction.assembleParams(Instruction.java:200) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.expr.instruct.CallTemplate$CallTemplateElaborator.lambda$elaborateForPush$1(CallTemplate.java:625) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.expr.instruct.Block$BlockElaborator.lambda$elaborateForPush$4(Block.java:895) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.expr.instruct.FixedElement$FixedElementElaborator.lambda$elaborateForPush$0(FixedElement.java:640) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.expr.instruct.TemplateRule.applyLeavingTail(TemplateRule.java:376) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.trans.Mode.handleRuleNotNull(Mode.java:587) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:521) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.trans.rules.TextOnlyCopyRuleSet.process(TextOnlyCopyRuleSet.java:72) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:518) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.trans.XsltController.applyTemplates(XsltController.java:684) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.s9api.AbstractXsltTransformer.applyTemplatesToSource(AbstractXsltTransformer.java:430) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.s9api.XsltTransformer.transform(XsltTransformer.java:358) ~[validator-2.16.2-shaded.jar:2.16.2]
    at net.sf.saxon.jaxp.TransformerImpl.transform(TransformerImpl.java:75) ~[validator-2.16.2-shaded.jar:2.16.2]
    at org.mustangproject.ZUGFeRD.ZUGFeRDVisualizer.applyXSLTToPDF(ZUGFeRDVisualizer.java:432) ~[validator-2.16.2-shaded.jar:2.16.2]
    at org.mustangproject.ZUGFeRD.ZUGFeRDVisualizer.toFOP(ZUGFeRDVisualizer.java:250) ~[validator-2.16.2-shaded.jar:2.16.2]
    at org.mustangproject.ZUGFeRD.ZUGFeRDVisualizer.toPDF(ZUGFeRDVisualizer.java:293) ~[validator-2.16.2-shaded.jar:2.16.2]
    at d.b.z.x.r.s.ValidatorBackend.addViewCopyTo(ValidatorBackend.java:162) ~[classes/:na]
    at d.b.z.x.r.c.ValidationController.submitAndReturnAll(ValidationController.java:51) ~[classes/:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
    at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-6.0.21.jar:6.0.21]
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-6.0.21.jar:6.0.21]
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) ~[spring-webmvc-6.0.21.jar:6.0.21]
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:892) ~[spring-webmvc-6.0.21.jar:6.0.21]
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:798) ~[spring-webmvc-6.0.21.jar:6.0.21]
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-6.0.21.jar:6.0.21]
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1081) ~[spring-webmvc-6.0.21.jar:6.0.21]
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:974) ~[spring-webmvc-6.0.21.jar:6.0.21]
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) ~[spring-webmvc-6.0.21.jar:6.0.21]
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914) ~[spring-webmvc-6.0.21.jar:6.0.21]
    at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:590) ~[tomcat-embed-core-10.1.24.jar:6.0]
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) ~[spring-webmvc-6.0.21.jar:6.0.21]
    at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) ~[tomcat-embed-core-10.1.24.jar:6.0]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:195) ~[tomcat-embed-core-10.1.24.jar:10.1.24]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.24.jar:10.1.24]
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) ~[tomcat-embed-websocket-10.1.24.jar:10.1.24]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.24.jar:10.1.24]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.24.jar:10.1.24]
    at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-6.0.21.jar:6.0.21]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.21.jar:6.0.21]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.24.jar:10.1.24]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.24.jar:10.1.24]
    at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-6.0.21.jar:6.0.21]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.21.jar:6.0.21]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.24.jar:10.1.24]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.24.jar:10.1.24]
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-6.0.21.jar:6.0.21]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.21.jar:6.0.21]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.24.jar:10.1.24]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.24.jar:10.1.24]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167) ~[tomcat-embed-core-10.1.24.jar:10.1.24]
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) ~[tomcat-embed-core-10.1.24.jar:10.1.24]
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) ~[tomcat-embed-core-10.1.24.jar:10.1.24]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115) ~[tomcat-embed-core-10.1.24.jar:10.1.24]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) ~[tomcat-embed-core-10.1.24.jar:10.1.24]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[tomcat-embed-core-10.1.24.jar:10.1.24]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344) ~[tomcat-embed-core-10.1.24.jar:10.1.24]
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:389) ~[tomcat-embed-core-10.1.24.jar:10.1.24]
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-10.1.24.jar:10.1.24]
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:896) ~[tomcat-embed-core-10.1.24.jar:10.1.24]
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741) ~[tomcat-embed-core-10.1.24.jar:10.1.24]
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-10.1.24.jar:10.1.24]
    at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190) ~[tomcat-embed-core-10.1.24.jar:10.1.24]
    at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-10.1.24.jar:10.1.24]
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) ~[tomcat-embed-core-10.1.24.jar:10.1.24]
    at java.base/java.lang.Thread.run(Thread.java:840) ~[na:na]
@ustegrew
Copy link
Author

ustegrew commented Mar 5, 2025

I'll provide an anonymized test file tomorrow - Just wanted to get this online now. Thanks so much for your work and efforts!

@ustegrew
Copy link
Author

ustegrew commented Mar 6, 2025

Here two test files (diff should reveal the pain point):

  • zugferd-invoice_can_create_viewcopy.xml
    I can create a view copy from this file
  • zugferd-invoice_can_not_create_viewcopy.xml.xml
    I can NOT create a view copy from this file

zugferd-invoice_can_create_viewcopy.xml.txt

zugferd-invoice_can_not_create_viewcopy.xml.xml.txt

@jstaerk jstaerk changed the title Exception when generating View copy Exception when generating PDF Mar 10, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant