如何解决无法使用 Aspose.Pdf 打印 jpg
我想加载一个 JPEG 文件并在 C#(.net Framework 4.8)中使用 Aspose.Pdf 打印它。我目前拥有的代码是:
public void Printimage(string filetoPrint,string printerName,string jobName)
{
System.Drawing.Image srcImage = System.Drawing.Image.FromFile(filetoPrint);
int h = srcImage.Height;
int w = srcImage.Width;
var doc = new Document();
var page = doc.Pages.Add();
var image = new Image();
image.File = (filetoPrint);
page.PageInfo.Height = (h);
page.PageInfo.Width = (w);
page.PageInfo.Margin.Bottom = (0);
page.PageInfo.Margin.Top = (0);
page.PageInfo.Margin.Right = (0);
page.PageInfo.Margin.Left = (0);
page.Paragraphs.Add(image);
var viewer = new PdfViewer(doc);
PrintUsingViewer(viewer,printerName,jobName);
}
private static void PrintUsingViewer(PdfViewer viewer,string jobName)
{
viewer.AutoResize = true; // Print the file with adjusted size
viewer.AutoRotate = true; // Print the file with adjusted rotation
viewer.PrintPageDialog = false; // Do not produce the page number dialog when printing
var ps = new System.Drawing.Printing.PrinterSettings();
var pgs = new System.Drawing.Printing.PageSettings();
ps.PrinterName = printerName;
viewer.PrinterJobName = jobName;
viewer.PrintDocumentWithSettings(pgs,ps);
viewer.Close();
}
当我保存文档而不是打印并查看它时,它看起来很好(添加了图像)。但是,当尝试打印图像时,它没有打印出来,页面只是空白..
我想打印而不先将文档保存为 PDF,然后再尝试打印保存的 PDF。有没有人看到我做错了什么?
解决方法
解决方案是添加这行代码
doc.ProcessParagraphs();
就在这一行之后:
page.Paragraphs.Add(image);
所以代码现在变成了
public void PrintImage(string fileToPrint,string printerName,string jobName)
{
System.Drawing.Image srcImage = System.Drawing.Image.FromFile(fileToPrint);
int h = srcImage.Height;
int w = srcImage.Width;
var doc = new Document();
var page = doc.Pages.Add();
var image = new Image();
image.File = (fileToPrint);
page.PageInfo.Height = (h);
page.PageInfo.Width = (w);
page.PageInfo.Margin.Bottom = (0);
page.PageInfo.Margin.Top = (0);
page.PageInfo.Margin.Right = (0);
page.PageInfo.Margin.Left = (0);
page.Paragraphs.Add(image);
doc.ProcessParagraphs();
var viewer = new PdfViewer(doc);
PrintUsingViewer(viewer,printerName,jobName);
}
private static void PrintUsingViewer(PdfViewer viewer,string jobName)
{
viewer.AutoResize = true; // Print the file with adjusted size
viewer.AutoRotate = true; // Print the file with adjusted rotation
viewer.PrintPageDialog = false; // Do not produce the page number dialog when printing
var ps = new System.Drawing.Printing.PrinterSettings();
var pgs = new System.Drawing.Printing.PageSettings();
ps.PrinterName = printerName;
viewer.PrinterJobName = jobName;
viewer.PrintDocumentWithSettings(pgs,ps);
viewer.Close();
}
现在图像打印正确了!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。