Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Xamarin Android以pdf格式保存webview_C#_Xamarin_Xamarin.android_Itext - Fatal编程技术网

C# Xamarin Android以pdf格式保存webview

C# Xamarin Android以pdf格式保存webview,c#,xamarin,xamarin.android,itext,C#,Xamarin,Xamarin.android,Itext,我正在用xamarin为android开发一个应用程序 目标是让用户填写文档并将其保存为PDF 我尝试过这个过程: HTML到PDF 我设计了一个cshtml文件,它包含与文档相同的结构,并带有用户插入的输入。到目前为止还不错,它在webview中看起来不错。我现在想把它转换成PDF,但我似乎找不到一个方法来转换它 有没有办法将CSHTML转换为PDF,或者以某种方式将webview的内容转换为PDF 我尝试了一个名为“iTextSharp”的扩展来创建和操作PDF(我尝试将html转换为PDF

我正在用xamarin为android开发一个应用程序

目标是让用户填写文档并将其保存为PDF

我尝试过这个过程:

HTML到PDF

我设计了一个cshtml文件,它包含与文档相同的结构,并带有用户插入的输入。到目前为止还不错,它在webview中看起来不错。我现在想把它转换成PDF,但我似乎找不到一个方法来转换它

有没有办法将CSHTML转换为PDF,或者以某种方式将webview的内容转换为PDF

我尝试了一个名为“iTextSharp”的扩展来创建和操作PDF(我尝试将html转换为PDF文件,但html中使用的样式和图像没有被应用)

最终目标是创建一个PDF文件,该文件的结构与我拥有的HTML页面相同


我有什么办法可以做到这一点吗?想法非常受欢迎

我可以用下面的代码将整个
WebView
页面内容转换为pdf格式。希望它能帮助你。然而,我刚刚在模拟器中尝试过这个

[Activity(Label = "DroidWebview", MainLauncher = true, Icon = "@mipmap/icon")]
public class MainActivity : Activity
{
    WebView myWebView;
    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);

        // Set our view from the "main" layout resource
        SetContentView(Resource.Layout.Main);

        myWebView = FindViewById<WebView>(Resource.Id.webview);
        myWebView.Settings.JavaScriptEnabled = true;
        myWebView.SetWebViewClient(new MyWebViewClient());

        myWebView.LoadUrl("https://stackoverflow.com/questions/46978983/xamarin-android-save-webview-in-pdf");

        Button myPrintButton = FindViewById<Button>(Resource.Id.myPrintButton);
        myPrintButton.Click += (sender, e) =>
        {
            var printManager = (PrintManager)GetSystemService(PrintService);
            string fileName = "MyPrint_" + Guid.NewGuid().ToString() + ".pdf";
            var printAdapter = myWebView.CreatePrintDocumentAdapter(fileName);
            PrintJob printJob = printManager.Print("MyPrintJob", printAdapter, new PrintAttributes.Builder().Build());
        };
    }
}

public class MyWebViewClient : WebViewClient
{
    public override bool ShouldOverrideUrlLoading(WebView view, string url)
    {
        view.LoadUrl(url);
        return false;
    }
}
[活动(Label=“DroidWebview”,MainLauncher=true,Icon=“@mipmap/Icon”)]
公共课活动:活动
{
网络视图我的网络视图;
创建时受保护的覆盖无效(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
//从“主”布局资源设置视图
SetContentView(Resource.Layout.Main);
myWebView=findviewbyd(Resource.Id.webview);
myWebView.Settings.JavaScriptEnabled=true;
SetWebViewClient(新的MyWebViewClient());
myWebView.LoadUrl(“https://stackoverflow.com/questions/46978983/xamarin-android-save-webview-in-pdf");
Button myPrintButton=FindViewById(Resource.Id.myPrintButton);
myPrintButton。单击+=(发件人,e)=>
{
var printManager=(printManager)GetSystemService(PrintService);
string fileName=“MyPrint_”+Guid.NewGuid().ToString()+”.pdf”;
var printAdapter=myWebView.CreatePrintDocumentAdapter(文件名);
PrintJob PrintJob=printManager.Print(“MyPrintJob”,printAdapter,new PrintAttributes.Builder().Build());
};
}
}
公共类MyWebViewClient:WebViewClient
{
公共重写bool ShouldOverrideUrlLoading(WebView视图,字符串url)
{
view.LoadUrl(url);
返回false;
}
}

我可以用下面的代码将整个
WebView
页面内容转换为pdf格式。希望它能帮助你。然而,我刚刚在模拟器中尝试过这个

[Activity(Label = "DroidWebview", MainLauncher = true, Icon = "@mipmap/icon")]
public class MainActivity : Activity
{
    WebView myWebView;
    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);

        // Set our view from the "main" layout resource
        SetContentView(Resource.Layout.Main);

        myWebView = FindViewById<WebView>(Resource.Id.webview);
        myWebView.Settings.JavaScriptEnabled = true;
        myWebView.SetWebViewClient(new MyWebViewClient());

        myWebView.LoadUrl("https://stackoverflow.com/questions/46978983/xamarin-android-save-webview-in-pdf");

        Button myPrintButton = FindViewById<Button>(Resource.Id.myPrintButton);
        myPrintButton.Click += (sender, e) =>
        {
            var printManager = (PrintManager)GetSystemService(PrintService);
            string fileName = "MyPrint_" + Guid.NewGuid().ToString() + ".pdf";
            var printAdapter = myWebView.CreatePrintDocumentAdapter(fileName);
            PrintJob printJob = printManager.Print("MyPrintJob", printAdapter, new PrintAttributes.Builder().Build());
        };
    }
}

public class MyWebViewClient : WebViewClient
{
    public override bool ShouldOverrideUrlLoading(WebView view, string url)
    {
        view.LoadUrl(url);
        return false;
    }
}
[活动(Label=“DroidWebview”,MainLauncher=true,Icon=“@mipmap/Icon”)]
公共课活动:活动
{
网络视图我的网络视图;
创建时受保护的覆盖无效(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
//从“主”布局资源设置视图
SetContentView(Resource.Layout.Main);
myWebView=findviewbyd(Resource.Id.webview);
myWebView.Settings.JavaScriptEnabled=true;
SetWebViewClient(新的MyWebViewClient());
myWebView.LoadUrl(“https://stackoverflow.com/questions/46978983/xamarin-android-save-webview-in-pdf");
Button myPrintButton=FindViewById(Resource.Id.myPrintButton);
myPrintButton。单击+=(发件人,e)=>
{
var printManager=(printManager)GetSystemService(PrintService);
string fileName=“MyPrint_”+Guid.NewGuid().ToString()+”.pdf”;
var printAdapter=myWebView.CreatePrintDocumentAdapter(文件名);
PrintJob PrintJob=printManager.Print(“MyPrintJob”,printAdapter,new PrintAttributes.Builder().Build());
};
}
}
公共类MyWebViewClient:WebViewClient
{
公共重写bool ShouldOverrideUrlLoading(WebView视图,字符串url)
{
view.LoadUrl(url);
返回false;
}
}

这可能会对您有所帮助:您是要制作一个包含“图像”表示的Web视图的PDF,还是制作一个包含“文本”的PDF。我认为这两种方法都适用于我,因为我只想显示和保存。我使用了@MilanG的解决方案,它是有效的,现在我只想保存在一个特定的路径中,而不显示打印对话屏幕。这可能会帮助你:你是想制作一个包含“图像”表示的网络视图的PDF,还是制作一个包含“文本”的PDF。我想这两种方法都适用于我,因为我只想显示和保存。我使用了@MilanG的解决方案,现在我只想保存在一个特定的路径中,而不显示打印对话屏幕,就这样,非常感谢!你知道在不显示打印对话屏幕的情况下是否可以保存吗?你知道iOS的方法吗?就是这样,非常感谢!你知道在不显示打印对话屏幕的情况下是否可以保存吗?你知道iOS的方法吗?