在C#中,打印宽高比/整页可以通过以下方法实现:
using System.Drawing;
using System.Drawing.Printing;
private void PrintDocument(string text)
{
PrintDocument printDoc = new PrintDocument();
printDoc.PrintPage += (sender, args) =>
{
Graphics graphics = args.Graphics;
Font font = new Font("Arial", 12);
float fontHeight = font.GetHeight();
int startX = 10;
int startY = 10;
int maxWidth = args.MarginBounds.Width;
int maxHeight = args.MarginBounds.Height;
StringFormat format = new StringFormat();
format.Alignment = StringAlignment.Near;
format.LineAlignment = StringAlignment.Near;
int lines;
using (StringFormat sf = new StringFormat())
{
sf.Alignment = StringAlignment.Near;
sf.LineAlignment = StringAlignment.Near;
sf.Trimming = StringTrimming.Word;
lines = graphics.MeasureString(text, font, maxWidth, format, out _, out _).Height / fontHeight;
}
int pages = (int)Math.Ceiling((double)lines / (maxHeight / fontHeight));
for (int page = 1; page <= pages; page++)
{
graphics.DrawString(text, font, Brushes.Black, new RectangleF(startX, startY, maxWidth, maxHeight), format);
args.HasMorePages = page< pages;
startY += maxHeight;
}
};
printDoc.Print();
}
using System.Drawing;
using System.Drawing.Printing;
private void PrintDocument(string text)
{
PrintDialog printDialog = new PrintDialog();
PrintDocument printDoc = new PrintDocument();
printDoc.PrintPage += (sender, args) =>
{
Graphics graphics = args.Graphics;
Font font = new Font("Arial", 12);
float fontHeight = font.GetHeight();
int startX = 10;
int startY = 10;
int maxWidth = args.MarginBounds.Width;
int maxHeight = args.MarginBounds.Height;
StringFormat format = new StringFormat();
format.Alignment = StringAlignment.Near;
format.LineAlignment = StringAlignment.Near;
int lines;
using (StringFormat sf = new StringFormat())
{
sf.Alignment = StringAlignment.Near;
sf.LineAlignment = StringAlignment.Near;
sf.Trimming = StringTrimming.Word;
lines = graphics.MeasureString(text, font, maxWidth, format, out _, out _).Height / fontHeight;
}
int pages = (int)Math.Ceiling((double)lines / (maxHeight / fontHeight));
for (int page = 1; page <= pages; page++)
{
graphics.DrawString(text, font, Brushes.Black, new RectangleF(startX, startY, maxWidth, maxHeight), format);
args.HasMorePages = page< pages;
startY += maxHeight;
}
};
printDoc.PrinterSettings = printDialog.PrinterSettings;
printDoc.Print();
}
这两种方法都可以实现打印宽高比/整页的功能。具体使用哪种方法,需要根据实际情况进行选择。
领取专属 10元无门槛券
手把手带您无忧上云