我需要从我们的应用程序中的URL生成pdf报告。是否可以在生成的同一pdf文档中同时包含“横向”页面和“纵向”页面?
我想将条形图设置为“纵向”,将“表”设置为“横向”(水平)。查看EVO文档,我不知道是否可行。
我知道您可以使用定义风景或肖像
htmlToPdfConverter.PdfDocumentOptions.PdfPageOrientation
但这适用于整个文档。我想要一些可能定义html的文件,该文件将告诉EVO将本节打印为风景。
答案 0 :(得分:0)
您可以在同一PDF中包含“纵向”和“横向”部分。为此,您可以创建一个空白的Document对象,并向该文档添加具有所需方向的PDF页面。在新创建的PDF页面上,您可以添加HtmlToPdfElement对象以呈现HTML,并自动以与最初创建的PDF页面相同的方向添加PDF页面。可以使用不同方向的PDF页面重复该过程。 Merge Multiple HTML Pages into a Single PDF演示中有一个使用C#代码的实时示例,介绍了这种方法。代码示例也复制到下面:
protected void convertToPdfButton_Click(object sender, EventArgs e)
{
// Create the PDF document where to add the HTML documents
Document pdfDocument = new Document();
// Create a PDF page where to add the first HTML
PdfPage firstPdfPage = pdfDocument.AddPage();
try
{
// Create the first HTML to PDF element
HtmlToPdfElement firstHtml = new HtmlToPdfElement(0, 0, firstUrlTextBox.Text);
// Optionally set a delay before conversion to allow asynchonous scripts to finish
firstHtml.ConversionDelay = 2;
// Add the first HTML to PDF document
AddElementResult firstAddResult = firstPdfPage.AddElement(firstHtml);
PdfPage secondPdfPage = null;
PointF secondHtmlLocation = Point.Empty;
if (startNewPageCheckBox.Checked)
{
// Create a PDF page where to add the second HTML
secondPdfPage = pdfDocument.AddPage();
secondHtmlLocation = PointF.Empty;
}
else
{
// Add the second HTML on the PDF page where the first HTML ended
secondPdfPage = firstAddResult.EndPdfPage;
secondHtmlLocation = new PointF(firstAddResult.EndPageBounds.Left, firstAddResult.EndPageBounds.Bottom);
}
// Create the second HTML to PDF element
HtmlToPdfElement secondHtml = new HtmlToPdfElement(secondHtmlLocation.X, secondHtmlLocation.Y, secondUrlTextBox.Text);
// Optionally set a delay before conversion to allow asynchonous scripts to finish
secondHtml.ConversionDelay = 2;
// Add the second HTML to PDF document
secondPdfPage.AddElement(secondHtml);
// Save the PDF document in a memory buffer
byte[] outPdfBuffer = pdfDocument.Save();
// 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=Merge_Multipe_HTML.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();
}
finally
{
// Close the PDF document
pdfDocument.Close();
}
}