iTextsharp , PdfPCell.VerticalAlignment и PdfPCell.HorizontalAlignment

Простой способ отправки параметров массива в web api

API

public IEnumerable<Category> GetCategories([FromUri]int[] categoryIds){
 // code to retrieve categories from database
}

Jquery: отправка объекта JSON в качестве параметров запроса

$.get('api/categories/GetCategories',{categoryIds:[1,2,3,4]}).done(function(response){
console.log(response);
//success response
});

Он сгенерирует ваш запрос URL вроде ../api/categories/GetCategories?categoryIds=1&categoryIds=2&categoryIds=3&categoryIds=4

25
задан Brian Tompsett - 汤莱恩 5 May 2017 в 18:10
поделиться

2 ответа

Я думаю, что основная проблема, с которой вы столкнулись, заключается в том, что вы добавляете текст в объекты iTextSharp Paragraph, а затем пытаетесь установить выравнивание этого текста, используя объект PdfPCell, который его содержит. Я не уверен, что свойство PdfPCell.VerticalAlignment предназначено только для текста PdfPCell, или выравнивание объекта Paragraph внутри PdfPCell не имеет никакого эффекта, который вы можете увидеть в своем тесте.

Вы также устанавливаете myCell.HorizontalAlignment и myCell.VerticalAlignment на значение индекса в цикле for. Я думаю, что вы хотели использовать 1 экземпляр из i.

В любом случае, установка свойств PdfPCell HorizontalAlignment и VerticalAlignment работает. Ниже приведен небольшой метод, который демонстрирует это. Я написал это очень свободно, основываясь на том, что вы пытались сделать; если это достаточно близко к тому, что вы пытаетесь сделать, возможно, вы можете использовать это как отправную точку в вашем проекте.

private void TestTableCreation() {
    using (FileStream fs = new FileStream("TableTest.pdf", FileMode.Create)) {
        Document doc = new Document(PageSize.A4);
        PdfWriter.GetInstance(doc, fs);
        doc.Open();

        PdfPTable table = new PdfPTable(4);

        for (int i = -100; i < 100; i++) {
            PdfPCell cell = new PdfPCell(new Phrase(String.Format("Alignment: {0}", i)));
            // Give our rows some height so we can see test vertical alignment.
            cell.FixedHeight = 30.0f;

            // ** Try it **
            //cell.HorizontalAlignment = Element.ALIGN_LEFT;
            //cell.HorizontalAlignment = Element.ALIGN_CENTER;
            cell.HorizontalAlignment = Element.ALIGN_RIGHT;

            cell.VerticalAlignment = Element.ALIGN_TOP;
            //cell.VerticalAlignment = Element.ALIGN_MIDDLE;
            //cell.VerticalAlignment = Element.ALIGN_BOTTOM;

            table.AddCell(cell);
        }

        doc.Add(table);
        doc.Close();
    }
}
36
ответ дан 28 November 2019 в 21:08
поделиться

Я попытался дать прямые целые числа и другие решения, упомянутые здесь. Но у меня ничего не получалось. Комбинация этого работала для меня в методе Композиции.

cell.HorizontalAlignment = Element.ALIGN_CENTER;
cell.VerticalAlignment = Element.ALIGN_MIDDLE;
2
ответ дан 28 November 2019 в 21:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: