2013-03-14 5 views
3

Winnovative Html to Pdf Converter v8.0.0.0을 사용할 때 내 pdf 페이지 번호가 올바르지 않습니다. 내가 한 일은 여기에있다. 나는Winnovative Html to pdf 변환기 페이지 번호가 첨부 된 문서에서 올바르지 않습니다.

pdfDocument.AppendDocument(pdfConverter.GetPdfDocumentObjectFromUrl(SecondUrl)); 

모든 페이지에서 결과 URL에서 문서를 추가

pdfDocument = pdfConverter.GetPdfDocumentObjectFromUrl(FirstUrl); 

나는이 URL에서 문서를 만들

pdfConverter.PdfFooterOptions.AddTextArea(new TextArea(500, 0, 50, "&p;/&P;", new Font(new FontFamily("Arial"), 8))); 

다음 내 계산기에 바닥 글을 설정 첫 번째 URL에 올바른 페이지 번호가 있지만 첨부 된 문서의 페이지 번호가 다시 계산되지 않는 것 같습니다

예 : FirstUrl의 결과는 3 페이지이고 두 번째는 2 페이지입니다.

PdfFont pdfFont = pdfDocument.Fonts.Add(new Font(new FontFamily("Arial"), 8)); 
    string strPageNum = "&p;/&P;"; 
    TextElement footerPageNumber = new TextElement(500, 0, 50, strPageNum, pdfFont); 
    pdfDocument.FooterTemplate.AddElement(footerPageNumber); 
: 나는이 같은 변환 후 변환기하지만 pdfDocument에 바닥 글을 추가하지 않으려

1/5 
2/5 
3/5 
4/5 
5/5 

: 페이지 번호는 내가처럼이 원하는

1/5 
2/5 
3/5 
1/2 
2/2 

있습니다

하지만이 경우. 첫 번째 URL의 페이지 만 페이지 번호를 가져오고 첨부 된 문서의 페이지에는 볼 수 없습니다.

도움 주셔서 감사합니다.

답변

0

다른 프로젝트에서 같은 문제가 발생한 후에. 나는 많은 URL에서 pdf를 만드는 정확한 방법을 마침내 찾는다. 내가 얻을 다른 PDF를 추가

pdfDocument = pdfConverter.GetPdfDocumentObjectFromUrl(firstUrl); 

대신의 :

pdfConverter.PdfFooterOptions.AddTextArea(new TextArea(500, 0, 50, "&p;/&P;", new Font(new FontFamily("Arial"), 8))); 

그때 난 그냥 이전처럼 URL에서 문서를 만들 :

나는 아직도이 같은 문서 바닥 글을 설정 HtmlToPdfElement의 두 번째 URL은 다음과 같습니다.

HtmlToPdfElement pdfBody = new HtmlToPdfElement(secoundUrl); 

마지막으로 ew 페이지. 당신이 appeneded 또는 전환의 결과 앞에 추가 외부 PDF 문서에서 현재 머리글과 바닥 글을 추가 할 수 있습니다 PDF 변환기 Winovative HTML의 최신 버전에서

PdfPage newPage = pdfDocument.Pages.AddNewPage(); 
newPage.AddElement(pdfBody); 
-1

.

protected void convertToPdfButton_Click(object sender, EventArgs e) 
{ 
    // Create a HTML to PDF converter object with default settings 
    HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter(); 

    // Set the PDF file to be inserted before conversion result 
    string pdfFileBefore = Server.MapPath("~/DemoAppFiles/Input/PDF_Files/Merge_Before_Conversion.pdf"); 
    htmlToPdfConverter.PdfDocumentOptions.AddStartDocument(pdfFileBefore, addHeaderFooterInInsertedPdfCheckBox.Checked, 
         showHeaderInFirstPageCheckBox.Checked, showFooterInFirstPageCheckBox.Checked); 

    // Set the PDF file to be added after conversion result 
    string pdfFileAfter = Server.MapPath("~/DemoAppFiles/Input/PDF_Files/Merge_After_Conversion.pdf"); 
    htmlToPdfConverter.PdfDocumentOptions.AddEndDocument(pdfFileAfter, addHeaderFooterInAppendedPdfCheckBox.Checked, true, true); 

    // Enable header in the generated PDF document 
    htmlToPdfConverter.PdfDocumentOptions.ShowHeader = true; 

    // Draw header elements 
    if (htmlToPdfConverter.PdfDocumentOptions.ShowHeader) 
     DrawHeader(htmlToPdfConverter, true); 

    // Enable footer in the generated PDF document 
    htmlToPdfConverter.PdfDocumentOptions.ShowFooter = true; 

    // Draw footer elements 
    if (htmlToPdfConverter.PdfDocumentOptions.ShowFooter) 
     DrawFooter(htmlToPdfConverter, true, true); 

    string url = urlTextBox.Text; 

    // Convert the HTML page to a PDF document and add the external PDF documents 
    byte[] outPdfBuffer = htmlToPdfConverter.ConvertUrl(url); 

    // 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("attachment; filename=Header_Footer_in_External_PDF.pdf; size={0}", 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(); 
} 

/// <summary> 
/// Draw the header elements 
/// </summary> 
/// <param name="htmlToPdfConverter">The HTML to PDF Converter object</param> 
/// <param name="drawHeaderLine">A flag indicating if a line should be drawn at the bottom of the header</param> 
private void DrawHeader(HtmlToPdfConverter htmlToPdfConverter, bool drawHeaderLine) 
{ 
    string headerHtmlUrl = Server.MapPath("~/DemoAppFiles/Input/HTML_Files/Header_HTML.html"); 

    // Set the header height in points 
    htmlToPdfConverter.PdfHeaderOptions.HeaderHeight = 60; 

    // Set header background color 
    htmlToPdfConverter.PdfHeaderOptions.HeaderBackColor = Color.White; 

    // Create a HTML element to be added in header 
    HtmlToPdfElement headerHtml = new HtmlToPdfElement(headerHtmlUrl); 

    // Set the HTML element to fit the container height 
    headerHtml.FitHeight = true; 

    // Add HTML element to header 
    htmlToPdfConverter.PdfHeaderOptions.AddElement(headerHtml); 

    if (drawHeaderLine) 
    { 
     // Calculate the header width based on PDF page size and margins 
     float headerWidth = htmlToPdfConverter.PdfDocumentOptions.PdfPageSize.Width - 
        htmlToPdfConverter.PdfDocumentOptions.LeftMargin - htmlToPdfConverter.PdfDocumentOptions.RightMargin; 

     // Calculate header height 
     float headerHeight = htmlToPdfConverter.PdfHeaderOptions.HeaderHeight; 

     // Create a line element for the bottom of the header 
     LineElement headerLine = new LineElement(0, headerHeight - 1, headerWidth, headerHeight - 1); 

     // Set line color 
     headerLine.ForeColor = Color.Gray; 

     // Add line element to the bottom of the header 
     htmlToPdfConverter.PdfHeaderOptions.AddElement(headerLine); 
    } 
} 

/// <summary> 
/// Draw the footer elements 
/// </summary> 
/// <param name="htmlToPdfConverter">The HTML to PDF Converter object</param> 
/// <param name="addPageNumbers">A flag indicating if the page numbering is present in footer</param> 
/// <param name="drawFooterLine">A flag indicating if a line should be drawn at the top of the footer</param> 
private void DrawFooter(HtmlToPdfConverter htmlToPdfConverter, bool addPageNumbers, bool drawFooterLine) 
{ 
    string footerHtmlUrl = Server.MapPath("~/DemoAppFiles/Input/HTML_Files/Footer_HTML.html"); 

    // Set the footer height in points 
    htmlToPdfConverter.PdfFooterOptions.FooterHeight = 60; 

    // Set footer background color 
    htmlToPdfConverter.PdfFooterOptions.FooterBackColor = Color.WhiteSmoke; 

    // Create a HTML element to be added in footer 
    HtmlToPdfElement footerHtml = new HtmlToPdfElement(footerHtmlUrl); 

    // Set the HTML element to fit the container height 
    footerHtml.FitHeight = true; 

    // Add HTML element to footer 
    htmlToPdfConverter.PdfFooterOptions.AddElement(footerHtml); 

    // Add page numbering 
    if (addPageNumbers) 
    { 
     // Create a text element with page numbering place holders &p; and & P; 
     TextElement footerText = new TextElement(0, 30, "Page &p; of &P; ", 
      new System.Drawing.Font(new System.Drawing.FontFamily("Times New Roman"), 10, System.Drawing.GraphicsUnit.Point)); 

     // Align the text at the right of the footer 
     footerText.TextAlign = HorizontalTextAlign.Right; 

     // Set page numbering text color 
     footerText.ForeColor = Color.Navy; 

     // Embed the text element font in PDF 
     footerText.EmbedSysFont = true; 

     // Add the text element to footer 
     htmlToPdfConverter.PdfFooterOptions.AddElement(footerText); 
    } 

    if (drawFooterLine) 
    { 
     // Calculate the footer width based on PDF page size and margins 
     float footerWidth = htmlToPdfConverter.PdfDocumentOptions.PdfPageSize.Width - 
        htmlToPdfConverter.PdfDocumentOptions.LeftMargin - htmlToPdfConverter.PdfDocumentOptions.RightMargin; 

     // Create a line element for the top of the footer 
     LineElement footerLine = new LineElement(0, 0, footerWidth, 0); 

     // Set line color 
     footerLine.ForeColor = Color.Gray; 

     // Add line element to the bottom of the footer 
     htmlToPdfConverter.PdfFooterOptions.AddElement(footerLine); 
    } 
} 
: 당신은 여기에 그 데모 응용 프로그램에서 복사 한 관련 코드가 Add Header and Footer In External PDF Documents demo

에서 C# 소스 코드와 완전한 예를 찾을 수 있습니다