2016-11-11 1 views
2

Я разрабатываю приложение в Xamarin для Android. Я уже создал HTML-файл, используя StringBuilder. Теперь у меня есть файл HTML в моей внешней памяти, и для PDF необходим тот же шаблон. Поэтому, когда я пытаюсь преобразовать HTML в PDF, используя iTextSharp, используя XML-рабочий & PDFSharp библиотеки, я получаю ошибки сборки из-за отсутствия System.Drawing.dll. Затем я нашел на форумах Xamarin & Stackoverflow ссылки, которые не поддерживаются для Xamarin.Android.Невозможно создать PDF из HTML в Xamarin Android

Может кто-нибудь скажет мне другую альтернативу о том, как создать шаблон для PDF или любой другой рабочий пакет nuget для Xamarin.Android, который преобразует html-файл в pdf.

ПРИМЕЧАНИЕ: Я могу сгенерировать PDF, но не смог преобразовать HTML в PDF.

Было бы очень полезно !. Благодаря тонну!.

+0

Взгляните на этот вопрос http://stackoverflow.com/questions/7597103/generate-pdf-based -on-html-code-itextsharp-pdfsharp – InitLipton

+0

@InitLipton Я проверил, но получил следующую ошибку: «Не удалось установить пакет« HtmlRenderer.Core 1.5.0.5 ». Вы пытаетесь установить этот пакет в проект, целью которого является« MonoAndroid, Version = v6.0 ', но пакет не содержит ссылок на сборки или файлов содержимого, которые являются совместимыми с этой основой. Для получения дополнительной информации обратитесь к автору пакета. » И в моих свойствах проекта Compile с использованием версии Android предоставляет только опцию« Использовать последнюю платформу ». Таким образом, я также не могу изменить версию. – sha

ответ

1

Используйте NuGet пакет Xam.iTextSharpLGPL

Ниже приведен пример кода

using System.IO; 
using iTextSharp.text; 
using iTextSharp.text.pdf; 
using iTextSharp.text.html.simpleparser; 
using Android.Graphics; 


    string path = Android.OS.Environment.ExternalStorageDirectory.Path; 
    string pdfPath = System.IO.Path.Combine(path, "samplee.pdf"); 
    System.IO.FileStream fs = new FileStream(pdfPath, FileMode.Create);  
    Document document = new Document(PageSize.A4); 
    PdfWriter writer = PdfWriter.GetInstance(document, fs); 
    HTMLWorker worker = new HTMLWorker(document); 
    document.Open(); 
    StringBuilder html = new StringBuilder(); 
    html.Append("<? xml version='1.0' encoding='utf-8' ?><html><head><title></title></head>"); 
    html.Append("<CENTER>Simple Sample html</H1>"); 
    html.Append("<H4>By User1</H4>"); 
    html.Append("<H2>Demonstrating a few HTML features</H2>"); 
    html.Append("</CENTER>"); 
    html.Append("<p>HTML doesn't normally use line breaks for ordinary text. A white space of any size is treated as a single space. This is because the author of the page has no way of knowing the size of the reader's screen, or what size type they will have their browser set for."); 
    html.Append("</p></body</html>"); 
    TextReader reader = new StringReader(html.ToString()); 
    worker.StartDocument(); 
    worker.Parse(reader); 
    worker.EndDocument(); 
    worker.Close(); 
    document.Close(); 
    writer.Close(); 
    fs.Close();