为有中文需求的客户提供多渠道中文技术支持.

Tue Jan 10, 2023 3:56 am

您好

Spire.Pdf

在取得Pages.Count后,
可不可以指定,第几页到第几页来印刷
因为一次性打的页数多的时候,比如一下打印216页PDF的时候,旧的打印机,出现不反应现象
现在考虑,分批次处理,比如 每50页分批次执行.Print()
如果有更好的方案,请指教!
期待您的回信

kantsu.com
 
Posts: 6
Joined: Fri May 13, 2022 4:17 am

Tue Jan 10, 2023 6:52 am

您好,

感谢您的留言。
打印Pdf文档时是可以指定打印范围的,代码如下:
Code: Select all
 //选择打印范围
 doc.PrintSettings.SelectPageRange(firstPage, lastPage);

另外,我将符合您分批次打印的完整代码放在下面供您参考:
Code: Select all
//加载文档
            PdfDocument doc = new PdfDocument();
            doc.LoadFromFile(@"..\..\Data\input.pdf");

            //获取文档总页数
            int pageCount = doc.Pages.Count;

         
             int firstPage = 1;
             int lastPage = firstPage+49;

                while (pageCount - firstPage > 49)
                {                 
                    doc.PrintSettings.PrintController = new StandardPrintController();
                    doc.PrintSettings.PrinterName = "Your Printer";

                    //选择打印范围
                    doc.PrintSettings.SelectPageRange(firstPage, lastPage);                 
                    doc.Print();
                    firstPage = firstPage + 50;
                    lastPage = lastPage + 50;

                }

                doc.PrintSettings.PrintController = new StandardPrintController();
                doc.PrintSettings.PrinterName = "Microsoft Print to PDF";

               //选择打印范围
                 doc.PrintSettings.SelectPageRange(firstPage, pageCount);
                doc.Print();     

如果您还有其它任何问题,欢迎随时留言。

Sincerely
Abel
E-iceblue support team
User avatar

Abel.He
 
Posts: 951
Joined: Tue Mar 08, 2022 2:02 am

Tue Jan 10, 2023 7:44 am

您好,

谢谢您的回答,十分感谢

顺便问下

问题1:
以前问过您
>我们提供了pdf.PrintSettings.IsValid方法来判断打印机是否可用。

我是应该在

Print()

之前,调用PrintSettings.IsValid
还是,之后调用?

问题2:
现在,过大的PDF(200页以上),执行,Print()后,比较老旧的打印机会出现,没反应现象,
我应该怎么去检知下,到底是什么原因?

2023-01-10 08:31:03,913 [INFO ] 779 印刷ページ数:216
2023-01-10 08:31:03,913 [INFO ] 779 印刷前処理中(执行PrintSettings后,在Print()执行前)
2023-01-10 08:33:58,915 [INFO ] 779 プリンターへ送信完了(Print()执行后)

打印216页的PDF,执行Print()需要3分钟

kantsu.com
 
Posts: 6
Joined: Fri May 13, 2022 4:17 am

Tue Jan 10, 2023 8:59 am

您好,

感谢您的反馈。
问题1:
pdf.PrintSettings.IsValid方法是用来判断打印机是否可用,我建议您在调用Print()方法之前使用。
问题2:
您可以先使用虚拟打印机(如:Microsoft Print to PDF等等)测试会不会遇到实体打印机的问题,我猜测这个问题与您的实体打印机本身有很大关系。

Sincerely
Abel
E-iceblue support team
User avatar

Abel.He
 
Posts: 951
Joined: Tue Mar 08, 2022 2:02 am

Tue Jan 10, 2023 9:27 am

十分感谢!!!

kantsu.com
 
Posts: 6
Joined: Fri May 13, 2022 4:17 am

Tue Jan 10, 2023 9:34 am

不客气。

Sincerely
Abel
E-iceblue support team
User avatar

Abel.He
 
Posts: 951
Joined: Tue Mar 08, 2022 2:02 am

Wed Jan 11, 2023 1:56 am

您好,
我测试了下16页的PDF,发现页数指定,不能正常打印

我的代码(vb.net)如下

_pdfdoc.PrintSettings.PrinterName = getPrter
_pdfdoc.PrintSettings.Color = False
_pdfdoc.PrintSettings.PrintController = New StandardPrintController()
_pdfdoc.PrintSettings.SetPaperMargins(0, 0, 0, 0)
_pdfdoc.PrintSettings.SelectSinglePageLayout(PdfSinglePageScalingMode.ActualSize, False)

_pdfdoc.PrintSettings.SelectSomePages({firstPage, lastPage})
_pdfdoc.Print()

System.Threading.Thread.Sleep(1000)

当我指定 firstPage = 1 lastPage = 10
的时候,
打印出的PDF只印刷了4张A4纸,而不是10张
是我的用法有问题吗

kantsu.com
 
Posts: 6
Joined: Fri May 13, 2022 4:17 am

Wed Jan 11, 2023 4:00 am

您好,

感谢您的反馈。
从您提供的代码来看,是您选择打印页面的方法调用错误了,应该是SelectPageRange(1, 10)而不是SelectSomePages({firstPage, lastPage})。
我把符合您需求的代码放在下面供您参考:
Code: Select all
'Load file
        _pdfdoc.LoadFromFile("..\..\data\知识宝库.pdf")
        _pdfdoc.PrintSettings.PrinterName = getPrter
        _pdfdoc.PrintSettings.Color = False
        _pdfdoc.PrintSettings.PrintController = New StandardPrintController()
        _pdfdoc.PrintSettings.SetPaperMargins(0, 0, 0, 0)
        _pdfdoc.PrintSettings.SelectSinglePageLayout(PdfSinglePageScalingMode.ActualSize, False)

        _pdfdoc.PrintSettings.SelectPageRange(1, 10)
        _pdfdoc.Print()

如果您有任何问题,欢迎随时留言。

Sincerely
Abel
E-iceblue support team
User avatar

Abel.He
 
Posts: 951
Joined: Tue Mar 08, 2022 2:02 am

Fri Jan 13, 2023 9:52 am

您好,

请问我提供的代码解决了您的问题了吗?期待在您有空的时候能给出反馈。提前感谢。

Sincerely
Abel
E-iceblue support team
User avatar

Abel.He
 
Posts: 951
Joined: Tue Mar 08, 2022 2:02 am

Return to 中文技术支持