Проблема с добавлением параграфов в pdf при использовании itextsharp - PullRequest
1 голос
/ 21 февраля 2011

У меня есть следующий код, чей вывод в pdf-файле:

Форма MTR 17

ОПЛАТА ЗАЯВЛЕННОГО ОФИЦЕРА

                                DDO Code: 703

Код:

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.IO;

using iTextSharp.text;
using iTextSharp.text.pdf;
public partial class new_salary : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        HttpContext.Current.Response.Clear();
        HttpContext.Current.Response.ContentType = "application/pdf";

        // Create PDF document
        Document pdfDocument = new Document(PageSize.A4, 70, 45, 40, 25);

        PdfWriter wri = PdfWriter.GetInstance(pdfDocument, new FileStream("d://JudgeSalary.pdf", FileMode.Create));

        PdfWriter.GetInstance(pdfDocument, HttpContext.Current.Response.OutputStream);

        pdfDocument.Open();

        Chunk boo = new Chunk("Form M.T.R. 17");


        Paragraph main1 = new Paragraph("Form M.T.R. 17 \nPAY-BILL OF GAZETTED OFFICER");
        main1.Alignment = Element.ALIGN_CENTER;
        main1.Font.SetStyle(Font.BOLD);

        Paragraph main1a = new Paragraph("          DDO Code: 703");
        main1a.Alignment = Element.ALIGN_RIGHT;





        pdfDocument.Add(main1);
        pdfDocument.Add(main1a);

        pdfDocument.Close();
        HttpContext.Current.Response.End();
    }
}

Я хочу, чтобы результат был:

               **Form M.T.R. 17**

               **PAY-BILL OF GAZETTED OFFICER**                           DDO Code: 703

Как я могу получить вышеупомянутоевыведите «DDO Code: 703» во второй строке абзаца без форматирования текста.Если я добавлю «DDO Code: 703» в «para1», текст будет выделен жирным шрифтом. Я хочу, чтобы этот вывод был выровнен по центру Примите 'DDO Code: 703', который я хочу выровнять по правому краю.

Я не хочу, чтобы он отображался жирным шрифтом, а также во второй строкеабзаца.как мне это сделать?

Ответы [ 2 ]

2 голосов
/ 21 февраля 2011

Используя iTextSharp, вы можете добавить текст с Chunk, Phrase или Paragraph. См. Ссылку на то, как они работают здесь . По сути, вы захотите собрать свой абзац в несколько фраз или кусков, чтобы учесть разные стили шрифта.

Для достижения желаемого положения лучше всего подойдет PdfPTable с соответствующим образом выровненными элементами PdfPCell. Примерно так:

PdfPTable table = new PdfPTable(2);
PdfPCell cell = new PdfPCell(new Phrase("Form M.T.R. 17", FontFactory.GetFont(FontFactory.TIMES_ROMAN, 12, iTextSharp.text.Font.BOLD)));
cell.Colspan = 2;
cell.Border = 0;
cell.HorizontalAlignment = Element.ALIGN_LEFT; 
table.AddCell(cell);
table.AddCell(new Phrase("PAY-BILL OF GAZETTED OFFICER"));

PdfPCell rCell = new PdfPCell(new Phrase("DDO Code: 703", FontFactory.GetFont(FontFactory.TIMES_ROMAN, 12)));
rCell.Border = 0;
rCell.HorizontalAlignment = Element.ALIGN_RIGHT; 
table.AddCell(rCell);
pdfDocument.Add(table);
0 голосов
/ 22 февраля 2011

Абзац будет в новой строке, попробуйте использовать фразу следующим образом:

Phrase main1 = new Phrase("Form M.T.R. 17 \nPAY-BILL OF GAZETTED OFFICER");
main1.Font.SetStyle(Font.BOLD);

Phrase main1a = new Paragraph(" DDO Code: 703");

pdfDocument.Add(main1);
pdfDocument.Add(main1a);
...