Getting started with SavaPage: questions and answers

Hi @eabreu

Indeed, put a Release Station (kiosk) device next to each target printer. In case multiple SavaPage server instances share the same target printer, add a Release Station Terminal definition at each server instance for the station device IP address and assign the related proxy printer as Single Printer Target.

Assuming each SavaPage User Web App instance has a unique URL, accessible from the Terminal device, you can inject an HTML snippet into the User Web App login screen of each server instance with (graphic) links to all of the SavaPage User Web App server instances.

Well, as a user arrives at the Release Station they must first click on the picture in the Login screen to select their domain (if not already selected). This will load the right User Web App instance, so they can authenticate with their domain credentials. You can optionally attach an NFC card Reader as alternative authentication. Tip: CSS customize the Web Apps of each server instance with a distinguishable look-and-feel.

N.B. set a value for Idle Seconds before auto logout. This will make the Web App return to the Login screen after x idle seconds, in case a user forgets to log out after printing is done.

The printer next to the terminal will be the only printer available in the User Web App. Currently, users must create and execute the print job in the User Web App on the Release Station on the spot. If other scenarios are required, we need to discuss how SavaPage could be adapted to accommodate that.

Dear Sir

I work at a school in Belgium. I’m trying to replace the in-house developed printing solution. It’s been made to fully comply with the needs of the school. The current solution creates a cover page for every print-ticket with the name of the teacher and the name of the group(class). How can I do this with Savapage?

With kind regards
Sander Loones

Hello @sander.loones. You might want to take a look to Letterheads, in the user manual search for “3.6. Letterheads” (Chapter 3, section 6) . That could fit your needs.

Hi @sander.loones , welcome to SavaPage. Glad you joined!

Have a look at the org.savapage-job-sheets IPP attribute:

“This attribute determines which Job start/end sheet(s), if any, must be printed with a Job. Contrary to the IPP job-sheets definition, where sheets are part of the job, org.savapage-job-sheets are printed as a separate job. In this way sheets can be printed from a different media-source with distinctive org.savapage-job-sheets-media and media-color. A job sheet is a single monochrome page with job detail information.”

The job sheet indeed shows the name of the teacher and the name of the group/class in a so-called Delegated Print scenario.

Do a global search for job-sheet in the most recent "SavaPage *-rc • User Manual • PDF" version from the Download page. You will find all the information needed. It is an advanced topic that needs careful configuration. If you have any questions, don’t hesitate to ask.

Hello @rijkr

I just finished implementing authentication using HID Proximity Card II. It works nice. There is a couple of things I have still to tune but it’s reading fine and the printer releases when the card is swiped. The card reader I used is HID Omnikey 5025-CL. Once everything will be set I’m gonna document the whole process. Thank you.

@eabreu Hi Eric. Great that you got HID Proximity Card II working! I’m looking forward to the details. Can you please post your findings as a reply to NFC Authentication: questions and answers

Dear Sir

Thank you for putting me in the right direction. I was looking for the wrong terminology. I found an error in the documentation. …/docs/manual/app-ppd-ext-job-ticket.html: *job-sheet-start --> *job-start-sheet. It took a while before I found the error.

I have yet another question. How can I let my users choose the tray for the job-start-sheet and could I name the tray to a color?

I’ve found how I can choose the papersize but cant seem to find how to choose the tray.

With kind regards
Sander

@sander.loones Hi Sander, thanks for pointing out the error in the documentation! Indeed, “job-start-sheet” is the right value for the “org.savapage-job-sheets” IPP keyword (Manual is adapted).

The Job Ticket Operator (not the Job Ticket Creator) selects the input tray for the job sheet at the redirect printer. See Job Ticket Print. An extra option (marked with a “label” icon) appears in case a job-sheet is selected (I still have to complete the manual to reflect this case.).

Yes, you can name a tray anything you want, as long as you assign it a paper size. See the Media Sources section in the User Manual. Also note that at the bottom of the section it reads:

" When the printer is member of at least one Job Ticket Printer Group, and can therefore act as redirect printer, a media-source select menu for Job Sheets is shown. Multiple media-sources with assigned media-size can be selected. When this printer is selected as redirect printer, the first Jobs Sheets media-source that matches the requested job-sheet media size will be selected as default."

@sander.loones Some ideas for setting Job Ticket job-sheets in a .ppde file.

# start-sheet: the '+' prefix makes the 'none' option
# available for Job Ticket Operator only.
*SPJobTicket/Set: org.savapage-job-sheets \
  +none \
  *job-start-sheet

# A4 and A3 sheets
*SPJobTicket/Set: org.savapage-job-sheets-media \
  *iso_a4_210x297mm \
   iso_a3_297x420mm

# A4 sheet cost
*SPJobTicket/Set/Cost: 0.0550 banner-A4 \
   org.savapage-job-sheets/!none \
   org.savapage-job-sheets-media/iso_a4_210x297mm

# A3 sheet cost
*SPJobTicket/Set/Cost: 0.1100 banner-A3 \
   org.savapage-job-sheets/!none \
   org.savapage-job-sheets-media/iso_a3_297x420mm
   
# Force A4 sheet for A4 media   
*SPConstraint: job-sheets-media-a4 \
   media/iso_a4_210x297mm \
   org.savapage-job-sheets-media/!iso_a4_210x297mm

# Force A3 sheet for A3 media   
*SPConstraint: job-sheets-media-a3 \
   media/iso_a3_297x420mm \
   org.savapage-job-sheets-media/!iso_a3_297x420mm

Dear Sir

Thanks for the help. I’ve found a rather dirty solution for forcing the start-sheet to be printed from another tray. I’ve defined a tray to be a US-letter source, and made the start-sheet to be printed as US-letter. This seems to work. For now I would only need one seperate tray for the start-sheet so I could hide this “choice” with css or Jquery.

Now I’m working on coverpages. I would like the user to choose between multiple trays(colored pages). But I don’t exactly know how this would work? When I choose “int.printfront” it lookes nice in the form but the ticket-operator has to do the print manually. When I look into more documentation I find “ext.printfront-1”. This is externally defined, but where and how? And can it be used without a manual intervention of the operator?

With kind regards
Sander Loones

@sander.loones Good to see that you are making progress. However, I am not sure if I fully understand your “dirty solution”. With cover pages we come to the field of advanced configuration and your specific requirements. I propose that we continue our dialogue by e-mail and report final conclusions back into this post. Can you please contact me at support@savapage.org?

Hello @rijkr

I’m trying to map my printer attributes to SAVAPAGE.ppd postscript driver. When I install the HP MFP M775 from one client machine I can see “two sided” option, and Trays from 1 to 5 to pick. When I install the SavaPage print server those options are only availables from the WebApp. I modified the original SAVAPAGE.ppd file and had the “two-sided” option to show up but the print server does not understand when I send the two sided job the printer releases two sheets instead of one. Do you know a solution for this? Thank you in advance.

Hi @eabreu

SAVAPAGE.ppd is meant to create a workstation printer that prints to SavaPage: see SavaPage Printer Installation. The result of any SavaPage print is visible in the User Web App. This makes the printer a “virtual” printer, since the result is not printed on paper, but captured in a PDF document held in SavaPage.

Install HP Linux Printing and Imaging System (HPLIP) on the SavaPage Server:

sudo apt install hplip

This package contains the PPD for HP MFP M775 printer. Use this PPD to create the M775 printer in CUPS on the SavaPage Server. SavaPage will recognize this as Proxy Printer: press the “Synchronize” button in the Proxy Printer List to make it visible.

Printing to paper takes two steps:

  1. Print to SavaPage with the SavaPage printer.
  2. Open User Web App, inspect print preview and select Proxy Printer to print it.

Note: To make all PPD options of the MFP M775 visible in the Printer Settings dialog, you might need to Map PPD to IPP attributes.

Greetings!

I hope someone can help with an issue I ran into while configuring my Savapage server (new instal). So far, the installation and wiki have been very helpful and I got everything installed and savapage runs great. However, I hit a snag in switching it over to use a PostgreSQL DB. I follow all the instructions to the letter (stop services, backup using the savapage-db tool, then import using said tool into the already created postgre DB (“savapagedb”). When I execute the import command, I get “ERROR - ERROR: relation “tbl_config” does not exist Position: 311” I have googled this for a while and nothing related comes up. I’ve triple checked my database connection info in server.properties, I’ve gone back to using internal DB and backing up again, I’ve deleted the “savapagedb” and re-created it, I’ve even removed the “savapage” dedicated PostgreSQL user and re-created it. I’m stuck. Any advice greatly appreciated!

Hi @MattM,
Welcome to SavaPage! Your case probably has a special factor that SavaPage does not expect. I have to investigate. Does savapage-db --db-init execute without errors?

@eabreu Hi Eric, Thanks for reporting. I made a fix that hopefully solves your issue. See details here. The fix is implemented in latest SavaPage 1.2.0-rc snapshot. Please let me know if this indeed solves your problem.

Hi @rijkr. Rendering pdf on the user WebApp works in Ubuntu but not in Centos 7. Centos 7 installs poppler version 0.26.5 which I think does not support the pdftocairo syntax used. This is tail -f output for server.log:

2020-02-14 16:35:00,079  WARN ImageServer:111 - image [/opt/savapage/server/tmp/savapage/eabreu_d3624ac3-7f2e-4a52-a092-965bf0f87fcd.pdf_0_1581716099994_1_node012c4n6sstu8dcrwmeryx6r8b61.png] could not be created. [jetty-threadpool-31]
2020-02-14 16:35:00,085 ERROR OutputProducer:295 - pdftocairo -png -r 24 -f 1 -l 1 -singlefile "/opt/savapage/server/data/internal/safepages/2/5/eabreu/d3624ac3-7f2e-4a52-a092-965bf0f87fcd.pdf" - > "/opt/savapage/server/tmp/savapage/eabreu_d3624ac3-7f2e-4a52-a092-965bf0f87fcd.pdf_0_1581716099991_0_node012c4n6sstu8dcrwmeryx6r8b61.png" [jetty-threadpool-16]
2020-02-14 16:35:00,100 ERROR OutputProducer:296 - Error opening output file fd://0.png [jetty-threadpool-16]

I ran the previous command without the middle hyphen and it converted fine:

pdftocairo -png -r 72 -f 2 -l 2 -singlefile "/opt/savapage/server/data/internal/safepages/2/5/eabreu/d3624ac3-7f2e-4a52-a092-965bf0f87fcd.pdf" > "/opt/savapage/server/tmp/savapage/eabreu_d3624ac3-7f2e-4a52-a092-965bf0f87fcd.pdf_1_1581716106220_1_node012c4n6sstu8dcrwmeryx6r8b61.png"

Regarding the JetDirect/RAW printing it does not work with Microsoft PS Class Driver either. I tried with the Xerox Global Print Driver PS and this time it printed. With the Microsoft PS Class Driver output this message:

@PJL ENTER LANGUAGE=POSTSCRIPT
%!PS-Adobe-3.0
%%Title: MSxpsPS
%%Creator: MSxpsPS
%%CreationDate: Today
%%Pages: (atend)
%%PageOrder: Ascend
%%LanguageLevel: 3
%%DocumentData: Clean7Bit
%%EndComments
%%BeginProlog [SocketServerThread]
2020-02-14 17:21:45,023 ERROR RawPrintServer:228 - IOException: IP Print job from [192.168.122.50] has no [%%Title: ] and/or [%%For: ] (IP Print from ) [SocketServerThread]
java.io.IOException: IP Print job from [192.168.122.50] has no [%%Title: ] and/or [%%For: ]
	at org.savapage.server.raw.RawPrintServer.readAndPrint(RawPrintServer.java:531)
	at org.savapage.server.raw.RawPrintServer.access$000(RawPrintServer.java:78)
	at org.savapage.server.raw.RawPrintServer$SocketServerThread.run(RawPrintServer.java:200)
2020-02-14 17:23:28,002  WARN RawPrintServer:211 - No IP Print data received from [192.168.122.50] within [5000] msec. [SocketServerThread]

Thanks in advance.

@eabreu Hi Eric, “Microsoft PS Class Driver” does not work in JetDirect context because the driver does not pass the requesting user name (%%For: ) in the PostScript header. As you already found out other drivers do. In IPP context the “requesting-user-name” is always present because it is enforced by the IPP standard.

I tested pdftocairo 0.26.5 on centos-release-7-7.1908.0.el7 and to my surprise indeed found that …

$ pdftocairo -png -r 24 -f 1 -l 1 -singlefile "a.pdf" - > "a.png"
Error opening output file fd://0.png

… although the manpage explains that:

If the output-file is “-” , the output file will be written to stdout.

This statement executes okay …

pdftocairo -png -r 24 -f 1 -l 1 -singlefile "a.pdf" "a.png"

… but file a.png.png is created instead of the requested file a.png

I don’t know what to make of this. pdftocairo 0.26.5 behaves very odd compared to other versions that I tested. i.e. 0.41.0 (Ubuntu 16.04) and 0.62.0 (Ubuntu 18.04). Do you have any idea what is wrong?

Hello :slightly_smiling_face:

I’ve recently installed SavaPage on my server, but it seems that the printer somehow doesn’t come to a ready state (it keeps saying “configuration needed” and it doesn’t appear in the user-side menu).

The documentation says that I should configure the media source for this printer, however, when I go into the settings menu, it doesn’t seem like I could add anything there.

Is there something else I need to configure first to make this work? Thanks!

Hello @kaleceres, welcome to SavaPage!

Do you see that at least one (1) Media Source is present? See this section in the User Manual.

If no media sources are present it is probably the PPD used in CUPS that does not provide media source information through the IPP/CUPS interface. This is a known issue and can be solved by making a mapping of the PPD option to the IPP “media-source” attribute.

You can read all about it in PPD Extensions appendix of the User Manual. And take a look at the media-source section.

If you like you can send your PPD to support@savapage.org, so I can have a look and make the mapping for you.