将HTML转换为PDF并在PhoneGap应用中共享原生

时间:2015-08-27 17:02:11

标签: android cordova pdf cross-platform

我想在手机间隙应用中将我的结果HTML页面转换为PDF,然后想要与手机的本机共享窗口共享它。已经做过这个或有任何想法的人,这将是很好的帮助,因为我从这里卡住了几个星期。

kendo.drawing.drawDOM($(".pdf-page"))
        .then(function(group) {
        // Render the result as a PDF file
        return kendo.drawing.exportPDF(group, {
            paperSize: "auto",
            margin: { left: "1cm", top: "1cm", right: "1cm", bottom: "1cm" }
        });
    })
    .done(function(data) {
        // Save the PDF file
        kendo.saveAs({
            dataURI: data,
            fileName: "manual.pdf",
           // proxyURL: "//demos.telerik.com/kendo-ui/service/export",
            callback:alert("done 1")
        });
    });

它在PC上工作正常,但在目前我正在测试的Android移动应用程序中无法正常工作。如果这适用于移动设备,那么我可以使用

window.plugins.socialsharing.share('这是您的PDF文件','您的PDF','www / files / manual.pdf')

分享该pdf文件

2 个答案:

答案 0 :(得分:1)

对于Phonegap / Cordova应用程序:

您可以使用jsPDF库创建dpf文件和Cordova文件插件,以便在本地保存pdf文件,并使用任何Cordova共享插件共享它。

希望link帮助您保存pdf。

答案 1 :(得分:0)

这就是我们所做的:

<script>

    $(function () {
        $("#button0PDF").kendoButton();
        var button = $("#button0PDF").data("kendoButton");

        button.bind("click", function (e) {
            kendo.drawing.drawDOM("#divId", {
                forcePageBreak: ".page-break",
                //template: $("#page-template").html()

            })
            .then(function (group) {
                // Render the result as a PDF file
                return kendo.drawing.exportPDF(group, {
                    landscape: false
                });
            })
            .done(function (data) {
                // Save the PDF file
                kendo.saveAs({
                    dataURI: data,
                    fileName: "fileName.pdf",
                    proxyURL: "/API/Main/Post",
                });
            });
        });
    });

</script>

服务器端部分:

public HttpResponseMessage Post([FromBody]FileData file)
        {
            var data = Convert.FromBase64String(file.Base64);

            var result = new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = new StreamContent(new MemoryStream(data))
            };

            result.Content.Headers.ContentType = new MediaTypeHeaderValue(file.ContentType);

            result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
            {
                FileName = file.FileName
            };

            return result;
        }