5

EvoPDF HTMLからPDFへの変換ライブラリ(http://www.evopdf.com/)は、Windows Azureクラウドプラットフォームをサポートしていると主張していますが、動作させることができません。例外が発生します:

[Exception: Could not get conversion result header. Data receive error. Could not receive data. Error code: 109]
   EvoPdf.HtmlToPdf.ImgConverter.GetLayoutFromUrl(String url, ps& htmlParseInfo) +622
   EvoPdf.HtmlToPdf.PdfConverter.ConvertAndGetPdfDocument(String url, String htmlString, String baseUrl, String internalLinksDocUrl, Boolean fromUrl) +9748
   EvoPdf.HtmlToPdf.PdfConverter.ConvertAndSaveToStream(Stream outStream, String url, String htmlString, String baseUrl, String internalLinksDocUrl, Boolean fromUrl) +61
   EvoPdf.HtmlToPdf.PdfConverter.SavePdfFromUrlToStream(String url, Stream outPdfStream) +20

これは、ライブラリがWebリクエストを介してHTMLコンテンツをフェッチする時点で失敗しているように見えます。Azureには、Webリクエストの送信を妨げるものはありますか?

ライブラリは、ネイティブDLLとマネージアセンブリの2つのDLLとしてデプロイされます。ネイティブDLLをロードできるようにするために必要な特別なAzure構成はありますか?(ライブラリはxcopyの展開をサポートしていますが、他のホスティング環境でもこのように機能しています)。

4

4 に答える 4

4

私が見る限り、Azure Webサイトではなく、AzureWebロールを使用する必要があります。サイトは完全な信頼での実行をサポートしていません。

http://blogs.msdn.com/b/silverlining/archive/2012/06/27/windows-azure-websites-web-roles-and-vms-when-to-use-which.aspx

EvoPdfには、EvoPdfdllを実行できるサイトでWebロールをセットアップする方法を示すダウンロード可能なAzure用のサンプルプロジェクトがあります。

于 2012-11-29T12:55:58.783 に答える
1

.datファイルを含める

evointernal.datもサイトにコピー/インクルードしましたか?これでエラー109が解決しました。*.dllファイルと同じフォルダにある必要があります。

背景:DLL+DATファイル

EVO HTML to PDFライブラリは、次の3つのファイルで構成されています。

  • evohtmltopdf.dll
  • evohtmltopdf.xml
  • evointernal.dat

DLLを更新した後、evointernal.datも更新することに注意してください。そうしないと、109エラーが再発します。

于 2017-05-08T09:22:53.140 に答える
0

問題がネイティブDLLに関連している場合は、ServiceDefinition.csdefの次の属性を変更してみてください。

  • enableNativeCodeExecution:これがtrueに設定されていることを確認してください(trueがデフォルトです)
  • executeContext:これを昇格に変更してみてください

また、64ビットバージョンのDLLを展開しましたか?

エラーメッセージに「エラーコード:109」も表示されますが、EvoPDFに連絡して、これが何を意味するのか尋ねることはできませんか?

更新: ASP.NETで実行している場合、信頼レベルを変更してみてください。

<configuration>
  <system.web>
    <trust level="Full" />
  </system.web>
</configuration>
于 2012-09-17T14:07:51.773 に答える
0

.NET用のEVOHTMLからPDFへの一般的なライブラリは、Azure Webロール、Azureワーカーロール、およびAzure仮想マシンで直接機能します。

Azure Webサイトの場合、AzureWebサイトソリューションのEVOHTMLからPDFを使用できます。そこからコピーされたコードサンプルは次のとおりです。

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();
}
于 2015-08-10T07:58:59.270 に答える