Fixe la génération du code LaTeX

This commit is contained in:
2016-11-10 01:03:49 +01:00
parent aa966aaa83
commit c174187b9f
2 changed files with 77 additions and 17 deletions

View File

@ -10,6 +10,59 @@ using Microsoft.AspNet.Mvc.ViewFeatures;
namespace Yavsc.Helpers
{
public class TeXString {
public class Replacement {
string target;
string replacement;
public Replacement(string target, string replacement){
this.target=target;
this.replacement=replacement;
}
public string Execute(string source)
{
return source.Replace(target,replacement);
}
}
public readonly static Replacement[] SpecialCharsToCommands =
{
new Replacement("<","\\textless"),
new Replacement(">","\\textgreater"),
new Replacement("©","\\copyright"),
new Replacement("®","\\textregistered"),
new Replacement("\\","\\textbackslash"),
new Replacement("™","\\texttrademark"),
new Replacement("¶","\\P"),
new Replacement("|","\\textbar"),
new Replacement("%","\\%"),
new Replacement("{","\\{"),
new Replacement("}","\\}"),
new Replacement("_","\\_"),
new Replacement("#","\\#"),
new Replacement("$","\\$"),
new Replacement("_","\\_"),
new Replacement("¿","\\textquestiondown"),
new Replacement("§","\\S"),
new Replacement("£","\\pounds"),
new Replacement("&","\\&"),
new Replacement("¡","\\textexclamdown"),
new Replacement("†","\\dag"),
new Replacement("","\\textendash")
};
string data;
public TeXString(string str) {
data = str;
foreach (var r in SpecialCharsToCommands) {
data = r.Execute(data);
}
}
override public string ToString()
{
return data;
}
}
public static class TeXHelpers
{
public static string NewLinesWith(this string target, string separator)
@ -19,6 +72,13 @@ namespace Yavsc.Helpers
return string.Join(separator, items);
}
public static TeXString ToTeX(string target, string lineSeparator="\n\\\\")
{
if (target==null) return null;
return new TeXString(target.NewLinesWith(lineSeparator));
}
public static string RenderViewToString(
this Controller controller, IViewEngine engine,
IHttpContextAccessor httpContextAccessor,

View File

@ -69,28 +69,28 @@
\def\FactureNum {@Model.Id.ToString()} % Numéro de facture
\def\FactureAcquittee {non} % Facture acquittée : oui/non
\def\FactureLieu {@proaddrn} % Lieu de l'édition de la facture
\def\FactureObjet {Facture : @Model.Title} % Objet du document
\def\FactureObjet {Facture : @TeXHelpers.ToTeX(Model.Title)} % Objet du document
% Description de la facture
\def\FactureDescr {
@Model.Description
@TeXHelpers.ToTeX(Model.Description)
}
% Infos Client
\def\ClientNom{@to.UserName} % Nom du client
\def\ClientNom{@TeXHelpers.ToTeX(to.UserName)} % Nom du client
\def\ClientAdresse{
% Adresse du client
@if (!string.IsNullOrWhiteSpace(PostalAddress)) {
<text> @PostalAddress\\</text> }
<text> @TeXHelpers.ToTeX(PostalAddress)\\</text> }
@if (!string.IsNullOrWhiteSpace(to.PhoneNumber)) {<text>
@to.PhoneNumber <text>\\</text>
@TeXHelpers.ToTeX(to.PhoneNumber)<text>\\</text>
</text>}
E-mail: @to.Email
E-mail: @TeXHelpers.ToTeX(to.Email)
}
% Liste des produits facturés : Désignation, prix
@if (Model.Bill!=null) { foreach (CommandLine line in Model.Bill) {
<text>\AjouterService{@line.Description}{@line.Count}{@line.UnitaryCost.ToString("F2",CultureInfo.InvariantCulture)}
<text>\AjouterService{@TeXHelpers.ToTeX(line.Description)}{@line.Count}{@line.UnitaryCost.ToString("F2",CultureInfo.InvariantCulture)}
</text>} }
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@ -106,24 +106,24 @@
\setlength{\parindent}{0pt}
\renewcommand{\headrulewidth}{0pt}
\cfoot{ @if (!string.IsNullOrWhiteSpace(from.UserName)) { @from.UserName }
@if (!string.IsNullOrWhiteSpace(proaddrm)) { <text> - @proaddrm </text> } \newline
\small{ E-mail: @from.Email
@if (!string.IsNullOrWhiteSpace(from.PhoneNumber)) { <text> - Téléphone fixe: @from.PhoneNumber </text> }
\cfoot{ @TeXHelpers.ToTeX(from.UserName) @if (!string.IsNullOrWhiteSpace(proaddrm)) { <text> - @TeXHelpers.ToTeX(proaddrm) </text> } \newline
\small{ E-mail: @TeXHelpers.ToTeX(from.Email) @if (!string.IsNullOrWhiteSpace(from.PhoneNumber)) { <text> - Téléphone fixe: @TeXHelpers.ToTeX(from.PhoneNumber) </text> }
}
}
\begin{document}
% Logo de la société
@if (from.Avatar != null) {<text>
\includegraphics{@from.Avatar}</text>
} else { <text>
%\includegraphics{logo.png}</text>
@if (from.Avatar != null) {
<text>\includegraphics{@from.Avatar}
</text>
} else {
<text>%\includegraphics{logo.png}
</text>
}
% Nom et adresse de la société
@from.UserName \\
@proaddrn
@TeXHelpers.ToTeX(from.UserName) \\
@TeXHelpers.ToTeX(proaddrn)
Facture n°\FactureNum