1. C#如何实现对pdf文件的内容修改
你可以试一下 Grapecity Documents For PDF。这是一款.NET PDF 文档API,适用于所有 .NET Standard 2.0 及以上标准的平台,以编码的方式,无需 Adobe Acrobat 组件 ,超快批量处理 PDF 文件,满足关于 PDF 文档的一切需求。网页链接
Grapecity Documents For PDF 最大的特色总结如下:
产品架构灵活、轻量
轻量级产品架构可节省系统处理 PDF 时占用的内存和时间。与同类产品相比,GrapeCity Documents for PDF 可用于生成更高质量的 PDF 文档。
完全兼容 Adobe PDF
GrapeCity Documents for PDF 符合 Adobe PDF 1.7 规范,可在不影响 PDF 文档功能和设计的情况下,完成创建、编辑、存储、合并、拆分等多种功能。
全文本支持
GrapeCity Documents for PDF 支持 PDF 文档的所有文本和段落格式,同时还支持特殊字符、多种语言(包括中文)、RTL 格式、垂直拆分和旋转文本。
100 种以上的 PDF 功能
使用 GrapeCity Documents for PDF,您可以随意添加、删除、拷贝、移动、保护、更改页面大小、方向、转换为线性化 PDF 以及压缩 PDF 文件。
全面支持 .NET 平台
GrapeCity Documents for PDF 支持所有 .NET 平台,并允许您在应用程序中与 .NET Core 2.0 +、.NET Framework、Mono、Xamarin.iOS 和 Xamarin.Android 一起使用。
将应用程序部署到云端
GrapeCity Documents 可用于云应用程序开发,使用 NuGet 和 GrapeCity Documents for PDF,您可直接部署到网络云、阿里云、腾讯云、Azure 和 AWS 中。
简单来说,使用 GrapeCity Documents for PDF 可以轻松实现:
可生成线性化 PDF 文档,通过 Internet 更快地进行查看
用代码生成、加载、编辑、合并/拆分大型 PDF 文档
支持多种语言(如中文)、特殊字符以及 RTL 格式
支持 100 种以上的 PDF 功能
其他核心功能
2. .net打印pdf文件
方法一(web):window.print()
print()方法是浏览器打印功能的一种程序调用。print方法用于打印当前窗口的内容。
打印当前页:
function printPage(){
window.print();
}
打印局部页面:
前端页面:<iframe style="width:100%;height:100%;" id="fileId" src="文件路径">
</iframe>
<input type="button" name="print" id="print" value="打印" />
js:$("#print").click(function () {
var iframe = document.getElementById("fileId");
iframe.contentWindow.print();
});
方法二:调用系统API(得保证本地装有相关的软件)
PrintDocument pd = new PrintDocument();
pd.PrinterSettings.PrinterName = "Microsoft Print to PDF";
Process p = new Process
{
StartInfo = new ProcessStartInfo
{
CreateNoWindow = false,
WindowStyle = ProcessWindowStyle.Hidden,
UseShellExecute = true,
FileName = filePath,//文件路径
Verb = "print",
Arguments = @"/p /h \" + filePath + "\"\"" + pd.PrinterSettings.PrinterName + "\""
}
};
p.Start();
p.WaitForExit();
方法三:spire打印方式(收费)下面是简单的使用例子
var pdf = new PdfDocument(filePath);
//设置打印机
pdf.PrintSettings.PrinterName = "Microsoft Print to PDF";
pdf.print();
方法四:安装RawPrint
var printer = new Printer();
var file = File.Open(filePath, FileMode.Open);
byte[] array = new byte[file.Length];
file.Read(array, 0, array.Length);
printer.PrintRawStream(printerName, file, "打印机上显示的任务名");
file.Close();
printer.PrintRawFile(printerName, fileFullPath, "打印机上显示的任务名");
这个测试时虚拟打印机上正常,使用公司打印机时出现乱码问题以及打印任务不停的问题
3. 如何用.NET将DWG文件打印为PDF
pdf是扫描件,这个需要打印之后,扫描就是PDF文件了
4. c# 实现PDF文件预览功能
利用Adobe PDF Reader 控件,实现在Winform中预览PDF文档。 实现方法如下:
(1)前提条件
必须事先在计算机安装Adobe Reader软件。Adobe Reader是免费软件,可以从Adobe官网下载安装
(2)在Visual Studio中新建一个“Windows 窗体应用程序”项目
(3)在工具箱上点鼠标右键-->选择项 -->COM组件-->Adobe PDF Reader
5. 安装文电通PDF Gold后,重开机不能启动,显示STOP:COOOO21AUNKNOWNHARDERROR,现装系统为GHOST-XP SP3,
错误名称 0xC000021A:STATUS_SYSTEM_PROCESS_TERMINATED (xyz5819 意念时空)
故障分析 0xC000021A错误表示用户模式子系统有所损坏,例如 WINLOGON或客户服务器运行时子系统(CSRSS)。这个错误一般是因为Windows的系统文件受到了损坏或丢失,或者
Windows的安装文件夹被设置了错误的访问权限等原因引起的。
如果遇到0xC000021A错误,建议尝试以“最后一次正确的配置”方式启动 Windows;如果故障依旧,请重新安装Windows。另外某些存在BUG的安全防护类软件可能会将Windows的系统文件当作恶意程序查杀,这时将造成Windows系统文件被误删除、在启动Windows时即出现0xC000021A错误的现象。例如2007年5月,诺顿杀毒软件将安装有MS06-070更新的中文版Windows XP的系统文件NETAPI32.DLL、LSASRV.DLL误识别为病毒进行了隔离,造成Windows XP启动时即出现0xC000021A错误,Windows XP无法完成启动。在手动恢复了正确的系统文件NETAPI32.DLL及LSASRV.DLL后方可解决。(xyz5819 意念时空)
0xC000021A: STATUS_SYSTEM_PROCESS_TERMINATED (xyz5819 意念时空)
◆错误分析:用户模式子系统, 例如Winlogon或客服服务运行时子系统(CSRSS)已损坏, 所以无法再保证安全性, 导致系统无法启动. 有时, 当系统管理员错误地修改了用户帐号权限, 导致其无法访问系统文件和文件夹.(xyz5819 意念时空)
◇解决方案:使用"最后一次正确的配置", 如果无效, 可使用安装光盘进行修复安装. (xyz5819 意念时空)
另外,知友可以下载BlueScreenView,使用它去读取 C:\Windows\minimp\*.dmp文件,看看具体是哪些文件引起的这种蓝屏错误.(xyz5819 意念时空)
开机按F8进安全模式,设置操作系统进入干净启动状态:
a. 点击开始菜单并在搜索框中输入msconfig,然后按回车键。(xyz5819 意念时空)
b. 点击“服务”标签卡,选择“隐藏所有的微软服务”,然后点击全部禁用。(如果可选)
c. 点击“启动”标签卡, 然后点击全部禁用并确定。(xyz5819 意念时空)
然后重新启动计算机。当弹出“系统配置实用程序”的时候,选中此对话框中的“不再显示这条信息”并点击确定。(xyz5819 意念时空)
提示: 临时禁用启动项只是为了预防启动加载时遇到的问题。此操作不会影响系统或者其他程序,以后我们可以以手动启动的方式来启动这些程序。(xyz5819 意念时空)
纠正错误后,再从干净启动状态回复到正常启动模式:(xyz5819 意念时空)
a. 点击开始菜单并在搜索框中输入msconfig,然后按回车键。(xyz5819 意念时空)
b. 在“常规”选项卡上,单击“正常启动 - 加载所有设备驱动程序和服务”。
c. 单击“确定”。当提示您重新启动计算机时,单击“重新启动”。(xyz5819 意念时空)
若蓝屏仍旧在安全模式下出现, 问题就可能是由于硬件不稳定导致的.建议联系电脑厂商对硬件进行排查.如果最近有改动过一些硬件或是硬件驱动,建议改回来确认问题情况.
以下是一些硬件蓝屏的排错常规步骤,你可以尝试一下:(xyz5819 意念时空)
1.如果最近有更换硬件,请您将新硬件更换回之前的硬件或是其他新硬件.
2.如果您有多根内存条,请您只保留一根,将其余的拔除.(xyz5819 意念时空)
3.确认接线等是否疏松,机箱内的灰尘是否过多,进行固定和清理.
4.更换其他的电源.(xyz5819 意念时空)
5.如果你是笔记本电脑,遇到硬件故障,最好还是联系售后进行维修.
另外,如果,安全模式能进系统,建议卸载文电通PDF Gold,换其他版本或网站重新下载安装,
如果安全模式也无法进去,先按上述修复硬件错误,然后,开机按DEL键(笔记本按F2键)进BIOS设置光盘或U盘引导电脑进WinPE(需要你有带WinPE的光盘或U盘启动盘,没有就买或自己做一个).(xyz5819 意念时空).进PE后,使用办法恢复系统,或者格式化C盘,重新安装操作系统,祝你好运!
6. 请问各位大神:1.怎么实现将PDF显示在asp.net的网页之中,求详细操作与代码
直接输出流文件到页面上即可
我这个是根据路径读取到PDF在展示的 你可以根据你的需求修改下即可
经过测试是OK的 祝你好运
/// <summary>
/// 根据路径读取PDF文件
/// </summary>
/// <param name="path">路径</param>
/// <returns>字节数组</returns>
private byte[] GetPdfByPath(string path)
{
try
{
FileStream fs = File.Open(path, FileMode.Open);
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
fs.Close();
HttpContext.Current.Response.ContentType = "application/pdf";
HttpContext.Current.Response.AddHeader("content-disposition", "filename=pdf");
HttpContext.Current.Response.AddHeader("content-length", buffer.Length.ToString());
HttpContext.Current.Response.BinaryWrite(buffer);
return buffer;
}
catch (Exception ex)
{
log.Error("方法:GetPdfByPath error", ex);
return null;
}
}
7. C#怎么给指定的PDF文件添加页眉
有两种方法可以用来给PDF文件添加页眉或者页脚,下面是两种方法的具体C#代码方法:
方法1:直接在现有文档绘制页眉页脚
static void Main(string[] args){
//加载一个测试文档
PdfDocument existingPdf = new PdfDocument();
existingPdf.LoadFromFile(@"C: est.pdf");
//调用DrawHeader方法在现有文档添加页眉
DrawHeader(existingPdf);
//调用DrawFooter方法在现有文档添加页脚
DrawFooter(existingPdf);
//保存文档
existingPdf.SaveToFile("output.pdf");}//在页面上方空白部位绘制页眉static void DrawHeader(PdfDocument doc){
//获取页面大小
SizeF pageSize = doc.Pages[0].Size;
//声明x,y两个float型变量
float x = 90;
float y = 20;
for (int i = 0; i < doc.Pages.Count; i++)
{
//在每一页的指定位置绘制图片
PdfImage headerImage = PdfImage.FromFile(@"C:logo.png");
float width = headerImage.Width / 3;
float height = headerImage.Height / 3;
doc.Pages[i].Canvas.DrawImage(headerImage, x, y, width, height);
//在每一页的指定位置绘制横线
PdfPen pen = new PdfPen(PdfBrushes.Gray, 0.5f);
doc.Pages[i].Canvas.DrawLine(pen, x, y + height + 2, pageSize.Width - x, y + height + 2);
}
}//在页面下方空白部位绘制页脚static void DrawFooter(PdfDocument doc){
//获取页面大小
SizeF pageSize = doc.Pages[0].Size;
//声明x,y两个float型变量
float x = 90;
float y = pageSize.Height - 72;
for (int i = 0; i < doc.Pages.Count; i++)
{
//在每一页的指定位置绘制横线
PdfPen pen = new PdfPen(PdfBrushes.Gray, 0.5f);
doc.Pages[i].Canvas.DrawLine(pen, x, y, pageSize.Width - x, y);
//在每一页的指定位置绘制文字
y = y + 5;
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("黑体", 10f, FontStyle.Bold), true);
PdfStringFormat format = new PdfStringFormat(PdfTextAlignment.Left);
String footerText = "页脚内容";
doc.Pages[i].Canvas.DrawString(footerText, font, PdfBrushes.Black, x, y, format);
//在每一页的指定位置当前页码和总页码
PdfPageNumberField number = new PdfPageNumberField();
PdfPageCountField count = new PdfPageCountField();
PdfCompositeField compositeField = new PdfCompositeField(font, PdfBrushes.Black, "第{0}页/共{1}页", number, count);
compositeField.StringFormat = new PdfStringFormat(PdfTextAlignment.Right, PdfVerticalAlignment.Top);
SizeF size = font.MeasureString(compositeField.Text);
compositeField.Bounds = new RectangleF(pageSize.Width - x - size.Width, y, size.Width, size.Height);
compositeField.Draw(doc.Pages[i].Canvas);
}
}
方法2:通过模板功能添加页眉页脚
static void Main(string[] args){
//加载一个测试文档
PdfDocument existingPdf = new PdfDocument();
existingPdf.LoadFromFile(@"C: est.pdf");
//创建新的PDF文档
PdfDocument newPdf = new PdfDocument();
//设置页面大小
newPdf.PageSettings.Size = existingPdf.Pages[0].Size;
//将页边距设置为0
newPdf.PageSettings.Margins = new PdfMargins(0);//创建PdfMargins对象,指定期望设置的页边距//期望边距需小于或等于现有文档的实际边距,否则页眉页脚可能覆盖主体内容
PdfMargins margins = new PdfMargins(90, 72, 90, 72);
//在新建文档的顶部和底部应用页眉页脚模板
newPdf.Template.Top = CreateHeaderTemplate(newPdf, margins);
newPdf.Template.Bottom = CreateFooterTemplate(newPdf, margins);
//在新建文档的左右部分应用空白模板
newPdf.Template.Left = new PdfPageTemplateElement(margins.Left, newPdf.PageSettings.Size.Height);
newPdf.Template.Right = new PdfPageTemplateElement(margins.Right, newPdf.PageSettings.Size.Height);
for (int i = 0; i < existingPdf.Pages.Count; i++)
{
//添加页面到新建文档,并将现有文档当做模板绘制到新页面
newPdf.Pages.Add().Canvas.DrawTemplate(existingPdf.Pages[i].CreateTemplate(), new PointF(-margins.Left, -margins.Top));
}
//保存文档
newPdf.SaveToFile("output.pdf");}//创建页眉模板static PdfPageTemplateElement CreateHeaderTemplate(PdfDocument doc, PdfMargins margins){
//获取页面大小
SizeF pageSize = doc.PageSettings.Size;
//创建PdfPageTemplateElement对象headerSpace,即作页眉模板
PdfPageTemplateElement headerSpace = new PdfPageTemplateElement(pageSize.Width, margins.Top);
headerSpace.Foreground = false;
//声明x,y两个float型变量
float x = margins.Left;
float y = 0;
//在headerSpace中绘制图片
PdfImage headerImage = PdfImage.FromFile(@"C:logo.png");
float width = headerImage.Width / 3;
float height = headerImage.Height / 3;
headerSpace.Graphics.DrawImage(headerImage, x, margins.Top - height - 2, width, height);
//在headerSpace中绘制横线
PdfPen pen = new PdfPen(PdfBrushes.Gray, 0.5f);
headerSpace.Graphics.DrawLine(pen, x, y + margins.Top - 2, pageSize.Width - x, y + margins.Top - 2);
//返回headerSpace
return headerSpace;}//创建页脚模板static PdfPageTemplateElement CreateFooterTemplate(PdfDocument doc, PdfMargins margins){
//获取页面大小
SizeF pageSize = doc.PageSettings.Size;
//创建PdfPageTemplateElement对象footerSpace,即页脚模板
PdfPageTemplateElement footerSpace = new PdfPageTemplateElement(pageSize.Width, margins.Bottom);
footerSpace.Foreground = false;
//声明x,y两个float型变量
float x = margins.Left;
float y = 0;
//在footerSpace中绘制横线
PdfPen pen = new PdfPen(PdfBrushes.Gray, 0.5f);
footerSpace.Graphics.DrawLine(pen, x, y, pageSize.Width - x, y);
//在footerSpace中绘制文字
y = y + 5;
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("黑体", 10f, FontStyle.Bold), true);
PdfStringFormat format = new PdfStringFormat(PdfTextAlignment.Left);
String footerText = "页脚内容";
footerSpace.Graphics.DrawString(footerText, font, PdfBrushes.Black, x, y, format);
//在footerSpace中绘制当前页码和总页码
PdfPageNumberField number = new PdfPageNumberField();
PdfPageCountField count = new PdfPageCountField();
PdfCompositeField compositeField = new PdfCompositeField(font, PdfBrushes.Black, "第{0}页/共{1}页", number, count);
compositeField.StringFormat = new PdfStringFormat(PdfTextAlignment.Right, PdfVerticalAlignment.Top);
SizeF size = font.MeasureString(compositeField.Text);
compositeField.Bounds = new RectangleF(pageSize.Width - x - size.Width, y, size.Width, size.Height);
compositeField.Draw(footerSpace.Graphics);
//返回footerSpace
return footerSpace;
}
以上两种方法基于调用Spire.PDF for .NET API来实现,可通过NuGet来引入。