社区
C#
帖子详情
求用C#实现生成PDF文档
wht526
2008-05-04 01:39:02
求用C#实现生成PDF文档
...全文
93
3
打赏
收藏
求用C#实现生成PDF文档
求用C#实现生成PDF文档
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yuchongjike
2008-05-04
打赏
举报
回复
我记得用水晶报表可以生成的。
baihe_591
2008-05-04
打赏
举报
回复
不懂,学习了。
朝圆夜不圆
2008-05-04
打赏
举报
回复
用C#实现生成PDF文档(原码)
来源:qqread论坛 作者: 2006-08-12 出处:PCDOG.COM
关键字:
用C#实现生成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
文档
(附源码)
用
C#
实现
生成
PDF
文档
(附源码) 收藏 //write by wenhui.org using System; using System.IO; using System.Text; using System.Collections; namespace
PDF
Generator { public class
PDF
Generator { 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 p
PDF
=new StreamWriter("E:\my
PDF
.
pdf
"); static MemoryStream m
PDF
= new MemoryStream(); static void ConvertToByteAndAddtoStream(string strMsg) { Byte[] buffer=null; buffer=ASCIIEncoding.ASCII.GetBytes(strMsg); m
PDF
.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 str
PDF
Message=null; //
PDF
文档
头信息 str
PDF
Message="%
PDF
-1.1 "; ConvertToByteAndAddtoStream(str
PDF
Message); xRefs.Add(m
PDF
.Length); str
PDF
Message="1 0 obj "; ConvertToByteAndAddtoStream(str
PDF
Message); str
PDF
Message="<> "; ConvertToByteAndAddtoStream(str
PDF
Message); str
PDF
Message="stream "; ConvertToByteAndAddtoStream(str
PDF
Message); ////////
PDF
文档
描述 streamStart=m
PDF
.Length; //字体 str
PDF
Message="BT /F0 " + fontSize +" Tf "; ConvertToByteAndAddtoStream(str
PDF
Message); //
PDF
文档
实体高度 yPos = pageDepth - pageMargin; str
PDF
Message=pageMargin + " " + yPos +" Td " ; ConvertToByteAndAddtoStream(str
PDF
Message); str
PDF
Message= leadSize+" TL " ; ConvertToByteAndAddtoStream(str
PDF
Message); //实体内容 str
PDF
Message= "(http://www.wenhui.org)Tj " ; ConvertToByteAndAddtoStream(str
PDF
Message); str
PDF
Message= "ET "; ConvertToByteAndAddtoStream(str
PDF
Message); streamEnd=m
PDF
.Length; streamLen=streamEnd-streamStart; str
PDF
Message= "endstream endobj "; ConvertToByteAndAddtoStream(str
PDF
Message); //
PDF
文档
的版本信息 xRefs.Add(m
PDF
.Length); str
PDF
Message="2 0 obj "+ streamLen + " endobj "; ConvertToByteAndAddtoStream(str
PDF
Message); xRefs.Add(m
PDF
.Length); str
PDF
Message="3 0 obj <> endobj "; ConvertToByteAndAddtoStream(str
PDF
Message); xRefs.Add(m
PDF
.Length); str
PDF
Message="4 0 obj <PDFMessage); str
PDF
Message="/Kids[ 3 0 R ] "; ConvertToByteAndAddtoStream(str
PDF
Message); str
PDF
Message="/Resources<PDF/Text]/Font<> >> "; ConvertToByteAndAddtoStream(str
PDF
Message); str
PDF
Message="/MediaBox [ 0 0 "+ pageWidth + " " + pageDepth + " ] >> endobj "; ConvertToByteAndAddtoStream(str
PDF
Message); xRefs.Add(m
PDF
.Length); str
PDF
Message="5 0 obj <> endobj "; ConvertToByteAndAddtoStream(str
PDF
Message); xRefs.Add(m
PDF
.Length); str
PDF
Message="6 0 obj <> endobj "; ConvertToByteAndAddtoStream(str
PDF
Message); streamStart=m
PDF
.Length; str
PDF
Message="xref 0 7 0000000000 65535 f "; for(int i=0;i
PDFMessage+=xRefFormatting((long) xRefs[i])+" 00000 n "; } ConvertToByteAndAddtoStream(str
PDF
Message); str
PDF
Message="trailer <> "; ConvertToByteAndAddtoStream(str
PDF
Message); str
PDF
Message="startxref " + streamStart+" %%EOF "; ConvertToByteAndAddtoStream(str
PDF
Message); m
PDF
.WriteTo(p
PDF
.BaseStream); m
PDF
.Close(); p
PDF
.Close(); } } }
用
C#
.NET
实现
生成
PDF
文档
和将WORD转换为
PDF
用
C#
.NET
实现
生成
PDF
文档
和将WORD转换为
PDF
用
C#
实现
生成
PDF
文档
(原码)
用
C#
实现
生成
PDF
文档
(原码)。好用,带全部源码。
C#
生成
pdf
文件
利用
c#
生成
pdf
文件,比较实用
用
C#
实现
生成
PDF
文档
源代码
用
C#
实现
生成
PDF
文档
源代码~~~~~~~~~~~
C#
111,119
社区成员
642,545
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章