【问题标题】:Can't print jpg with Aspose.Pdf无法使用 Aspose.Pdf 打印 jpg
【发布时间】:2021-06-08 13:26:17
【问题描述】:

我想加载一个 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 printerName, 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。有人看到我做错了吗?

【问题讨论】:

  • 在 page.Paragraphs.Add(image);行,请尝试添加 doc.ProcessParagraphs();然后打印文件。如果问题仍然存在,请在我们的官方支持论坛 (forum.aspose.com/c/pdf/10) 中发帖告知我们,因为这是讨论此类问题的正确场所,以便妥善解决和解决问题。我是 Asad Ali,我是 Aspose 的开发人员布道师。
  • 这解决了问题!非常感谢!

标签: c# pdf printing jpeg aspose.pdf


【解决方案1】:

解决方案是添加这行代码

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 printerName, 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();
    }

现在图像打印正确!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-01
    • 1970-01-01
    • 2012-07-24
    • 1970-01-01
    相关资源
    最近更新 更多