導航:首頁 > 文檔加密 > aspnet生成pdf

aspnet生成pdf

發布時間:2022-06-04 20:12:12

1. c# 如何將網頁轉換成pdf

把網頁轉換為pdf?
好像很難。
我曾經搞過類型的項目。
網上有iTextSharp這樣的開源庫,可以操作pdf文件。
但是,要把網頁轉為pdf, 這涉及對網頁的渲染工作,這個只有IE才能完成。

如果運行的環境可控,可以考慮採用為運行環境安裝一個PDF列印機什麼的。然後用DDE技術調用IE直接把指定的網頁列印到PDF列印機。就生成了PDF文件。

如果運行環境不可控,那真得是很難。

2. c#怎樣將頁面生成pdf文件

需要瀏覽器的介入
安裝單獨的pdf虛擬列印機(pdffactory、ultra
pdf、Adobe
Acrobat
Professional
7,等),通過網頁的列印功能轉換

3. C#生成PDF頁腳第幾頁共幾頁

我用的是 這個組件來實現的.net生成PDF。首先創建一個工程,然後引用這個組件然後創建一個頁面,添加一個 按鈕然後開始寫後台了。。不多說,直接貼代碼。protected void Button1_Click(object sender, EventArgs e) { PDF(); } private void PDF() { string filePath = "C:\\PDF"; if (false == Directory.Exists(filePath)) Directory.CreateDirectory(filePath); string filename = filePath + "/PDF.pdf";//設置保存路徑 Document doc = new Document(iTextSharp.text.PageSize.A4, 25, 25, 50, 40);//定義pdf大小,設置上下左右邊距 PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(filename, FileMode.Create));//生成pdf路徑,創建文件流 doc.Open(); writer.PageEvent = new HeaderAndFooterEvent(); HeaderAndFooterEvent.PAGE_NUMBER = true;//不實現頁眉跟頁腳 First(doc, writer);//封面頁 doc.NewPage();//新建一頁 PdfHeader(doc, writer);//在新建的一頁裡面加入數據 HeaderAndFooterEvent.PAGE_NUMBER = false;//開始書寫頁眉跟頁腳 writer.Flush(); writer.CloseStream = true; doc.Close(); } private void PdfHeader(Document doc, PdfWriter writer) { string totalStar = string.Empty; writer.PageEvent = new HeaderAndFooterEvent(); string tmp = "這個是標題"; doc.Add(HeaderAndFooterEvent.InsertTitleContent(tmp)); } private void First(Document doc, PdfWriter writer) { string tmp = "分析報告"; doc.Add(HeaderAndFooterEvent.InsertTitleContent(tmp)); tmp = "(正文 頁,附件 0 頁)"; doc.Add(HeaderAndFooterEvent.InsertTitleContent(tmp)); //模版 顯示總共頁數 HeaderAndFooterEvent.tpl = writer.DirectContent.CreateTemplate(100, 100); //模版的寬度和高度 PdfContentByte cb = writer.DirectContent; cb.AddTemplate(HeaderAndFooterEvent.tpl, 266, 714);//調節模版顯示的位置 }然後再新建一個類 這個類是用來重寫Itext組件的一些方法的。該類要繼承類PdfPageEventHelper和介面IPdfPageEvent然後重寫裡面的方法 public static PdfTemplate tpl = null;//模版 public static bool PAGE_NUMBER = false;//為True時就生成 頁眉和頁腳 iTextSharp.text.Font font = BaseFontAndSize("黑體", 10, Font.NORMAL, BaseColor.BLACK); //重寫 關閉一個頁面時 public override void OnEndPage(PdfWriter writer, Document document) { if (PAGE_NUMBER) { Phrase header = new Phrase("PDF測試生成頁眉分析報告", font); Phrase footer = new Phrase("第" + (writer.PageNumber - 1) + "頁/共 頁", font); PdfContentByte cb = writer.DirectContent; //模版 顯示總共頁數 cb.AddTemplate(tpl, document.Right - 54 + document.LeftMargin, document.Bottom - 8);//調節模版顯示的位置 //頁眉顯示的位置 ColumnText.ShowTextAligned(cb, Element.ALIGN_CENTER, header, document.Right - 140 + document.LeftMargin, document.Top + 10, 0); //頁腳顯示的位置 ColumnText.ShowTextAligned(cb, Element.ALIGN_CENTER, footer, document.Right - 60 + document.LeftMargin, document.Bottom - 10, 0); } } //重寫 打開一個新頁面時 public override void OnStartPage(PdfWriter writer, Document document) { if (PAGE_NUMBER) { writer.PageCount = writer.PageNumber-1; } } //關閉PDF文檔時發生該事件 public override void OnCloseDocument(PdfWriter writer, Document document) { BaseFont bf = BaseFont.CreateFont(@"c:\windows\fonts\SIMYOU.TTF", BaseFont.IDENTITY_H, false); //調用的字體 tpl.BeginText(); tpl.SetFontAndSize(bf, 16);//生成的模版的字體、顏色 tpl.ShowText((writer.PageNumber - 2).ToString());//模版顯示的內容 tpl.EndText(); tpl.ClosePath(); } //定義字體 顏色 public static Font BaseFontAndSize(string font_name, int size, int style, BaseColor baseColor) { BaseFont baseFont; BaseFont.AddToResourceSearch("iTextAsian.dll"); BaseFont.AddToResourceSearch("iTextAsianCmaps.dll"); Font font = null; string file_name = ""; int fontStyle; switch (font_name) { case "黑體": file_name = "SIMHEI.TTF"; break; case "華文中宋": file_name = "STZHONGS.TTF"; break; case "宋體": file_name = "SIMYOU.TTF"; break; default: file_name = "SIMYOU.TTF"; break; } baseFont = BaseFont.CreateFont(@"c:/windows/fonts/" + file_name, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);//字體:黑體 if (style < -1) { fontStyle = Font.NORMAL; } else { fontStyle = style; } font = new Font(baseFont, size, fontStyle, baseColor); return font; } //定義輸出文本 public static Paragraph InsertTitleContent(string text) { iTextSharp.text.Font font = BaseFontAndSize("華文中宋", 16, Font.BOLD,BaseColor.BLACK); //BaseFont bfSun = BaseFont.CreateFont(@"c:\windows\fonts\STZHONGS.TTF", BaseFont.IDENTITY_H, false); //調用的字體 //Font font = new Font(bfSun, 15); Paragraph paragraph = new Paragraph(text, font);//新建一行 paragraph.Alignment = Element.ALIGN_CENTER;//居中 paragraph.SpacingBefore = 5; paragraph.SpacingAfter = 5; paragraph.SetLeading(1, 2);//每行間的間隔 return paragraph; } 好了,大功告成了!!!

4. c# winform 圖片轉換PDF

這個需要藉助第三方類庫。你可以下載Free Spire.PDF的dll並引用,然後用下面的代碼將圖片轉換為PDF:

//創建PDF文檔並添加頁面
PdfDocumentdoc=newPdfDocument();
PdfPageBasepage=doc.Pages.Add();

//載入圖片
PdfImageimage=PdfImage.FromFile(@"D:imagesear.tif");

//將圖片添加到頁面的指定位置
floatwidthFitRate=image.PhysicalDimension.Width/page.Canvas.ClientSize.Width;
floatheightFitRate=image.PhysicalDimension.Height/page.Canvas.ClientSize.Height;
floatfitRate=Math.Max(widthFitRate,heightFitRate);
floatfitWidth=image.PhysicalDimension.Width/fitRate;
floatfitHeight=image.PhysicalDimension.Height/fitRate;
page.Canvas.DrawImage(image,30,30,fitWidth,fitHeight);

//保持並關閉
doc.SaveToFile("imagetopdf.pdf");
doc.Close();

5. c#利用spire生成pdf只能3頁

這是因為你用的免費版本,免費版本對操作的PDF文檔頁數有一定限制,官方網站上有明確說明:

友情提示:免費版有 10 頁的頁數限制,在創建和載入 PDF 文檔時要求文檔不超過 10 頁。將 PDF 文檔轉換為圖片時,僅支持轉換前 3 頁。

如果要求使用完整的功能、沒限制的,就要用商業版的。

6. c#生成的pdf的大小為0kb

0KB那就是生成的PDF文檔沒內容,看下你的代碼是哪裡有問題。建議可以通過PDF庫來實現生成文檔。可參考下面的代碼方法:


using System.Drawing;

using Spire.Pdf;

using Spire.Pdf.Graphics;

namespace CreatePDF_PDF

{

class Program

{

static void Main(string[] args)

{

//初始化一個PdfDocument類實例

PdfDocument document = new PdfDocument();

//聲明 PdfUnitConvertor和PdfMargins類對象

PdfUnitConvertor unitCvtr = new PdfUnitConvertor();

PdfMargins margins = new PdfMargins();

//設置頁邊距

margins.Top = unitCvtr.ConvertUnits(2.54f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point);

margins.Bottom = margins.Top;

margins.Left = unitCvtr.ConvertUnits(3.17f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point);

margins.Right = margins.Left;

//新添加一個A4大小的頁面

PdfPageBase page = document.Pages.Add(PdfPageSize.A4, margins);

//自定義PdfTrueTypeFont、PdfBrush實例,設置字體類型、字型大小和字體顏色

PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("楷體", 15f),true);

PdfBrush brush = PdfBrushes.Red;

//調用DrawString()方法在指定位置寫入文本

string text = ("《蝶戀花 送春》 樓外垂楊千萬縷,欲系青春,少住春還去。猶自風前飄柳絮,隨春且看歸何處? 綠滿山川聞杜宇,便作無情,莫也愁人苦。把酒送春春不語,黃昏卻下瀟瀟雨。");

page.Canvas.DrawString(text, font, brush, 15, 13);

//載入圖片,並調用DrawImage()方法在指定位置繪入圖片

PdfImage image = PdfImage.FromFile("img.jpg");

float width = image.Width;

float height = image.Height;

page.Canvas.DrawImage(image, 15, 100, width, height);

//保存並打開文檔

document.SaveToFile("PDF創建.pdf");

System.Diagnostics.Process.Start("PDF創建.pdf");

}

}

}

執行程序後,在C: Studio 2013ProjectsCreatePDF_PDFCreatePDF_PDFinDebug路徑下可查看生成的文檔。可以看到生成的文檔大小,如圖:

7. .net如何將頁面生成pdf

using System;
using System.IO;
using System.Text;
using System.Collections;

namespace PDFGenerator
{

public class PDFGenerator
{
static float pageWidth = 594.0f;
static float pageDepth = 828.0f;
static float pageMargin = 30.0f;
static float fontSize = 20.0f;
static float leadSize = 10.0f;

static StreamWriter pPDF=new StreamWriter("E:\\myPDF.pdf");

static MemoryStream mPDF= new MemoryStream();

static void ConvertToByteAndAddtoStream(string strMsg)
{
Byte[] buffer=null;
buffer=ASCIIEncoding.ASCII.GetBytes(strMsg);
mPDF.Write(buffer,0,buffer.Length);
buffer=null;
}

static string xRefFormatting(long xValue)
{
string strMsg =xValue.ToString();
int iLen=strMsg.Length;
if (iLen<10)
{
StringBuilder s=new StringBuilder();
int i=10-iLen;
s.Append('0',i);
strMsg=s.ToString() + strMsg;
}
return strMsg;
}

static void Main(string[] args)
{
ArrayList xRefs=new ArrayList();
//Byte[] buffer=null;
float yPos =0f;
long streamStart=0;
long streamEnd=0;
long streamLen =0;
string strPDFMessage=null;
//PDF文檔頭信息
strPDFMessage="%PDF-1.1\n";
ConvertToByteAndAddtoStream(strPDFMessage);

xRefs.Add(mPDF.Length);
strPDFMessage="1 0 obj\n";
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage="<< /Length 2 0 R >>\n";
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage="stream\n";
ConvertToByteAndAddtoStream(strPDFMessage);
////////PDF文檔描述
streamStart=mPDF.Length;
//字體
strPDFMessage="BT\n/F0 " + fontSize +" Tf\n";
ConvertToByteAndAddtoStream(strPDFMessage);
//PDF文檔實體高度
yPos = pageDepth - pageMargin;
strPDFMessage=pageMargin + " " + yPos +" Td\n" ;
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage= leadSize+" TL\n" ;
ConvertToByteAndAddtoStream(strPDFMessage);

//實體內容
strPDFMessage= "(http://www.wenhui.org)Tj\n" ;
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage= "ET\n";
ConvertToByteAndAddtoStream(strPDFMessage);
streamEnd=mPDF.Length;

streamLen=streamEnd-streamStart;
strPDFMessage= "endstream\nendobj\n";
ConvertToByteAndAddtoStream(strPDFMessage);
//PDF文檔的版本信息
xRefs.Add(mPDF.Length);
strPDFMessage="2 0 obj\n"+ streamLen + "\nendobj\n";
ConvertToByteAndAddtoStream(strPDFMessage);

xRefs.Add(mPDF.Length);
strPDFMessage="3 0 obj\n<</Type/Page/Parent 4 0 R/Contents 1 0 R>>\nendobj\n";
ConvertToByteAndAddtoStream(strPDFMessage);

xRefs.Add(mPDF.Length);
strPDFMessage="4 0 obj\n<</Type /Pages /Count 1\n";
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage="/Kids[\n3 0 R\n]\n";
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage="/Resources<</ProcSet[/PDF/Text]/Font<</F0 5 0 R>> >>\n";
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage="/MediaBox [ 0 0 "+ pageWidth + " " + pageDepth + " ]\n>>\nendobj\n";
ConvertToByteAndAddtoStream(strPDFMessage);

xRefs.Add(mPDF.Length);
strPDFMessage="5 0 obj\n<</Type/Font/Subtype/Type1/BaseFont/Courier/Encoding/WinAnsiEncoding>>\nendobj\n";
ConvertToByteAndAddtoStream(strPDFMessage);

xRefs.Add(mPDF.Length);
strPDFMessage="6 0 obj\n<</Type/Catalog/Pages 4 0 R>>\nendobj\n";
ConvertToByteAndAddtoStream(strPDFMessage);

streamStart=mPDF.Length;
strPDFMessage="xref\n0 7\n0000000000 65535 f \n";
for(int i=0;i<xRefs.Count;i++)
{
strPDFMessage+=xRefFormatting((long) xRefs[i])+" 00000 n \n";
}
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage="trailer\n<<\n/Size "+ (xRefs.Count+1)+"\n/Root 6 0 R\n>>\n";
ConvertToByteAndAddtoStream(strPDFMessage);

strPDFMessage="startxref\n" + streamStart+"\n%%EOF\n";
ConvertToByteAndAddtoStream(strPDFMessage);
mPDF.WriteTo(pPDF.BaseStream);

mPDF.Close();
pPDF.Close();
}
}

另外:C#中生成PDF文件的方法挺多,可以使用iTextSharp控制項,還有aspose的控制項也可以。這些控制項的功能都很強大,所以控制項的大小也會很大

8. C#Winform怎麼把窗口上的信息生成PDF文件

生成PDF文件?
如果是保存成.pdf格式還好實現,也就是將當前表格內容導出到PDF.

閱讀全文

與aspnet生成pdf相關的資料

熱點內容
應用被加密但不知道密碼 瀏覽:584
百度雲黑馬android 瀏覽:771
java格式化long 瀏覽:893
汽車如何加密文檔 瀏覽:625
公司理財第9版pdf 瀏覽:524
微信個人表情在文件夾 瀏覽:833
加密狗密碼監控 瀏覽:437
重載發生在編譯時 瀏覽:417
怎麼用app買東西 瀏覽:532
ug後處理多坐標宏命令 瀏覽:34
性教育pdf 瀏覽:863
解釋方式編譯方式名詞解釋 瀏覽:851
wrf編譯出現module 瀏覽:616
插入演算法最基礎代碼 瀏覽:27
powermill和ug編程 瀏覽:843
vf命令按鈕 瀏覽:283
塗鴉王國app怎麼 瀏覽:37
oppo如何關閉加密應用震動 瀏覽:802
直接拍PDF 瀏覽:580
伺服器有一個自動分配的ip地址嗎 瀏覽:470