Some test text!
Web / FAQ / Supporting XRefs
XRefs (external references) are used within CAD documents to reference external documents to be loaded within a main document. WebViewer Server by default does not support these XRefs as it needs to know context information about the location of the XRef files.
We do provide an option TRN_CAD_XREF_CONFIG_URL
that will allow you to provide this context information, but there are a few steps that will need to be done in order to use this option.
To use this option, you will need to do the following.
TRN_CAD_XREF_CONFIG_URL
to the created server.The most common way is by providing a header during the load document call, and then matching this header to the correct XRefs.
WebViewer(...)
.then(instance => {
const options = {
customHeaders: { MyDocIdentifier: "12345id" },
filename: "Document.pdf"
};
const url = 'http://<documentserver>/mydocument.pdf'
instance.loadDocument(url, options);
});
});
Now the server will see MyDocIdentifier
when WebViewer Server requests it, it can then return the XRef paths for this document like so:
{
XRefSearchPaths: ['mypath/mpath/path', 'mypath2/path/path']
}
WebViewer Server would then look in these paths for XRefs.
In the next step you will need to create a server that will do the following:
Paths returned by the server should have the following traits
The code below is a rough example of how you would do this. The specifics of how you implement XRef path selection will be specific to your system.
from http.server import BaseHTTPRequestHandler,HTTPServer
import json
xrefPaths = {
'docId1' : ['/path/path1/path', '/path/path2'],
'docId2' : ['/path3/path']
}
class Server(BaseHTTPRequestHandler):
def _set_headers(self):
self.send_response(200)
self.send_header('Content-type', 'application/json')
self.end_headers()
def do_HEAD(self):
self._set_headers()
def do_GET(self):
self.send_response(200)
self._set_headers()
# here you would get each individual XRef path based on the ID
# and return them in JSON below
myId = self.headers["MyDocIdentifier"]
myPaths = xrefPaths[myId]
self.wfile.write(json.dumps({'XRefSearchPaths': myPaths }).encode())
def run(server_class=HTTPServer, handler_class=Server, port=8008):
server_address = ('', port)
httpd = server_class(server_address, handler_class)
print('Starting httpd on port %d...' % port)
httpd.serve_forever()
if __name__ == "__main__":
run()
In docker you should mount volumes at the specific XRef paths like so:
volumes:
/myfiledirectory/dir:/usr/local/apache-tomcat/xrefFiles
You would then set XRefs to be looked for inside of this xrefFiles directory.
On windows, you only need to provide the correct paths and your XRefs should be found.
A prerequiste to this step would be to setup your server over a local network or the internet to be accessible by WebViewer Server. In this example, the server is hosted on 192.168.1.1
under the path getXrefs
:
TRN_CAD_XREF_CONFIG_URL: 'http://192.168.1.1/getXrefs'
If everything was done correctly, XRefs should now be appearing in your documents.
Trial setup questions? Ask experts on Discord
Need other help? Contact Support
Pricing or product questions? Contact Sales