Отображение PDF с возможностью разместить изображение в верхней части страницы - PullRequest
0 голосов
/ 31 мая 2018

Итак, я пытаюсь создать функцию для мобильного приложения.Он должен иметь возможность отображать PDF-файл в виде и позволять пользователю размещать большое изображение своей подписи в желаемом месте.

Я работаю с xamarin.forms и отображать PDF-файл, используя это: https://github.com/xamarin/recipes/tree/master/Recipes/xamarin-forms/Controls/display-pdf

Теперь мне нужно знать, какой подход лучше для второй части.Пользователь помещает изображение, и все, что мне нужно, это получить координаты местоположения и его ширину.

Пока я вижу два возможных способа:

  1. Создание двух видов сверху каждогодругое, первое для pdf и второе для подписи.Разрешить манипуляции с изображением во втором и получить данные оттуда.Не уверен, как это сделать, или если это хорошая идея.
  2. Заставьте IOS использовать pdfjs так же, как Android (возникают проблемы с этим), а на стороне pdfjs внедрите fabric.js, а затем получить данные оттуда.

Любые предложения или идеи для лучшего способа сделать это?

Спасибо

1 Ответ

0 голосов
/ 04 июня 2018

Вы можете добавить изображение и подпись в webView.ScrollView и внести некоторые коррективы в ContentInset.

  1. Сначала изменить webView.ScrollView.ContentInset.

  2. Добавить дополнительный вид.

  3. Сделайте прокрутку webView в правильное местоположение (исходный якорь).

Полный код:

class MyDelegate: UIWebViewDelegate
{
    public override void LoadingFinished(UIWebView webView)
    {
        webView.ScrollView.ContentInset = new UIEdgeInsets(200, 0, 0, 0);


        UIView view  = new UIView(frame: new CoreGraphics.CGRect(0, -200, webView.Frame.Width, 200));
        UIImageView image = new UIImageView(frame: new CoreGraphics.CGRect(0, 0, webView.Frame.Width, 100));
        UILabel label = new UILabel(frame: new CoreGraphics.CGRect(0, 100, webView.Frame.Width, 100));
        view.Add(image);
        view.Add(label);
        webView.ScrollView.AddSubview(view);

        webView.ScrollView.ContentOffset = new CoreGraphics.CGPoint(0, -200);
    }
}

public class CustomWebViewRenderer : ViewRenderer<CustomWebView, UIWebView>
{
    protected override void OnElementChanged (ElementChangedEventArgs<CustomWebView> e)
    {
        base.OnElementChanged (e);

        if (Control == null) {
            UIWebView web = new UIWebView();
            web.Delegate = new MyDelegate();
            SetNativeControl(web);
        }
    }
    //xxxxx
}
...