The Alpha Software Forum Participation Guidelines

The Alpha Software Forum is a free forum created for Alpha Software Developer Community to ask for help, exchange ideas, and share solutions. Alpha Software strives to create an environment where all members of the community can feel safe to participate. In order to ensure the Alpha Software Forum is a place where all feel welcome, forum participants are expected to behave as follows:
  • Be professional in your conduct
  • Be kind to others
  • Be constructive when giving feedback
  • Be open to new ideas and suggestions
  • Stay on topic

Be sure all comments and threads you post are respectful. Posts that contain any of the following content will be considered a violation of your agreement as a member of the Alpha Software Forum Community and will be moderated:
  • Spam.
  • Vulgar language.
  • Quotes from private conversations without permission, including pricing and other sales related discussions.
  • Personal attacks, insults, or subtle put-downs.
  • Harassment, bullying, threatening, mocking, shaming, or deriding anyone.
  • Sexist, racist, homophobic, transphobic, ableist, or otherwise discriminatory jokes and language.
  • Sexually explicit or violent material, links, or language.
  • Pirated, hacked, or copyright-infringing material.
  • Encouraging of others to engage in the above behaviors.

If a thread or post is found to contain any of the content outlined above, a moderator may choose to take one of the following actions:
  • Remove the Post or Thread - the content is removed from the forum.
  • Place the User in Moderation - all posts and new threads must be approved by a moderator before they are posted.
  • Temporarily Ban the User - user is banned from forum for a period of time.
  • Permanently Ban the User - user is permanently banned from the forum.

Moderators may also rename posts and threads if they are too generic or do not property reflect the content.

Moderators may move threads if they have been posted in the incorrect forum.

Threads/Posts questioning specific moderator decisions or actions (such as "why was a user banned?") are not allowed and will be removed.

The owners of Alpha Software Corporation (Forum Owner) reserve the right to remove, edit, move, or close any thread for any reason; or ban any forum member without notice, reason, or explanation.

Community members are encouraged to click the "Report Post" icon in the lower left of a given post if they feel the post is in violation of the rules. This will alert the Moderators to take a look.

Alpha Software Corporation may amend the guidelines from time to time and may also vary the procedures it sets out where appropriate in a particular case. Your agreement to comply with the guidelines will be deemed agreement to any changes to it.

Bonus TIPS for Successful Posting

Try a Search First
It is highly recommended that a Search be done on your topic before posting, as many questions have been answered in prior posts. As with any search engine, the shorter the search term, the more "hits" will be returned, but the more specific the search term is, the greater the relevance of those "hits". Searching for "table" might well return every message on the board while "tablesum" would greatly restrict the number of messages returned.

When you do post
First, make sure you are posting your question in the correct forum. For example, if you post an issue regarding Desktop applications on the Mobile & Browser Applications board , not only will your question not be seen by the appropriate audience, it may also be removed or relocated.

The more detail you provide about your problem or question, the more likely someone is to understand your request and be able to help. A sample database with a minimum of records (and its support files, zipped together) will make it much easier to diagnose issues with your application. Screen shots of error messages are especially helpful.

When explaining how to reproduce your problem, please be as detailed as possible. Describe every step, click-by-click and keypress-by-keypress. Otherwise when others try to duplicate your problem, they may do something slightly different and end up with different results.

A note about attachments
You may only attach one file to each message. Attachment file size is limited to 2MB. If you need to include several files, you may do so by zipping them into a single archive.

If you forgot to attach your files to your post, please do NOT create a new thread. Instead, reply to your original message and attach the file there.

When attaching screen shots, it is best to attach an image file (.BMP, .JPG, .GIF, .PNG, etc.) or a zip file of several images, as opposed to a Word document containing the screen shots. Because Word documents are prone to viruses, many message board users will not open your Word file, therefore limiting their ability to help you.

Similarly, if you are uploading a zipped archive, you should simply create a .ZIP file and not a self-extracting .EXE as many users will not run your EXE file.
See more
See less

Print a file

  • Filter
  • Time
  • Show
Clear All
new posts

  • Print a file

    I want to be able to print certain files, typically pdf or docx & set the printer options at the time of the print via xbasic.
    Does anyone know the code for this, as I am sure it is within Alpha's capabilities.

  • #2
    Re: Print a file

    You can use the ole methods in Alpha to open and print a document whose associated executable supports ole. The code would be document type specific.
    There can be only one.


    • #3
      Re: Print a file

      I was trying to avoid opening the file / document rather just print a file (name stored in a variable) & be able to set the printer settings all via xbasic.


      • #4
        Re: Print a file

        I meant "open" the file as in make a connection to it via ole.

        The following prints a Word document to a pdf print driver, for example. The document is never visible.

        FUNCTION Word_Conv_Document AS L (docName AS C )
        	Dim wordApp As p
        	Dim wordDoc As p
        	wordApp = ole.Create("Word.Application")
        	wordApp.WindowState = 1 'wdWindowStateMaximize
        	wordApp.ActivePrinter = "Bullzip PDF Printer"
        	Word_Conv_Document = .T.
        	delete wordDoc
        	delete wordApp
        Last edited by Stan Mathews; 03-11-2015, 11:39 AM.
        There can be only one.


        • #5
          Re: Print a file

          I am still struggling with this one - not really used to the FUNCTION programming

          I am trying to print a pdf file to a named printer & be able to set the printer tray / duplex & paper size at the same time

          Any help?



          • #6
            Re: Print a file

            I think you're looking for report.printer_override(). We use it to redirect printing to a specific printer and to set paper size.
            ...from the Help file:



            Last_Printer as C = :REPORT.PRINTER_OVERRIDE( Printer_Name as C [, Printer_Options as P [, Save_Old_Options as P ]] )


            The printer’s name (as it appears in the Control Panel ) followed optionally by "on port:", where port is the port on which you want to print. If Printer_Name is equal to a NULL string (""), then Alpha Five will use the Default Windows printer.

            Optional. A dot variable specifying the new options to set. The options that will be available depend on the printer you select. The following options appear for a Compaq laser printer. For a view of your printer's options:

            Create a new Action Script.

            Select Reports > Print a Layout.

            Display the Options tab.

            Click Override printer settings.


            "Letter", "Legal", "Tabloid", etc.

            "Portrait" or "Landscape"

            A positive number (e.g. 11).

            A positive number (e.g. 8.5).

            A positive number

            An integer number greater than or equal to 1.

            "High", "Medium", "Low", or "Draft".

            "Color" or "Monochrome".

            "Simplex", "Horizontal", "Vertical

            "Bitmap", "Download", "Substitute"

            .T. or .F.

            "Automatically Select", "Manual Paper Feed", "Tray 1", etc.

            Optional. A dot variable to hold the previous set of options.


            The REPORT.PRINTER_OVERRIDE() method sets the printer to Printer_Name for all subsequent print operations. Alpha Five will use Printer_Name regardless of whether the layout specifies an explicit printer name, or the default printer. In addition, Alpha Five will not display the Printer Selection dialog box even if you checked the "Show printer setup on print" check box in the layout.

            Last_Printer is the name of the printer that Alpha Five was previously set to use. This allows you to restore the previously set printer driver.

            Printer_Name should be the printer’s name (as it appears in the Control Panel ) followed optionally by "on port:", where port is the port on which you want to print. For example:"



            • #7
              Re: Print a file

              I am very familiar with REPORT.PRINTER_OVERRIDE() as I use this a lot, however this appears to work only with <<an Alpha Layout>>.PRINTER_OVERRIDE() whereas I am trying to print a pdf file.
              I would need something like FILE.PRINTER_OVERRIDE() but this does not exist.


              • #8
                Re: Print a file

                I think I have got it now
                I will need to use REPORT.PRINTER_OVERRIDE() and then a version of the FUNCTION from Stan.
                Will let you know if I crack it.


                • #9
                  Re: Print a file

                  I'm home now, but tomorrow I'll post a copy of my script.

                  Hopefully it will help.



                  • #10
                    Re: Print a file

                    Thanks Tom as I haven't even been able to create a FUNCTION to print a pdf file yet, let alone set the printer settings.
                    Look forward to your script.


                    • #11
                      Re: Print a file

                      I will need to use REPORT.PRINTER_OVERRIDE() and then a version of the FUNCTION from Stan.
                      The function I provided made use of ole commands available in Word. I don't see the same as available in Reader.

                      If you think using report.printer_override() will do what you want (don't know, haven't tried it) the you can use sys_print() to actually print the file.
                      There can be only one.


                      • #12
                        Re: Print a file

                        I have been unsuccessful so far
                        Unable to create a working FUNCTION to print a pdf file
                        sys_print() does print a pdf file, but only to the default printer
                        report.printer_override() only seems to work when printing an Alpha Form, Report, Letter etc.
                        Any more suggestions out there?


                        • #13
                          Re: Print a file

                          You can get the current default printer with


                          and you can set the default printer to another known name with

                          sys_shell("rundll32 printui.dll,PrintUIEntry /y /n \"Lexmark MS71 Series XL\"")

                          and you can get a list of currently attached printers with


                          Setting the printer options Is a different matter.
                          There can be only one.


                          • #14
                            Re: Print a file


                            We use this code in a script to redirect printing to a specific printer. We have file rooms(2) with case folders in them. our workers would use this script (under a buttonon a screen) to send a request (report) to one of the file rooms, then redirect their default printer back to default. Hopefully it helps you. Ignore the thing, it is one of our addin variables. the variable vcprinter must be a named printer in the windows control panel printer list.

                            on error goto errors2
                            DIM vcprinter as C = ""
                            'vcprinter should never be blank Code makes sure we dont send of a blank request
                            IF FLOR="3" .and. close3<>"X" THEN
                            	vcprinter = "FileRoom3"
                              elseif FLOR="4"
                            	vcprinter = "FileRoom4"
                              elseif FLOR ="3" .and. close3 = "X"
                              	vcprinter = "FileRoom4"  'print 3rd floor requests to 4th floor when 3 is closed
                            	ui_msg_box(" File Room System","No Valid File Room Printer Specified, "+chr(13)+"File Room "+FLOR +" Specified - Cannot Print Request")
                            end if
                            delete options
                            dim options as p
                            <papersize="Letter 8 1/2 x 11 in">
                            delete options.dummy
                            delete oldOptions
                            dim oldOptions as p
                            oldOptions.dummy = 1
                            old_printer_name = report.Printer_override(a5_previous_printer_name,options,oldOptions)
                            delete oldOptions.dummy
                            on error goto errors2 'if they cannot communicate with the printer will error, and this restores the default if so
                            'Select the correct printer name this should work for any OS
                            ans = alltrim(*for_each(foo,if((vcprinter $ word(temp,*counter(),crlf())),word(temp,*counter(),crlf()),""),temp))
                            if ans =""
                            ui_msg_box("ERROR","No printer named")
                            end if 
                            if w_count(ans,crlf())>1
                            ui_msg_box("ERROR","Duplicate printer names print job will be canceled")
                            end if
                            ':Report.Print("case Request Card@fileroom.set",query.filter,query.order)
                            'after printing we must reset the printer back to the way it was when we started
                            :Report.Print("case Request Card@fileroom.set",query.filter,query.order)
                            'error routine
                            err_msg = error_text_get(error_code_get())
                            line = error_line_number_get()
                            script = error_script_get()
                            ui_msg_box("Error", err_msg+" Error occurred at line "+alltrim(str(line,4,0))+ " in script: "+script)


                            • #15
                              Re: Print a file

                              Unfortunately the Report.printer_override(), used in this script, does not seem to work unless you are printing an alpha layout (Form, Report etc)
                              As I have tried sys_print() following this & the file still prints to the default printer.
                              sys_shell("rundll32 printui.dll,PrintUIEntry /y /n \"Lexmark MS71 Series XL\"") helps to change the printer, but doesn't give the control of printer settings.
                              Is there a way of creating an unbound form - as my thought is to embed the pdf file & then print the form using the override()