微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 osprint.p (adecomm.pl) 在 btPrint 上打印 pdf

如何解决使用 osprint.p (adecomm.pl) 在 btPrint 上打印 pdf

我正在尝试使用此 osprint.p 选项从我的应用程序打印 pdf,我可以使用保存 pdf 的打印机选项,但 pdf 的格式不可读This is how it looks。知道我做错了什么。此外,是否有任何选项可以通过此选项以及其他选项(如份数、分页等)设置认打印机,而不会触发 MSW 打印设置对话框 I want to programmatically send these options?使用下面的第 4 个参数,我可以设置方向和纸张尺寸,但不知道如何设置其他参数。

doesCompanyNameExist(companyName: string):any {
        return this.http.post(`${this.BASE_URL}/RESTAPI/reports/doesCompanyNameExist?companyName=${companyName}`,this.httpOptions);
}

作为参考,我使用了 Chris 的这篇文章https://www.progresstalk.com/threads/printing-on-ladscape-mode.48/ 连同这个:https://knowledgebase.progress.com/articles/Knowledge/18776

谢谢。

解决方法

_osprint.p 不能用于打印 PDF 文件。正如文件头 (https://github.com/consultingwerk/ADE-Sourcecode/blob/master/src/adecomm/_osprint.p) 所说,它的目的是将文本文件发送到打印机。

打印 PDF 文件最简单的方法是使用 ShellExecuteA API,例如:

PROCEDURE ShellExecuteA EXTERNAL "shell32":U:
    DEFINE INPUT PARAMETER HWND         AS LONG .
    DEFINE INPUT PARAMETER lpOperation  AS CHARACTER .
    DEFINE INPUT PARAMETER lpFile       AS CHARACTER .
    DEFINE INPUT PARAMETER lpParameters AS CHARACTER .
    DEFINE INPUT PARAMETER lpDirectory  AS CHARACTER .
    DEFINE INPUT PARAMETER nShowCmd     AS LONG .
    DEFINE RETURN PARAMETER hInstance   AS LONG .
END PROCEDURE .

DEFINE VARIABLE hInstance AS INTEGER NO-UNDO.

RUN ShellExecuteA (0,"print","c:\temp\oe-122-pdfs\start.pdf","",3,OUTPUT hInstance) .

有关选项,请参阅 https://docs.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shellexecutea

如果您对 .NET 的 OpenEdge GUI 有一些经验,那么将提到 Google Pdfium 库的答案翻译成 ABL 应该很简单:

How can I send a file document to the printer and have it print?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。