I don't know if this is the best way or not, but I've been trying for a long time to figure out how to solve this problem until I finally realised that the main problem is that the PKCanvasView view must be separated from the PDFView or any other view that contains a UIScrollView and we want it to be superimposed.
So, in this case, if we overlay a PKCanvasView and underneath a PDFView, which itself already has a UIScrollView, the moment we want to use the PKCanvasView we must rely on the UIScrollView of the PKCanvasView itself by using its delegate to catch the func scrollViewDidScroll(_ scrollView: UIScrollView) and then synchronise the zoomScale and the contentOffset to the UIScrollView of the PDFView or any other UIScrollVeiw and at all times the two UIScrollView's have to be synchronised.