如何使用itext sharp在pdf中仅设置表格的垂直线?

时间:2015-09-25 04:47:47

标签: c# itextsharp

我有一张垂直和水平线条的桌子。但我不想要水平线。我只想要垂直线。我怎么设置它。我预期的o / p是

我的表格代码

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/main_drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">


        <android.support.v7.widget.Toolbar
            android:id="@+id/main_app_toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:background="@color/colorPrimary"
            app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />

        <LinearLayout
            android:id="@+id/main_content_fragments"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_below="@+id/main_app_toolbar"
            android:orientation="horizontal">

            <fragment
                android:id="@+id/activity_fragment_main_event_list"
                class="com.torneyo.torneyoadmin.fragments.EventListFragment"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1" />

            <fragment
                android:id="@+id/activity_fragment_main_event_detail"
                class="com.torneyo.torneyoadmin.fragments.EventDetailFragment"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="3"
                android:background="?android:attr/detailsElementBackground" />

        </LinearLayout>
    </RelativeLayout>

    <android.support.design.widget.NavigationView
        android:id="@+id/main_drawer"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        app:headerLayout="@layout/drawer_header"
        app:itemIconTint="@color/colorAccent"
        app:itemTextColor="@color/colorTextSecondary"
        app:menu="@menu/menu_drawer" />


</android.support.v4.widget.DrawerLayout>

例如:

enter image description here

任何人请帮助

2 个答案:

答案 0 :(得分:6)

您可以更改单元格的边框,使它们只显示垂直线条。如何执行此操作取决于您将单元格添加到表中的方式。

这是两种方法:

<强> 1。您可以明确地创建PdfPCell对象:

PdfPCell cell = new PdfPCell(); cell.AddElement(new Paragraph(“my content”)); cell.Border = PdfPCell.LEFT; table.AddCell(细胞);

在这种情况下,只会显示单元格的边框。对于行中的最后一个单元格,您还应添加右边框:

cell.Border = PdfPCell.LEFT | PdfPCell.RIGHT;

<强> 2。您隐式创建PdfPCell对象:

在这种情况下,您不会自己创建PdfPCell对象,而是让iTextSharp创建单元格。这些单元格将复制DefaultCell级别定义的PdfPTable的属性,因此您需要对其进行更改:

table.DefaultCell.Border = Rectangle.LEFT | Rectangle.RIGHT;
table.addCell("cell 1");
table.addCell("cell 2");
table.addCell("cell 3");

现在所有单元格都没有顶部或底部边框,只有左右边框。你会画出一些额外的线条,但没有人会注意到线条重合。

另见Hiding table border in iTextSharp

例如:

PdfPTable table = new PdfPTable(5);
table.TotalWidth = 510f;//table size
table.LockedWidth = true;
table.SpacingBefore = 10f;//both are used to mention the space from heading
table.DefaultCell.HorizontalAlignment = Element.ALIGN_LEFT;
table.DefaultCell.Border = PdfPCell.LEFT | PdfPCell.RIGHT;
table.AddCell(new Phrase("    SL.NO", font1));
table.AddCell(new Phrase("   SUBJECTS", font1));
table.AddCell(new Phrase("   MARKS", font1));
table.AddCell(new Phrase("   MAX MARK", font1));
table.AddCell(new Phrase("   CLASS AVG", font1));
Doc.Add(table);

无需多次定义DefaultCell的属性。没有必要像这样嵌套Phrase构造函数:new Phrase(new Phrase("content"))

答案 1 :(得分:0)

布鲁诺的回答并没有帮助我,但我得到了一个想法,也许是因为那是在2015年,但这就是我所做的。 我宣布一张桌子

PdfPTable table2 = new PdfPTable(8);

定义宽度..

table2.WidthPercentage = 100;

最后只放置了我喜欢的边框

table2.DefaultCell.Border = Rectangle.RIGHT_BORDER;
table2.DefaultCell.Border = Rectangle.LEFT_BORDER;

当然,如果你想用它来显示。

table2.AddCell(new Phrase("Total Amount", ftxt));
table2.AddCell(new Phrase("Another text", ftxt));

然后将其添加到pdf。

doc.Add(table2);

如果您没有指定,iTextSharp似乎有内置的列/行,如单元格类型。