导航:首页 > 文档加密 > 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相关的资料

热点内容
模拟实现进程调度算法 浏览:386
现在的压缩包都是加密 浏览:329
施工员找工作去哪个app 浏览:630
安卓手机的游戏怎么打开 浏览:198
pdf扫描转文字 浏览:532
微机室里面的云服务器 浏览:108
excel能编程吗 浏览:931
android系统框架的介绍 浏览:947
无盘系统服务器如何配置 浏览:836
背负贷款如何缓解压力 浏览:82
linux获取日期时间 浏览:881
搬砖问题最合适的算法 浏览:446
小米安卓机密码忘记了如何解锁 浏览:910
产电plc编程手册 浏览:761
vscodephp 浏览:535
阿里云linux桌面 浏览:754
php二维数组搜索 浏览:116
ps快捷命令工具箱 浏览:253
c4d教程pdf 浏览:462
linux集群安装配置 浏览:154