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.