如何解决使用 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 举报,一经查实,本站将立刻删除。