我正在尝试构建pdf来数字化我公司的报告系统。我使用过iTextSharp,到目前为止它看起来很棒,但我的边缘似乎没有正常工作。我已经将边距设置为配置文件,并且左右边距效果很好,但无论顶部和底部边距如何,我的段落似乎都会在页面下开始约30%。这是我正在使用的代码:
public int PrintPdf()
{
//Getting the path
//Path.GetFileNameWithoutExtension("Test_Doc_Print") + ".pdf");
object OutputFileName = this._path;
//Making the PDF Doc
iTextSharp.text.Document PDFReport = new iTextSharp.text.Document
(
PageSize.A4.Rotate(),
/*this._left,
this._right,
this._top,
this._bottom*/
10,
10,
10,
10
);
//Setting The Font
string fontpath = @"C:\Windows\Fonts\";
BaseFont monoFont = BaseFont.CreateFont(fontpath + "Consola.ttf", BaseFont.CP1252, BaseFont.EMBEDDED);
Font fontPDF = new Font(monoFont, this._fontSize);
// create file stream for writing the PDF
FileStream fs = new FileStream(this._path, FileMode.Create, FileAccess.ReadWrite);
//FileStream fs = new FileStream(@"c:\\Reportlocation", FileMode.Create);
// Create an FCFC scan object to convert TextToPrint page at a time
FCFCScanner page = new FCFCScanner(this._text);
// Create PDF writer and associate with file stream
//iTextSharp.text.pdf.PdfWriter writer = new iTextSharp.text.pdf.PdfWriter.GetInstance(PDFReport, fs);
PdfWriter writer = PdfWriter.GetInstance(PDFReport, fs);
//Opening the PDF Doc
PDFReport.Open();
//Load each page from the string into the PDF
page.NextPage();
do
{
if (page.PageLength > 0)
{
Paragraph prg = new Paragraph(page.Page, fontPDF);
PDFReport.Add(prg);
PDFReport.NewPage();
page.NextPage();
}
} while (page.MorePages);
PDFReport.Close();
return (0);
}
我已将边距设置为10(现在硬编码)以显示我正在使用的内容。该程序应该读取我从StringBuider类发送的字符串。 它旨在一次接收一页文本并将其转换为PDF文档。
好的,问题是:当构建页面时,第一段不会从上边距开始。如果我减少保证金,它不会将段落移动到新的保证金。这使得我的PDF文件更长,因为在打印机页面上轻松放置的文本需要两个PDF页面。任何帮助让我的段落只是从顶部边缘开始将非常感激。
我对编程比较陌生,这是我的第一篇文章,所以如果您需要更多信息,请告诉我,我会添加更多信息。