Sto cercando di trovare un SDK in grado di generare PDF da OpenXml. Ho usato Open Xml Power Tools per convertire XML aperto e html e utilizzando iTextSharp per analizzare l'Html in PDF. Ma il risultato è un PDF dall'aspetto terribile.Generazione di PDF da OpenXml
Non ho ancora provato il parser RTF di iText. Se vado in questa direzione, finirò per aver bisogno di un convertitore RTF rendendo la conversione semplice un incubo a doppio passo.
Sembra quasi che potrei finire per scrivere un convertitore personalizzato basato su strumenti di alimentazione OpenXml al convertitore html. Qualsiasi consiglio è apprezzato. In questo momento non riesco a finire per un convertitore professionale perché le licenze sono troppo costose (Aspose Word/TxText).
ho pensato io metterò un po 'di sforzo in mia indagine. Sono tornato all'utilità di conversione "http://msdn.microsoft.com/en-us/library/ff628051.aspx" e ho esaminato il suo codice. Data la cosa più grande che mancava era leggere gli stili sottostanti e generare un attributo di stile. Il PDF sembrava molto meglio con la limitazione di non gestire il carattere di tipo true personalizzato. Altre indagini domani. Spero che abbia fatto qualcosa del genere/affrontato strani problemi e possa fare luce.
private static StringDictionary GetStyle(XElement el)
{
IEnumerable jcL = el.Elements(W.jc);
IEnumerable spacingL = el.Elements(W.spacing);
IEnumerable rPL = el.Elements(W.rPr);
StringDictionary sd = new StringDictionary();
if (HasAttribute(jcL, W.val)) sd.Add("text-align", GetAttribute(jcL, W.val));
// run prop exists
if (rPL.Count() > 0)
{
XElement r = rPL.First();
IEnumerable ftL = el.Elements(W.rFonts);
if (r.Element(W.b) != null) sd.Add("font-weight", "bolder");
if (r.Element(W.i) != null) sd.Add("font-style", "italic");
if (r.Element(W.u) != null) sd.Add("text-decoration", "underline");
if (r.Element(W.color) != null && HasAttribute(r.Element(W.color), W.val)) sd.Add("color", "#" + GetAttribute(r.Element(W.color), W.val));
if (r.Element(W.rFonts) != null)
{
//
if(HasAttribute(r.Element(W.rFonts), W.cs)) sd.Add("font-family", GetAttribute(r.Element(W.rFonts), W.cs));
else if (HasAttribute(r.Element(W.rFonts), W.hAnsi)) sd.Add("font-family", GetAttribute(r.Element(W.rFonts), W.hAnsi));
}
if (r.Element(W.sz) != null && HasAttribute(r.Element(W.sz), W.val)) sd.Add("font-size", GetAttribute(r.Element(W.sz), W.val) + "pt");
}
return sd.Keys.Count > 0 ? sd : null;
}
Esempio: http://msdn.microsoft.com/en-us/library/ff628051.aspx – Shrini