2015-05-07 2 views
3

Я хотел бы преобразовать поток Svg в Pdf, используя ABCPdf в C#. Поток, который я получаю, содержит XML Svg. Я использую метод Doc.AddImageHtml, предоставленный ABCPdf. Поскольку я получаю только XML из потока, я префикс и суффикс html и тегов тела к нему, чтобы сделать его HTML. Я использую следующий код для этого:ABCPdf Преобразование потока Svg в PDF

Doc abcPdfDoc = new Doc();         
XmlDocument xDocument = new XmlDocument(); 
xDocument.Load(stream); 
abcPdfDoc.AddImageHtml("<html><body>" + xDocument.InnerXml + "</html></body>"); 
abcPdfDoc.Save(@"MyPdf.pdf"); 
abcPdfDoc.Clear(); 

Вопрос заключается в том, что таблицы в моем SVG не сохраняются. Результат в моем PDF-тексте без таблиц. (Rect to specific)

Любые указания на то, что можно сделать, чтобы сохранить формат или лучший способ добиться того же, используя ABCPdf?

ответ

2

Вам не нужно использовать AddImageHtml. Предполагая, что вы используете довольно стандартный SVG, основанный на спецификации SVG Tiny, вы можете просто Doc.Read SVG прямо. Это быстро, просто и эффективно, и оно хорошо работает для большинства документов SVG.

Если ваш SVG более сложный, вы можете использовать двигатель Gecko. Для этого вы можете использовать AddImageHtml с настройкой SVG для свойства Doc.HtmlOptions.Engine для EngineType.Gecko. Двигатель Gecko включает в себя большие накладные расходы, но обеспечивает полнофункциональное покрытие спецификации SVG.

+0

Спасибо за ответ. Я попытался использовать Doc.Read, передав Stream, но он говорит, что формат не распознается. Если я передаю файл SVG с диска на Doc.Read, он будет успешным. С потоком это не работает для меня. Также, как я уже упоминал, поток, который я получаю, содержит XML Svg. Я попробую установить EngineType и посмотреть, работает ли он. – Neelima

+0

Он работал, когда я использовал движок Gecko. Большое спасибо!! – Neelima

Смежные вопросы