Orbeon - change font to get polish letters - orbeon

I'm using Polish characters in forms. Unfortunately, during the generation of the PDF file in automatic mode, all Polish diacritical characters are not printed (ie: text 'zażółć gęślą jaźń' is printed as 'zaó gl ja'). I tried to set properties in file properties-local.xml:
<property as="xs:string" name="oxf.fr.pdf.template.font.path.vera" value="path_to_font/font.ttf"/>
<property as="xs:string" name="oxf.fr.pdf.font.family.vera" value="Arial"/>
or with wildcards:
<property as="xs:string" name="oxf.fr.pdf.template.font.path.*" value="path_to_font/font.ttf"/>
<property as="xs:string" name="oxf.fr.pdf.font.family.*" value="Arial"/>
I tested PDF generation with different fonts, but it didn't work. I didn't even notice font style changes in PDF. So there is a question, what should be done to properly print the Polish characters in the PDF?

These properties are for the template mode, and they won't work for the automatic mode. Try instead:
<property
as="xs:string"
name="oxf.fr.pdf.font.path.vera"
value="path_to_font/font.ttf"/>
<property
as="xs:string"
name="oxf.fr.pdf.font.family.vera"
value="Arial"/>
See also the doc.

Related

How can one register a Direct2D custom effect that has variable numbers of inputs?

I am making custom effects with Direct2D, based on Microsoft Learn page. The problem is that, I wanted to make a Direct2D effect which support a variable input count, like Direct2D Composite Effect, while the XML registration string used for ID2D1Factory1::RegisterEffectFromString seemed to take fixed <Input> properties. What should be done in XML registration string?
My XML is almost the same as one from Microsoft Learn page. Still I will provide mine.
auto xml_AxisRotation = XML(
<?xml version='1.0'?>
<Effect>
<!--System Properties-->
<Property name='DisplayName' type='string' value='MultiInput Effect'/>
<Property name='Author' type='string' value='Nan_ok'/>
<Property name='Category' type='string' value='None'/>
<Property name='Description' type='string' value='asdfasdfasdf'/>
<Inputs>
<Input name='Source1'/>
<Input name='Source2'/>
//...?
</Inputs>
<!--Custom Properties go here-->
<Property name='Mode' type='int32'>
<Property name='DisplayName' type='string' value='Mode'/>
<Property name='Default' type='int32' value='1'/>
</Property>
</Effect>
);
I once deliberately omitted the whole <Input> part, but it failed to perform; E_INVALIDARG has been returned.
The XML registration and actual Direct2D effect's input taking worked differently. By proper implementing ID2D1EffectImpl::SetGraph and calling ID2D1Effect::SetInputCount, I was able to set variable numbers of target.
It seemed ok to leave <Inputs> with no <Input> property. here is my XML example.
auto xml_AxisRotation = XML(
<?xml version='1.0'?>
<Effect>
<!--System Properties-->
<Property name='DisplayName' type='string' value='MultiInput Effect'/>
<Property name='Author' type='string' value='Nan_o'/>
<Property name='Category' type='string' value='None'/>
<Property name='Description' type='string' value='asdfasdfasdf'/>
<Inputs> </Inputs> <!--Leaving like this is ok-->
<!--Custom Properties go here-->
<Property name='Mode' type='int32'>
<Property name='DisplayName' type='string' value='Mode'/>
<Property name='Default' type='int32' value='1'/>
</Property>
</Effect>
);

Orbeon header authentication

I'm currently using Orbeon 2019.2 CE version
I'm trying to configure header-driven method for access control without using Liferay or default Login/Logout form in Orbeon.
I have already set these properties in properties-dev.xml
I'm have 2 roles (form-builder, form-viewer) sending via My-Roles-Header.
<property as="xs:string" name="oxf.fr.authentication.method" value="header"/>
<property as="xs:boolean" name="oxf.fr.authentication.header.sticky" value="true"/>
<property as="xs:string" name="oxf.fr.authentication.header.username" value="My-Username-Header"/>
<property as="xs:string" name="oxf.fr.authentication.header.group" value="My-Group-Header"/>
<property as="xs:string" name="oxf.fr.authentication.header.roles.split" value="(\s*[,\|]\s*)+"/>
<property as="xs:string" name="oxf.fr.authentication.header.roles" value="My-Roles-Header"/>
<property as="xs:string" name="oxf.xforms.forward-submission-headers" value="My-Username-Header My-Group-Header My-Roles-Header"/>
<property as="xs:string" name="oxf.http.forward-headers" value="My-Username-Header My-Group-Header My-Roles-Header"/>
However, I'm still able to access form builder and form runner without sending My-Username-Header My-Group-Header My-Roles-Header headers. It should redirect me to 403 page
Form Runner: the default is that each individual form must have permissions enabled or the form will be public. Make sure that "Enable permission for this form" is selected in Form Builder (doc).
Form Builder: see Form Builder permissions.

Orbeon 4.8 and passing headers to CRUD interface

Is it still possible to send custom headers to a customized CRUD interface?
I tried all of these with no success: According to logging non of these headers is passed to the interface when opening a form.
<property as="xs:string" name="oxf.http.forward-headers" value="Orbeon-Client Cookie"/>
<property as="xs:string" name="oxf.http.forward-headers.private" value="Orbeon-Client Cookie"/>
<property as="xs:string" name="oxf.xforms.forward-submission-headers" value="Orbeon-Client Cookie"/>
<property as="xs:string" name="oxf.http.forward-cookies" value="JSESSIONID MYSAPSSO2 ReferenceCode"/>
<property as="xs:string" name="oxf.http.forward-cookies.private" value="JSESSIONID MYSAPSSO2 ReferenceCode"/>
They found the issue and fixed it: https://github.com/orbeon/orbeon-forms/issues/2053
I am also working on trying to solve this problem without avail.
(FYI, we are upgrading from 4.5 to 4.8 right now in our test environment and ran into the issue that specified cookies asked to be forwarded in properties-local.xml are do not seem to be honored in the persistence layer).
A few posts I have seen as we are trying to fix this....
http://discuss.orbeon.com/Secure-persistence-API-access-td4659372.html
^ This post seems to indicate that it is broken(?) in 4.8 and will be added back to 4.9?
(Looking at the code for FormRunnerPersistenceProxy.scala doesn't seem to indicate this thou?)
http://discuss.orbeon.com/oxf-http-forward-cookies-issue-in-case-of-invalid-JSESSIONID-td4658705.html
^ Different but similar issue

Orbeon localisation

I translated the necessary files for Dutch but apparently the runner still shows the error section in English.
I looked at both the runner and fb resource.xml but couldn't find the string 'Your form contains the following errors'.
I also have this entries in the properties-local.xml
<property as="xs:string" name="oxf.fr.available-languages.orbeon.builder" value="nl en"/>
<property as="xs:string" name="oxf.fr.default-language.orbeon.builder" value="nl"/>
<property as="xs:string" name="oxf.fr.default-language.orbeon.*" value="nl"/>
<property as="xs:string" name="oxf.fr.default-language.*.*" value="nl"/>
It depends which version you are using:
up to Orbeon Forms 4.2, resources.xml does contain that message
starting Orbeon Forms 4.3, resources.xml contains a more complex formatted string

Orbeon 4.0.0.7m: form runner currency control rejects input with decimal separator ',' (comma) as invalid

I have defined a form with currency controls and need to use a comma ',' as decimal separator. I have set the decimal separator (,) and grouping separator (.) in properties-local.xml accordingly (see details below).
When I enter a number without a comma, Orbeon accepts it and formats it as expected.
E.g., "15" becomes "€ 15,00".
However, the form does not accept input with a "," in it.
E.g., "15,00" leads to a validation error.
Inputting "15.00" is accepted, but incorrectly formatted by the currency control, namely
"15.00" becomes "€ 1.500,00"
Orbeon seems not to recognize the "," as decimal separator when input to the currency control.
Have I missed to set some additional property or the like? How can I write currency values with decimal commas? Any suggestions or ideas how to make this work?
Excerpt from properties-local.xml:
<property as="xs:string" name="oxf.xforms.xbl.fr.currency.prefix" value="€"/>
<property as="xs:string" name="oxf.xforms.xbl.fr.currency.digits-after-decimal" value="2"/>
<property as="xs:string" name="oxf.xforms.xbl.fr.currency.decimal-separator" value=","/>
<property as="xs:string" name="oxf.xforms.xbl.fr.currency.grouping-separator" value="."/>
<property as="xs:string" name="oxf.xforms.xbl.fr.number.prefix" value=""/>
<property as="xs:string" name="oxf.xforms.xbl.fr.number.digits-after-decimal" value="2"/>
<property as="xs:string" name="oxf.xforms.xbl.fr.number.decimal-separator" value=","/>
<property as="xs:string" name="oxf.xforms.xbl.fr.number.grouping-separator" value="."/>
So, finally I modified number.xbl, and two small modifications in number.xbl do the job for me.
Find the modified number.xbl here - git://gist.github.com/3636583.git
Put this number.xbl into folder resources/xbl/orbeon/number

Resources