B4J Library jPrint V 1.61

Discussion in 'B4J Libraries & Classes' started by Daestrum, Jan 1, 2014.

  1. Daestrum

    Daestrum Well-Known Member Licensed User

    Here is a library I am currently working on.
    It allows you to print from your B4J program.

    At present it can print TextArea, TextField, TableView and text type files.

    I am open to suggestions as to what to add, and general feedback on how it is working for you.

    A word of warning, don't try to print an HTML file, unless you have an unlimited supply of paper, it wants to print basically 1 character per page. I have tested with .txt and .js and they seem to work ok.

    see jPrintTest for how to call the routines.

    version V 1.10

    1) Added two fields to jPrint - jPrint.startTabRow and jPrint.endTabRow, these control which rows are printed from the table.
    eg, printer.startTabRow = 10
    printer.endTabRow = 20
    will print out rows 10 to 20 when ??.print(table) is called.

    if not set entire table printed, they can be set separately ie printer.startTabRow=10 will print from row 10 onwards etc.
    2) Can now print the following table datatypes String, Label, Int, Float and Double.

    version V1.20
    Can now specify which printer when printing a file.

    Version V 1.30
    Added limit checks on start and end rows. - rows start and end are inclusive now.
    Added datatype boolean for tables.
    Added header for table print - prints 'Table : tableID' as header for each page.

    Version V 1.40
    Added image to tableview - it can't print it but wont cause print to fail.(just prints "--Image--" in cell.)
    Added ability to print Strings - printer.print("hello")) etc. probably best used in conjunction with a StringBuilder as once string is sent, will print.
    Workaround for fileprint not ejecting page. - use printer.print(" ") to same printer, as it forces form feed after print.

    Version V 1.50
    Added printFile2(filename,header,font)
    Added word wrap on long lines.
    printFile2 written to use different method to print a file. Use printer dialog to change margins etc.
    see jPrintTest(v1.50) for printfile2 parameters.

    Version V 1.60
    This has a new routine printer.printFileNoThreads(filename,header,font)
    It does not use a separate thread to run the file print. That seemed to be the cause of the problem on the HP laserjet printer failing to print.(if only this were true)
    printFile(...) does not print headers or allow choice of font.
    printFile2(...) allows headers and font selection and prints on a separate thread.
    printFileNoThreads(...) allows headers and font choice but will hang the B4J program while printing.

    Version V 1.61
    Minor change to printFileNoThreads(...) setting header to "" effectively removes headers and footers from output print. (Still trying to find cause of HP laser failing to print a page)
    It appears the header/footer was the problem on the HP.
    If you don't get a print out from a file try the above method printFileNoThreads(...) with header set to "".

    Attached Files:

    Last edited: Jan 11, 2014
    Don Oso, Mashiane, DonManfred and 4 others like this.
  2. stevel05

    stevel05 Expert Licensed User

    Thanks for sharing,

    Just tested Printfile, there is no option to select the destination printer, it printed to my default printer. Is this possible? I don't know the jPrint library.
  3. stevel05

    stevel05 Expert Licensed User

    A bit more testing, it printed OK, but no form feed at the end of the Job. I had to turn off the printer to feed it through.

    Changed my default printer to PDF and the document was empty. It could be the same thing causing it perhaps.

    It's a very promising library. Nice work.
  4. Daestrum

    Daestrum Well-Known Member Licensed User

    If the last line in a text file does not have a CRLF as it's last character, then it stalls the printer, I have searched for an equivalent 'flush' command, but I think I will have to write one.
    I think I can re-write the filePrint so it displays the printer box - will look tomorrow.

    Looking at the available outputs, it will be able to print images from ImageViews, but concentrating on the text based printing at the moment.

    Also going to try and add a print preview option.
    amaxco likes this.
  5. logemag

    logemag Member Licensed User

    a very nice news for the new year !!! Good job
  6. magoandroid

    magoandroid Member Licensed User

  7. Daestrum

    Daestrum Well-Known Member Licensed User

    Sure, no problem, although that source is a bit dated and doesn't handle the tableview.

    This is latest source - I will tidy it up eventually.

    Attached Files:

    amaxco likes this.
  8. magoandroid

    magoandroid Member Licensed User

    Grazie 10^3.
    Sei molto gentile.

    Thank you very much.
    Very kind of you.
  9. Daestrum

    Daestrum Well-Known Member Licensed User

    As I don't actually write things in B4J (other than test modules), can someone tell me what other data types can be in a TableView, as I only handle String and Label types at present for printing.
  10. Daestrum

    Daestrum Well-Known Member Licensed User

    New version uploaded.

    If anyone is using on Mac or Linux, I would be interested to know how it performs on them.
  11. William Hunter

    William Hunter Active Member Licensed User

    Hello Daestrum – I today found your latest post re your new jPrint library. I tested printer.printFile(“mytextfile.txt”) and could not get the text file to print to a HP laser printer. The text file was sent to the printer queue, but was named “java printing”. The file size was 0 bytes, and the data type was RAW.

    I also tried to print to two HP Inkjet printers. In each case paper was fed into the printer, then printing just stopped. Nothing was ever printed, and I had to push the printer cancel button to eject the blank page.

    Your library looks very promising. Good luck with it. I would love to be able to use it. :D

    Best regards
  12. BPak

    BPak Active Member Licensed User

    Have Version 1.02 of jPrint installed on windows and compiled the jPrintTestExample to Release mode.

    I have a Mac Lion and installed Epson XP-100 on both Windows (Bootcamp) and the OSX

    The jPrintTest ran great on Windows and printed out two sheets.

    The jPrintTest.jar file would not run on the Mac.

    Do not know much about the Mac system but I have other JAR files made with B4J running ok on it.

    Mac image for jPrintTest attached...

    EDIT - Console.log file saved into Windows WordPad showing the output from Mac when trying to run the prog.

    Attached Files:

    Last edited: Jan 4, 2014
  13. Daestrum

    Daestrum Well-Known Member Licensed User

    Looking up the error it appears mac doesn't load the full awt library. There are various work arounds I will try and incorporate in jPrint.
  14. William Hunter

    William Hunter Active Member Licensed User

    @ Daestrum – I have been trying to print a .txt file using Log(printer.printFile("C:\~jPrintTest\notes.txt")) with your jPrintTest, without success. I have been using a .txt file produced by B4J components for testing. I get no printer output as outlined in my previous post.

    I have no problem in printing your two table pages, just when I try to print the contents of a .txt file. It would be helpful if you would include copies of your testFile.txt and testeval.js files in your jPrintTest.zip, so that we can see just what type of files you are having success in printing. No test .txt file that I try to print, using your jPrintTest, will produce printer output.

    Further commentary regards usage would be greatly appreciated.

  15. Daestrum

    Daestrum Well-Known Member Licensed User

    Sorry it never occurred to me to supply the files I was printing while testing.

    Attached Files:

  16. Theera

    Theera Well-Known Member Licensed User

    Hi Daestrum,
    I like your this library,but I 've problem to print out on paper. Please guide to me,Thank you in advance.

    Attached Files:

  17. rapblack

    rapblack Member Licensed User

    Dear All,
    How to set Font name of Text file ? I would like set text file to mono space such as droidsans mono or etc.
    Best Regard.
  18. William Hunter

    William Hunter Active Member Licensed User

    @ Daestrum – Thank you for the test files. Your testFile.txt file is no different in type than those of my own that I have attempted to print (ANSI as UTF-8). I did try to print your test file, but got the same result as previously, no printer output.

    This is the log:
    Program started.
    Printing to : HP LaserJet 1018

    The log indicates success, but this is not the case. Why you are able to print your test file, while I am not, is very odd. I am very interested in your library, and will continue to watch this thread. Perhaps as your work progresses, this problem will be resolved.

    I’m quite surprised that this thread hasn’t had much commentary from others. I would have thought that the ability to print with B4J would be of great interest to many on this forum.

    Best regards :)
  19. agraham

    agraham Expert Licensed User

    Personally I'm waiting for the next iteration of JavaFX, due March sometime though it may take longer before B4J supports it, which will support printing for any node, including native print and page setup dialogs for user print configuration, and should also support Rich Text.
    William Hunter and Daestrum like this.
  20. Daestrum

    Daestrum Well-Known Member Licensed User

    @William - it does seem odd as I print to an HP printer (photosmart) and the pages all come out. Did you try sending printer.print(" ") to the printer to see if it forces the page out ?

    @agraham - That is the preferred solution waiting for java 8, but I am a person with too much time on their hands, and can't resist a challenge. ;)
    amaxco likes this.
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice