star-micronics / react-native-star-io10

react-native-star-io10 is a library for supporting application development for Star Micronics devices.
Other
83 stars 54 forks source link

Does .actionPrintImage() support passing in a base64 pdf? #74

Closed justinb-dd closed 2 months ago

justinb-dd commented 1 year ago

Description

Does .actionPrintImage() support passing in a base64 pdf?

Whenever I try to use .actionPrintImage() with a base64 pdf I get an invalid source error. According to the docs I should be able to pass in base64 data. But no matter what I try I can't get it to work.

Your device where the bug occurs

this.testBytes = 'JVBERi0xLjMKJZOMi54gUmVwb3J0TGFiIEdlbmVyYXRlZCBQREYgZG9jdW1lbnQgaHR0cDovL3d3dy5yZXBvcnRsYWIuY29tCjEgMCBvYmoKPDwKL0YxIDIgMCBSIC9GMiAzIDAgUgo+PgplbmRvYmoKMiAwIG9iago8PAovQmFzZUZvbnQgL0hlbHZldGljYSAvRW5jb2RpbmcgL1dpbkFuc2lFbmNvZGluZyAvTmFtZSAvRjEgL1N1YnR5cGUgL1R5cGUxIC9UeXBlIC9Gb250Cj4+CmVuZG9iagozIDAgb2JqCjw8Ci9CYXNlRm9udCAvSGVsdmV0aWNhLUJvbGQgL0VuY29kaW5nIC9XaW5BbnNpRW5jb2RpbmcgL05hbWUgL0YyIC9TdWJ0eXBlIC9UeXBlMSAvVHlwZSAvRm9udAo+PgplbmRvYmoKNCAwIG9iago8PAovQ29udGVudHMgOCAwIFIgL01lZGlhQm94IFsgMCAwIDIwMS42IDU1MCBdIC9QYXJlbnQgNyAwIFIgL1Jlc291cmNlcyA8PAovRm9udCAxIDAgUiAvUHJvY1NldCBbIC9QREYgL1RleHQgL0ltYWdlQiAvSW1hZ2VDIC9JbWFnZUkgXQo+PiAvUm90YXRlIDAgL1RyYW5zIDw8Cgo+PiAKICAvVHlwZSAvUGFnZQo+PgplbmRvYmoKNSAwIG9iago8PAovUGFnZU1vZGUgL1VzZU5vbmUgL1BhZ2VzIDcgMCBSIC9UeXBlIC9DYXRhbG9nCj4+CmVuZG9iago2IDAgb2JqCjw8Ci9BdXRob3IgKGFub255bW91cykgL0NyZWF0aW9uRGF0ZSAoRDoyMDIyMDgyMzIyMzU0OCswMCcwMCcpIC9DcmVhdG9yIChSZXBvcnRMYWIgUERGIExpYnJhcnkgLSB3d3cucmVwb3J0bGFiLmNvbSkgL0tleXdvcmRzICgpIC9Nb2REYXRlIChEOjIwMjIwODIzMjIzNTQ4KzAwJzAwJykgL1Byb2R1Y2VyIChSZXBvcnRMYWIgUERGIExpYnJhcnkgLSB3d3cucmVwb3J0bGFiLmNvbSkgCiAgL1N1YmplY3QgKHVuc3BlY2lmaWVkKSAvVGl0bGUgKHVudGl0bGVkKSAvVHJhcHBlZCAvRmFsc2UKPj4KZW5kb2JqCjcgMCBvYmoKPDwKL0NvdW50IDEgL0tpZHMgWyA0IDAgUiBdIC9UeXBlIC9QYWdlcwo+PgplbmRvYmoKOCAwIG9iago8PAovRmlsdGVyIFsgL0FTQ0lJODVEZWNvZGUgL0ZsYXRlRGVjb2RlIF0gL0xlbmd0aCA2MjIKPj4Kc3RyZWFtCkdhdFVwOy89bz8mQkVdKi4xUVAuaDNdUlwsdDVxRlpbKzw9ZGglSClWKFpTYixZaTIsZkZGXFJvVGVnJkE2dVxmQzRlNmJyO1pXTDhMRmtgXXNSWz4kQG5PcjpMPk1IIkxTSFYhWEBwIkBXZzU/JksjNkI5Vi8hTkJKPl9RKFZrbCMnZWpyKERhPFxUXWcndSNTTWgxM0MtT0hwJkI5OVw3QW1rWmtPWW02SEFFMzFpXj02WCorITouNjRVK0crYjliQz1ETiFrckNWdSU1YVVXY1hgSkVMWFxHXmRvV3RmWGs0YSEmTmMhbUUqMTcpbmAxXltKcGZuVkkkRmNsYFpQby5sVjZrTU8/VC4kbCtNb1JBP2hAZkM5LjBbJyk8SSQmNm02c2MtWjNpLDdLNi1wOkFRa0ZMcylZTlZZNDRJUFstcE9jb3VZY2puTCIhRl9dbFRbJ1tEXj90JCwhYHVAZlUrbDxGQWA8ZzlucERVYldBdT9ZSVpFNmZoUk05QVJYTShTTTQmU05FXWtPZEVWWGFsdW5IQERlNVs8WXVXUklycl4vZGVdJD9JMzklZCgpTUZRTGVTJTZCOFhRZllkRmdRYE0jaGBnIWUqNzlwI3AiX11vbSM5KVFSanIzNztSUz8ibTk2QzFIQUhYPipUUThXRj1IYUhkPC1sYkk3QXNGSk9JO1hZPkg9IXFoT0M+IUA2bWc7b1RYSlFONzcjMyFJNzc1aC9UTDIxNCRBRm1kai0qIWJvRzVoWzxXTCZHSDhXSjc7ZVFwJyssJyI9JjY0Qi87Wlo/I1E/cVtDU2w7ckhwVSt1M1dMfj5lbmRzdHJlYW0KZW5kb2JqCnhyZWYKMCA5CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDA3MyAwMDAwMCBuIAowMDAwMDAwMTE0IDAwMDAwIG4gCjAwMDAwMDAyMjEgMDAwMDAgbiAKMDAwMDAwMDMzMyAwMDAwMCBuIAowMDAwMDAwNTI4IDAwMDAwIG4gCjAwMDAwMDA1OTYgMDAwMDAgbiAKMDAwMDAwMDg5MiAwMDAwMCBuIAowMDAwMDAwOTUxIDAwMDAwIG4gCnRyYWlsZXIKPDwKL0lEIApbPDlhMmY5YzAwOTA3MmFmNjFlNzc0NGRkNWUwZWI3ZjVlPjw5YTJmOWMwMDkwNzJhZjYxZTc3NDRkZDVlMGViN2Y1ZT5dCiUgUmVwb3J0TGFiIGdlbmVyYXRlZCBQREYgZG9jdW1lbnQgLS0gZGlnZXN0IChodHRwOi8vd3d3LnJlcG9ydGxhYi5jb20pCgovSW5mbyA2IDAgUgovUm9vdCA1IDAgUgovU2l6ZSA5Cj4+CnN0YXJ0eHJlZgoxNjYzCiUlRU9GCg=='

const builder = new StarXpandCommand.StarXpandCommandBuilder();
        builder.addDocument(new StarXpandCommand.DocumentBuilder()
          .addPrinter(new StarXpandCommand.PrinterBuilder()
            .actionPrintImage(new StarXpandCommand.Printer.ImageParameter(this.testBytes, 406))
            .actionCut(StarXpandCommand.Printer.CutType.Partial)
          )
        )
atorisemofe commented 1 year ago

Hi @justinb-dd, the actionPrintImage() does not support base64 encoded pdf.

The image types the printers supports are png/jpeg/jpg and so you can encode those as base64 and it would print.

bandit-ibayashi commented 1 year ago

@justinb-dd We are afraid it cannot be printed the PDF data by actionPrintImage() method, as @atorisemofe have suggested. If you want to print PDF data, please convert it to png or other formats once. The following information may give you some hints. https://stackoverflow.com/questions/61637191/how-to-convert-pdf-to-image-in-reactjs

With TSP100III or IV, our PassPRNT app supports printing base64-encoded PDFs by sending data to PassPRNT via a URL scheme. https://star-m.jp/products/s_print/sdk/passprnt/manual/android/en/data_specifications.html#pdf

@atorisemofe Thank you very much for your comment!