我正在尝试使用.NET框架提供的PrintDocument将khmer脚本(unicode)字符串发送到打印机.
不幸的是,在我看来,Graphics.DrawString()没有正确呈现高棉脚本.
平台:Windows 7 Ultimate
IDE:VS 2010 Ultimate
以下是示例代码:
void printDoc_PrintPage(object sender, PrintPageEventArgs e)
{
var font = new Font("Khmer UI", 12);
var text = "??????"; // "Hello"
e.Graphics.DrawString(text, font, Brushes.Black, 100, 100);
}
Run Code Online (Sandbox Code Playgroud) 我正在构建一个需要使用PrintDocument方法进行打印的ASP.NET应用程序:
PrintDocument.Print()
Run Code Online (Sandbox Code Playgroud)
使用IIS Express在开发环境中正常打印.将其发布到Intranet IIS服务器时,打印失败,我认为这是由aspnet工作进程的权限问题引起的.
我试图做以下事情但没有成功:
<identity impersonate="true" username="username" password="*****"/>在web.config文件中添加了<validation validateIntegratedModeConfiguration="false"/>到<system.webServer>部分.有什么帮助吗?
根据文档,添加这些代码应该为打印文档添加边距,但是当我在我的代码中使用它时,我看不到任何边距被添加.我对代码的使用是否正确?以下是MSDN的代码:
printFont = new Font("Arial", 10);
PrintDocument pd = new PrintDocument();
pd.PrintPage += new PrintPageEventHandler(pd_PrintPage);
pd.PrinterSettings.PrinterName = printer;
Margins margins = new Margins(100,100,100,100);
pd.DefaultPageSettings.Margins = margins;
pd.Print();
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
printDoc = new PrintDocument();
PrinterSettings printSettings = new PrinterSettings();
PaperSize paperSize = new PaperSize("Receipt", 350, 700);
Margins margin = new Margins(2000, 1000, 2000, 1000);
printDoc.DefaultPageSettings.PaperSize = paperSize;
printDoc.PrintPage += new PrintPageEventHandler(pdoc_PrintPage);
PrintPreviewDialog printPreview = new PrintPreviewDialog();
printPreview.Document = printDoc;
DialogResult result = printPreview.ShowDialog();
printDoc.DefaultPageSettings.Margins = margin;
if (result == DialogResult.OK) …Run Code Online (Sandbox Code Playgroud) 我正在使用带有Winforms的C#创建一个应用程序,现在我需要在热敏打印机上打印销售收据.要做到这一点,我正在创建一个文本文件,并使用它读取它进行打印,PrintDocument 但我不能这样做,因为我不知道如何配置纸张大小,在纸张上对齐文本中心,以及其他配置.当我打印文本文件打印,但所有凌乱,并在打印结束后纸张没有停止.
我怎么能这样做?
试.
private PrintDocument printDocument = new PrintDocument();
private static String RECEIPT = Environment.CurrentDirectory + @"\comprovantes\comprovante.txt";
private String stringToPrint = "";
private void button1_Click(object sender, EventArgs e)
{
generateReceipt();
printReceipt();
}
private void generateReceipt()
{
FileStream fs = new FileStream(COMPROVANTE, FileMode.Create);
StreamWriter writer = new StreamWriter(fs);
writer.WriteLine("==========================================");
writer.WriteLine(" NOME DA EMPRESA AQUI ");
writer.WriteLine("==========================================");
writer.Close();
fs.Close();
}
private void printReceipt()
{
FileStream fs = new FileStream(COMPROVANTE, FileMode.Open);
StreamReader sr = new StreamReader(fs);
stringToPrint = sr.ReadToEnd();
printDocument.PrinterSettings.PrinterName = …Run Code Online (Sandbox Code Playgroud) 我最近开始使用Python。我在Couchdb中有一个名为Student的数据库。我在其中具有[英语,数学,科学,总数,百分比]等属性。我想使用python显示我的学生数据库中的所有文档。我无法访问所有文件。我尝试了以下代码,但没有工作
couch = couchdb.Server()
db = couch['student']
rows = db.view('_all_docs', include_docs=True)
for row in rows:
doc = db.get(row)
print(doc['english'])
Run Code Online (Sandbox Code Playgroud) 我想使用pdf打印机第二次打印现有的pdf文件。
我尝试使用PrintDocument。但是,如何告诉PrintDocument现有文档的名称呢?
提前致谢!
我尝试使用IronPdf从 html打印 pdf ,但结果留下了边框。有没有办法在我的 PrintDocument 中设置“适合页面”?
这是我的代码:
public static void PrintDocument(string printer, bool landscape, PdfDocument pdfDocument, Duplexing duplex)
{
var printDocument = pdfDocument.GetPrintDocument();
printDocument.PrinterSettings.PrinterName = printer;
printDocument.DefaultPageSettings.Landscape = landscape;
printDocument.PrinterSettings.Duplex = DuplexMapping(duplex);
printDocument.PrinterSettings.DefaultPageSettings.PaperSize.RawKind = (int)PaperKind.A4;
printDocument.Print();
}
Run Code Online (Sandbox Code Playgroud) 在我的WinForms应用程序中,可以在许多位置打印数据.每次用户想要打印时,我都会创建一个新的PrintDocument实例,该实例用于当前的打印作业,然后进行处理.一切正常,但"打印"对话框始终设置回默认打印机及其默认参数.如果选择了另一台打印机,则用户必须一次又一次地选择它.
这是创建一个全局PrintDocument实例并为应用程序中的所有打印作业共享它的常用方法吗?像这样,将始终使用最后选择的打印机.或者还有其他方法吗?
谢谢你,彼得
我有一个Winforms应用程序,它生成自己的PrintDocument对象进行打印.它在我自己的测试中在XP和Windows 7中运行良好,但是当用户选择带有打开文档的打印命令时,一个用户在Vista中遇到以下异常:
************** Exception Text **************
System.ArgumentException: Handle 0 is not valid.
at System.Drawing.Printing.PrinterSettings.SetHdevmode(IntPtr hdevmode)
at System.Windows.Forms.PrintDialog.UpdatePrinterSettings(IntPtr hDevMode, IntPtr hDevNames, Int16 copies, Int32 flags, PrinterSettings settings, PageSettings pageSettings)
at System.Windows.Forms.PrintDialog.ShowPrintDialog(IntPtr hwndOwner, WndProc hookProcPtr, PRINTDLG data)
at System.Windows.Forms.PrintDialog.RunDialog(IntPtr hwndOwner)
at System.Windows.Forms.CommonDialog.ShowDialog(IWin32Window owner)
at System.Windows.Forms.CommonDialog.ShowDialog()
at Deck_Studio.DSMain.PrintDeck(Object sender, EventArgs e)
at System.Windows.Forms.MenuItem.OnClick(EventArgs e)
at System.Windows.Forms.MenuItem.MenuItemData.Execute()
at System.Windows.Forms.Command.Invoke()
at System.Windows.Forms.Command.DispatchID(Int32 id)
at System.Windows.Forms.Control.WmCommand(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ContainerControl.WndProc(Message& m)
at System.Windows.Forms.Form.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at …Run Code Online (Sandbox Code Playgroud) 我试图将一个字符串放在printdocument上.我用图像完成了以下操作并且它可以工作,但似乎对字符串不起作用.
这是我用来居中图像的代码
e.Graphics.DrawImage(logo, (e.MarginBounds.Width / 2) - (logo.Width / 2), height);
Run Code Online (Sandbox Code Playgroud)
我试图中心的文本是从TabControl中的Tab提供的
using (var sf = new StringFormat())
{
height = logo.Height + 15;
sf.LineAlignment = StringAlignment.Center;
sf.Alignment = StringAlignment.Center;
e.Graphics.DrawString(tabData.Text, new Font(this.Font.Name, 10),
new SolidBrush(tabData.ForeColor),
(e.MarginBounds.Width / 2) - (txtData.Width / 2), height, sf);
}
Run Code Online (Sandbox Code Playgroud)
我也在下面尝试过并使用string_size.Width/2代替txtData.Width
SizeF string_size = e.Graphics.MeasureString(tabData.Text, tabData.Font);
Run Code Online (Sandbox Code Playgroud)
编辑
目前的完整代码
float height = 0;
tabData.Text = "Date Range: 02/02/2010 - 08/09/2013"; //set just for testing
using (var logo = Properties.Resources.title)
{
e.Graphics.DrawImage(logo, e.PageBounds.Left + (e.MarginBounds.Width / …Run Code Online (Sandbox Code Playgroud) 如何打印多页?在我的表单中,我有带有相应标签的文本框,例如。(id、name、course 等)但问题是 1 页不足以显示所有文本框。我必须添加另一个页面来显示带有标签的剩余文本框。我试图将 e.hasmorepages 设置为 true,但第二页中出现的文本框与第一页中出现的文本框相同,它不会继续。
这是我的代码:
Private Sub printSisDoc_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles printSisDoc.PrintPage
Dim labelFont As New Font("Arial", 11, FontStyle.Bold)
Dim textFont As New Font("Arial", 11, FontStyle.Regular)
Dim headerFont As New Font("Arial", 12, FontStyle.Bold)
e.Graphics.DrawString(lblGrade.Text, headerFont, Brushes.Black, 650, 660)
e.Graphics.DrawString(grade11.Text, textFont, Brushes.Black, 660, 690)
e.Graphics.DrawString(underline.Text, labelFont, Brushes.Black, 643, 692)
e.Graphics.DrawString(grade12.Text, textFont, Brushes.Black, 660, 715)
e.Graphics.DrawString(grade13.Text, textFont, Brushes.Black, 660, 740)
e.Graphics.DrawString(grade14.Text, textFont, Brushes.Black, 660, 765)
e.Graphics.DrawString(grade15.Text, textFont, Brushes.Black, 660, 790)
e.Graphics.DrawString(grade16.Text, textFont, Brushes.Black, 660, …Run Code Online (Sandbox Code Playgroud)