Динамическое создание .pdfs под свободной лицензией ITextSharp - PullRequest
2 голосов
/ 06 марта 2012

На веб-сайте / сервере ASP.NET C # я использую библиотеку .pdf, называемую ITextSharp, для создания PDF-файлов с текстом и некоторыми изображениями о продукте.

Как обычно, босс не хочет покупать лицензию. Я знаю, что если я использую ITextSharp версии 4.1.6 или ниже, я могу использовать библиотеку под свободной лицензией (не могу ли я?)

Мой вопрос: Будут ли мои старые версии (4.1.6 -) / бесплатные версии соответствовать моим потребностям в создании файла PDF с изображением вверху, текстовым содержимым посередине (некоторые абзацы) и изображение внизу? Могу ли я найти некоторые функции API, недоступные для себя, потому что у меня есть более старые версии?

Не могли бы вы предложить перейти к другому генератору ASP.NET C # .pdf с открытым исходным кодом?

1 Ответ

3 голосов
/ 06 марта 2012

Да, вы можете сделать это и с более старыми версиями. Я приложил код, который использует построитель строк для генерации HTML с itext Sharp.

Document doc = new Document(PageSize.LETTER, 10, 10, 42, 35);
                iTextSharp.text.pdf.PdfWriter wri = iTextSharp.text.pdf.PdfWriter.GetInstance(doc, new FileStream("D:\\PurchaseOrderDetails.pdf", FileMode.Create));
                doc.Open();//
                StringBuilder builder = new StringBuilder();
                builder.Append("<html>");
                builder.Append("<head>");
                builder.Append("</head>");
                builder.Append("<body>");
                builder.Append("<img src=\"D:\\Images\\logo_left.png\" align=\"right\"/>");
                builder.Append("<br/><br/><br/><br>");
                builder.Append("");
                builder.Append("<h1 style=\"font-weight: bold\">Purchase Order Details</h1> ");
                builder.Append("");
                builder.Append("<br /><br /> ");
                builder.Append("<h2 style=\"font-weight: bold\">Purchase Order Information</h2> ");
                builder.Append("<table> ");
                builder.Append("   <tr> ");
                builder.Append("      <td style=\"font-weight: bold\">P.O.Number:</td> ");
                builder.Append("      <td>" + txtPONumber.Text + "</td> ");
                builder.Append("   </tr> ");
                builder.Append("   <tr> ");
                builder.Append("      <td style=\"font-weight: bold\">Vendor:</td> ");
                builder.Append("      <td>" + txtVendorName.Text + "</td> ");
                builder.Append("   </tr> ");
                builder.Append("   <tr> ");
                builder.Append("      <td style=\"font-weight: bold\">Entry Date:</td> ");
                builder.Append("      <td>" + dtpickerEntryDate.SelectedDate + "</td> ");
                builder.Append("   </tr> ");
                builder.Append("   <tr> ");
                builder.Append("      <td style=\"font-weight: bold\">Description:</td> ");
                builder.Append("      <td>" + txtDescription.Text + "</td> ");
                builder.Append("   </tr> ");
                builder.Append("   <tr> ");
                builder.Append("      <td style=\"font-weight: bold\">Ship Method:</td> ");
                builder.Append("      <td>" + drpShipMethod.SelectedItem.Text + "</td> ");
                builder.Append("   </tr> ");
                builder.Append("   <tr> ");
                builder.Append("      <td style=\"font-weight: bold\">Ship Carrier:</td> ");
                builder.Append("      <td>" + drpShipCarrier.SelectedItem.Text + "</td> ");
                builder.Append("   </tr> ");
                builder.Append("   <tr> ");
                builder.Append("      <td style=\"font-weight: bold\">Price:</td> ");
                builder.Append("      <td>" + txtPrice.Text + "</td> ");
                builder.Append("   </tr> ");
                builder.Append("   <tr> ");
                builder.Append("      <td style=\"font-weight: bold\">Shipping Cost:</td> ");
                builder.Append("      <td>" + txtShippingCost.Text + "</td> ");
                builder.Append("   </tr> ");
                builder.Append("   <tr> ");
                builder.Append("      <td style=\"font-weight: bold\">Warranty Status:</td> ");
                builder.Append("      <td>" + txtWarrantyStatus.Text + "</td> ");
                builder.Append("   </tr> ");
                builder.Append("   <tr> ");
                builder.Append("      <td style=\"font-weight: bold\">Part Requirement:</td> ");
                builder.Append("      <td>" + drpPartRequirement.SelectedItem.Text + "</td> ");
                builder.Append("   </tr> ");
                builder.Append("</table> ");
                builder.Append("<br /><br /> ");
                builder.Append(" ");
                builder.Append("<p style=\"text-align: center; font-style: italic; font-size: 10pt\"> ");
                builder.Append("   Thank you for your business! If you have any questions about your order, please contact us at ");
                builder.Append("   800-555-. ");
                builder.Append("</p> ");
                builder.Append("</body>");
                builder.Append("</html>");

                var parsedHtmlElements = HTMLWorker.ParseToList(new StringReader(builder.ToString()), null);
                foreach (var htmlElement in parsedHtmlElements)
                    doc.Add(htmlElement as IElement);

                doc.Close();
...