首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTML到PDF Rocket - PDF生成

HTML到PDF Rocket - PDF生成
EN

Stack Overflow用户
提问于 2015-05-07 04:18:31
回答 2查看 1.9K关注 0票数 2

我正在尝试转换一个HTML到PDF从一个蓝色网站,其中包含图像和css文件,如“引导”。

我的代码(与本案例的教程相同- MVC c# - http://www.html2pdfrocket.com/Examples/CSharp)

代码语言:javascript
复制
string apiKey = "MY KEY";
string value = html; // SOME HTML IN STRING FORMAT

using (var client = new WebClient())
            {
                // Build the conversion options
                NameValueCollection options = new NameValueCollection();
                options.Add("apikey", apiKey);
                options.Add("value", value);

                // Call the API convert to an image
                byte[] result = client.UploadValues("http://api.html2pdfrocket.com/pdf", options);

                // Save the image to disk
                System.IO.File.WriteAllBytes(Server.MapPath("~/PDF/somepdf.pdf"), result);
            }

代码正在生成pdf文件,但没有css样式和图像。

我如何解决这个问题?

html非常简单,只有一个表格,一张图片和一个css文件"bootstrap“。

我想在html中显示的图像是这样放置的:

代码语言:javascript
复制
 <img id="image" src="~/Images/someimage.jpg" >

CSS文件是:

代码语言:javascript
复制
<link href="~/Scripts/bootstrap/dist/css/bootstrap.css" rel="stylesheet" />

我也有一些这样的CSS类:

代码语言:javascript
复制
#header {
    padding: 0;
    margin: 0;
    float: left;
    position: relative;
    min-height: 1px;
    font-size: 12px;
}

我已经尝试放置镜像和"bootstrap“的完整路径,但仍然不起作用。

EN

回答 2

Stack Overflow用户

发布于 2016-11-29 08:24:06

您只需将所有链接更改为完整地址,如

代码语言:javascript
复制
<link href="https://www.example.com/Scripts/bootstrap/dist/css/bootstrap.css" rel="stylesheet" />

或者创建一个html页面并将此html页面的url发送到API。

票数 4
EN

Stack Overflow用户

发布于 2015-09-17 16:28:25

对于Azure网站,你可以使用EvoPdf的HTML to PDF for Azure解决方案。你可以从网站下载的包包含一个演示Azure网站。demo源码如下:

代码语言:javascript
复制
protected void convertToPdfButton_Click(object sender, EventArgs e)
{
    // Get the server IP and port
    String serverIP = textBoxServerIP.Text;
    uint serverPort = uint.Parse(textBoxServerPort.Text);

    // Create a HTML to PDF converter object with default settings
    HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter(serverIP, serverPort);

    // Set optional service password
    if (textBoxServicePassword.Text.Length > 0)
        htmlToPdfConverter.ServicePassword = textBoxServicePassword.Text;

    // Set HTML Viewer width in pixels which is the equivalent in converter of the browser window width
    htmlToPdfConverter.HtmlViewerWidth = int.Parse(htmlViewerWidthTextBox.Text);

    // Set HTML viewer height in pixels to convert the top part of a HTML page 
    // Leave it not set to convert the entire HTML
    if (htmlViewerHeightTextBox.Text.Length > 0)
        htmlToPdfConverter.HtmlViewerHeight = int.Parse(htmlViewerHeightTextBox.Text);

    // Set PDF page size which can be a predefined size like A4 or a custom size in points 
    // Leave it not set to have a default A4 PDF page
    htmlToPdfConverter.PdfDocumentOptions.PdfPageSize = SelectedPdfPageSize();

    // Set PDF page orientation to Portrait or Landscape
    // Leave it not set to have a default Portrait orientation for PDF page
    htmlToPdfConverter.PdfDocumentOptions.PdfPageOrientation = SelectedPdfPageOrientation();

    // Set the maximum time in seconds to wait for HTML page to be loaded 
    // Leave it not set for a default 60 seconds maximum wait time
    htmlToPdfConverter.NavigationTimeout = int.Parse(navigationTimeoutTextBox.Text);

    // Set an adddional delay in seconds to wait for JavaScript or AJAX calls after page load completed
    // Set this property to 0 if you don't need to wait for such asynchcronous operations to finish
    if (conversionDelayTextBox.Text.Length > 0)
        htmlToPdfConverter.ConversionDelay = int.Parse(conversionDelayTextBox.Text);

    // The buffer to receive the generated PDF document
    byte[] outPdfBuffer = null;

    if (convertUrlRadioButton.Checked)
    {
        string url = urlTextBox.Text;

        // Convert the HTML page given by an URL to a PDF document in a memory buffer
        outPdfBuffer = htmlToPdfConverter.ConvertUrl(url);
    }
    else
    {
        string htmlString = htmlStringTextBox.Text;
        string baseUrl = baseUrlTextBox.Text;

        // Convert a HTML string with a base URL to a PDF document in a memory buffer
        outPdfBuffer = htmlToPdfConverter.ConvertHtml(htmlString, baseUrl);
    }

    // Send the PDF as response to browser

    // Set response content type
    Response.AddHeader("Content-Type", "application/pdf");

    // Instruct the browser to open the PDF file as an attachment or inline
    Response.AddHeader("Content-Disposition", String.Format("{0}; filename=Getting_Started.pdf; size={1}",
        openInlineCheckBox.Checked ? "inline" : "attachment", outPdfBuffer.Length.ToString()));

    // Write the PDF document buffer to HTTP response
    Response.BinaryWrite(outPdfBuffer);

    // End the HTTP response and stop the current page processing
    Response.End();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30086727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档