我使用的是c#.net,需要将一些数据显示在.pdf文件中。我可以通过使用PdfTable来实现,但它以表格格式显示。 我想要一个简单的格式,如:
我不想要精确的表格格式。我正在使用 iTextSharp dll。 是否可以用上面提到的格式显示数据?
欢迎提出任何建议。
答案 0 :(得分:1)
您可以使用PdfParagraph
类以PDF格式呈现真实文本
答案 1 :(得分:0)
在iTextSharp dll中,您只需通过在字符串中创建table / tr / td结构来传递数据,如下所示:
string strData = string.Emrty;
strData = "<table border='0' cellpadding='0' cellspacing='0' width='100%'>";
strData += "<tr>";
strData += "<td>";
strData += "</td>";
strData += "</tr>";
strData += "</table>";
通过创建数据的table / tr / td结构,只需将此变量数据传递给pdf,然后您将以pdf格式获得结果输出。
答案 2 :(得分:0)
所以当你说你不想要精确的表格格式时,你是在谈论边界吗?如果是这样,我建议使用PdfPTable
并关闭边框。 PdfPTable
中的单元格都基于表格DefaultCell
,因此要为名为t
的表格关闭边框,您可以执行以下操作:
t.DefaultCell.Border = 0;
以下是一个完整的WinForms应用程序,目标是iTextSharp 5.1.1.0,它正是这样做的:
//PdfPTable Example
using System;
using System.ComponentModel;
using System.IO;
using System.Windows.Forms;
using iTextSharp.text;
using iTextSharp.text.pdf;
namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//PDF file to output
string outputFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "Output.pdf");
//Create a basic stream to write to
using (FileStream fs = new FileStream(outputFile, FileMode.Create, FileAccess.Write, FileShare.None))
{
//Create a new PDF document
using (Document doc = new Document())
{
//Bind a the document to the stream
using (PdfWriter w = PdfWriter.GetInstance(doc, fs))
{
//Open our PDF for writing
doc.Open();
//Insert a new page into our output PDF
doc.NewPage();
//Create a three column table
PdfPTable t = new PdfPTable(3);
//Remove the border from the table
t.DefaultCell.Border = 0;
//For the first row we some extra padding
t.DefaultCell.PaddingBottom = 10;
t.AddCell("ColumnA");
t.AddCell("ColumnB");
t.AddCell("ColumnC");
//Reset the padding for the remaining cells
t.DefaultCell.PaddingBottom = 0;
t.AddCell("Value1");
t.AddCell("Value1");
t.AddCell("Value1");
t.AddCell("Value2");
t.AddCell("Value2");
t.AddCell("Value2");
//Add the table to the document
doc.Add(t);
//Close our output PDF
doc.Close();
}
}
}
this.Close();
}
}
}
如果由于某种原因您不希望使用PdfPTable
执行此操作,则可以尝试将其与Paragraph
一起进行黑客攻击,但除非对齐并不重要会让自己头疼。下面的示例使用段落并将段落中的每个“列”格式化为每个20个字符,根据需要填充空格。 注意:这是可变宽度字体的20个字符,因此实际上没有对齐。如果你想要,你可以使用上面的PdfPTable
,或者你将不得不测量那些不好玩的字符串。
//Paragraph Example
using System;
using System.ComponentModel;
using System.IO;
using System.Windows.Forms;
using iTextSharp.text;
using iTextSharp.text.pdf;
namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//PDF file to output
string outputFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "Output.pdf");
//Create a basic stream to write to
using (FileStream fs = new FileStream(outputFile, FileMode.Create, FileAccess.Write, FileShare.None))
{
//Create a new PDF document
using (Document doc = new Document())
{
//Bind a the document to the stream
using (PdfWriter w = PdfWriter.GetInstance(doc, fs))
{
//Open our PDF for writing
doc.Open();
//Insert a new page into our output PDF
doc.NewPage();
//Right-pad each "column" for a total of 20 characters
string FormatString = "{0,-20}{1,-20}{2,-20}";
//Add the first row
doc.Add(new Paragraph(String.Format(FormatString, "ColumnA", "ColumnB", "ColumnC")));
//Add a blank line
doc.Add(new Paragraph(""));
//Add the two data rows
doc.Add(new Paragraph(String.Format(FormatString, "Value1", "Value1", "Value1")));
doc.Add(new Paragraph(String.Format(FormatString, "Value2", "Value2", "Value2")));
//Close our output PDF
doc.Close();
}
}
}
this.Close();
}
}
}