生成c#中xml打印的发票

时间:2016-05-11 11:16:40

标签: c# .net xml pdf-generation razorengine

我已经从休息服务的json帖子创建了一个xml文件,并希望使用该信息为文件/请求中的每个-Node创建一个pdf文件。如何使用模板和我给定的变量生成这样的pdf?如何以这种方式填充变量以及如何创建单独的文件? 我调查了Fo.Net,但发现项目似乎已经死了,模板很复杂。

然后我调查了PrinceXML,我被困在如何使用模板引擎替换模板中的变量?我可以使用RazorEngine,如果是的话,它会是什么样的?

最后,是否存在与princeXML一样好的开源替代方案?

HTML:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
<title>Test</title></head>
<body>
Hello World! FNR: <!-- how would one add a variable here? --><br>
<br>
</body>
</html>

XML:

<?xml version="1.0" encoding="utf-8"?>
<PdfPrinter>
  <Document>
    <FNR>FNR</FNR>
    <KNR>KNR</KNR>
    <G>G</G>
    <LN>LN</LN>
</Document>
  <Document>
    <FNR>  00</FNR>
    <KNR>555555</KNR>
    <G>1</G>
    <LN>02</LN>
</Document>
</PdfPrinter>

1 个答案:

答案 0 :(得分:0)

使用Nustache模板html应如下所示:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
<title>Test</title></head>
<body><br>
Hello World! FNR: {{fnr}}, KNR: {{knr}} Uhrzeit: {{date}} <!-- how would one add a variable here? --><br>
<br>
<br>
</body>
</html>

{{fnr}}标签可以通过以下代码替换为您自己的数据:

var data = new {knr =“123456”,fnr = 10,date = DateTime.Now.ToString()};

或:

 internal class Customer
    {
        public string CustomerID {get; set;}
        public string Forename { get; set; }
        public string Surname { get; set; }
    }



Customer user = new Customer();
Render.FileToFile(templateFile, user, outputFile);

这需要包Nustache(所以:使用Nustache.Core;是必要的)。它可以在githubNuGet处找到。