Open PDF and MS Office Files in Mendix
After following the getting started guide, you can add a flow that can prepopulate an attribute which can then be passed to the custom widget. The attribute can be a URL to access the file, or a token or any attribute of your choice.
Adding a custom attribute
Inside of the /CustomWidgets/WebViewer directory, open in it your code editor and change the following files.
WebViewer.xml
Add a new property inside of <propertyGroup caption="General"></propertyGroup>:
<property key="urlAttribute" type="attribute">
<caption>URL (path to file)</caption>
<description/>
<attributeTypes>
<attributeType name="String"/>
</attributeTypes>
</property>WebViewer.tsx
Refactor this component to pass all props as mendixProps:
import { Component, ReactNode, createElement } from "react";
import PDFViewer from "./components/PDFViewer";
import { WebViewerContainerProps } from "../typings/WebViewerProps";
import "./ui/WebViewer.css";
export default class WebViewer extends Component<WebViewerContainerProps> {
render(): ReactNode {
return <PDFViewer mendixProps={this.props} />;
}
}WebViewer.editorPreview.tsx
Refactor this component to pass all props as mendixProps:
Components/PDFViewer.tsx
Refactor this component to handle mendixProps and load the URL that got passed in:
useEffect listens for any of the changes in mendixProps.urlAttribute and sets the document based on its value. The urlAttribute can be populated using a flow. Do not forget to run npm run dev on the CustomWidgets/WebViewer directory in your terminal to build it and in Mendix Studio run the command to synchronize project directory under Project/Synchronise Project Directory or hitting F4. After that run the project and try it out.
Last updated
Was this helpful?