WEB利用PDF实现打印和排版

使用Playwright实现高保真Web页面PDF自动化生成与打印 Web开发中,将动态页面内容精准输出为PDF文档是一个常见且复杂的需求,涉及前端渲染、样式兼容与后端自动化等多个技术环节。其核心原理在于通过程序控制浏览器内核,完整执行页面的HTML、CSSJavaScript,捕获渲染后的最终状态,再调用浏览器的打印管线生成印刷级文档。这一技术对于实现报表、合同等业务文档的自动化批量生成具有重要价值,能显著提升数据中台、办公自动化等场景的交付效率与一致性。本文聚焦于利用Playwright这一现代浏览器自动化框架,深入探讨如何解决Web打印中的样式错乱、分页控制、认证 阅读详情

大家都知道WEB上,打印是天然的限制,各种不方便,这里不一一阐明了,即使用了JS控制,水晶报表打印等还是一样,这里介绍一种方法,利用PDF和ADOBE READER实现的打印功能。


AdbeRdr大家都使用过,不知道大家有没有发现,它有一个插件,当IE打开PDF时,直接以它打开,而它的各种功能都非常齐,这就提供了我们一个思路,利用PDF来实现,这里来说一点,就是生成PDF,网上有PDF生成类,但我用的是水晶报表,用它可以实现各种效果,图文例表,多行,各种统计图和列表结合等,我们来看一下普通的水晶报表来导出PDF是怎么实现的。


            CrystalDecisions.Web.CrystalReportSource crs = new CrystalDecisions.Web.CrystalReportSource();
            ExportOptions crExportOptions;
            CrystalDecisions.CrystalReports.Engine.ReportDocument crReportDocument = new CrystalDecisions.CrystalReports.Engine.ReportDocument();
            string temp_rpt = Server.MapPath("/rpt/xxxxxxxxxx.rpt");
            crReportDocument.Load(temp_rpt);//加截


            CrystalDecisions.Shared.DiskFileDestinationOptions crDiskFileDestinationOptions;


            string Fname;
            string FileName = "temp.pdf";
            string _SystemPath = Request.PhysicalApplicationPath + "ExportPath\\";
            Fname = _SystemPath + FileName;//导出路径


            crDiskFileDestinationOptions = new CrystalDecisions.Shared.DiskFileDestinationOptions();
            crDiskFileDestinationOptions.DiskFileName = Fname;


            crExportOptions = crReportDocument.ExportOptions;


            crExportOptions.DestinationOptions = crDiskFileDestinationOptions;
            crExportOptions.ExportDestinationType = CrystalDecisions.Shared.ExportDestinationType.DiskFile;
            crExportOptions.ExportFormatType = CrystalDecisions.Shared.ExportFormatType.PortableDocFormat;


//列表的加载
            int asd = ds.Tables[0].Rows.Count;//总记录数


            DataTable dtx1 = dtx(ds.Tables[0]);///转换逻辑,这里反正是列表等加载,每人都有自己的需求,不一定看我的。


            dtx1 = fill_name(dtx1);再次转换逻辑


            crReportDocument.SetDataSource(dtx1);//绑定


            crReportDocument.SetParameterValue("par1", "统计时间: " + Convert.ToDateTime(Session["b_time"].ToString()).ToString("yyyy-MM-dd") + " - " + Convert.ToDateTime(Session["e_time"].ToString()).ToString("yyyy-MM-dd"));
            crReportDocument.SetParameterValue("par2", "操作时间: " + DateTime.Now.ToString("yyyy-MM-dd"));//两参数设置


            crReportDocument.Export();//输出


            try
            {
                string pdf = "\\ExportPath\\" + FileName;
                pdf = Server.MapPath(pdf);
                if (System.IO.File.Exists(pdf) == false)
                {
                    throw new Exception("目录没有存在!");
                }


                System.IO.FileStream fs = System.IO.File.Open(pdf, System.IO.FileMode.Open);
                byte[] buffer = new byte[fs.Length];
                fs.Read(buffer, 0, buffer.Length);
                fs.Close();


                Response.ContentType = "application/pdf";
                Response.AddHeader("content-disposition", "filename=" + pdf);
                Response.AddHeader("content-length", buffer.Length.ToString());
                Response.BinaryWrite(buffer);
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
                throw;
            }
            finally
            {
                Response.Flush();
                Response.Close();
                Response.End();
            }



这是一个简单的列表加载转PDF并在WEB上输出,我已经在代码上做了注释,既然新手也可以一目了然,

C#与PDFsharp库实现PDF打印操作指南 PDFsharp 是一个用于处理PDF文件的库,它为.NET开发者提供了强大的API来创建、修改、渲染以及打印PDF文件。PDFsharp 功能全面,可操作性高,支持直接在PDF文档中添加文本、图像、形状以及复杂的图形,同时也可以编辑现有PDF内容。特点如下:跨平台支持:能够在Windows、LinuxmacOS上运行,提供了一个统一的API来处理PDF文件。C#VB.NET支持:库原生支持C#VB.NET两种.NET主流语言,易于学习使用。DOM操作。 阅读详情

相关推荐

Web页面到PDF转换的实现指南

在当今数字化时代,将Web网页保存为PDF文件已成为一种常见的需求。这不仅是为了便于文档的阅读共享,更是一种记录存档网络信息的重要手段。PDF格式以其优秀的兼容性稳定性,在各种应用场景中占据重要地位。通过将网页转换为PDF文件,用户可以保持原有布局,同时进行离线阅读打印等操作。在Web开发日常浏览中,将网页内容保存为PDF格式是一项十分常见的需求。大多数现代浏览器如Google Chrome、Mozilla Firefox、Apple Safari等都提供了直接将网页转换为PDF文件的功能。

weixin_30923011的博客 939

Lodop+html+pdf.js 实现web客户端连接的本地打印机直接打印,无需预览

html 自动打印 Lodop+html+pdf.js html 代码 <canvas id="the-canvas" style="display:none;"></canvas> js代码 PDFJS.getDocument(pdfUrl).then(function getPdfHelloWorld(pdf) { p...

tankssas的博客 3403

js实现html中的pdf文件的在线预览、下载、打印等功能

包括js资源,及简单demo实现:html中的pdf文件预览

web预览pdf打印

pdf 打印

qq_48881427的博客 1170

开源模块 Openerp Web PDF Report Preview & Print 简介 ...

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33779515的博客 191

报表工具花钱or开源?我对比了这6个工具

近一年都在处理报表问题,调研了不少报表工具,也开发了适合公司业务的报表应用。分享一些关于如何选择报表工具的个人观点,希望对你有参考作用。 对于大部分企业来说,能花时间人力去开发应用来快速解决问题的,肯定不会花大钱去购买商业产品。大部分老板会说,怎么又要买软件啦?现在企业日子不好过,能省则省。IT应用不像Excel、PS,网上下道版即可,像报表工具这种是系统,要业务系统连接,要做接口开发。所以...

Leo的博客 5920

终极Stirling-PDF打印优化指南:实现PDF排版打印设置完美同步的5个实用技巧

Stirling-PDF是一款功能强大的本地托管PDF处理应用,提供了丰富的PDF操作功能,包括打印优化、排版调整格式转换等。本文将详细介绍如何利用Stirling-PDF打印功能,实现PDF排版打印设置的同步,帮助用户获得最佳的打印效果。 ## 认识Stirling-PDF打印功能 Stirling-PDF的主界面提供了直观的功能分类,让用户可以轻松找到所需的PDF工具。在"View

gitblog_00751的博客 1048

每次Excel转PDF表格都被切断?教你3招,排版整齐绝不杂乱!

原本在Excel里看着好好的表格,转成PDF后,常常出现“列被拦腰切断”、“多出无数张空白页”的情况。3.在最下方的缩放设置里,将默认的“无缩放”更改为【将所有列打印在一页】(如果你行数也少,可以直接选【将整个工作表打印在一页】)。1.在Excel界面的右下角,有三个视图小图标,点击最右侧的【分页预览】(或者在顶部菜单的【视图】里找)。4.调整好后,直接点击【文件】-【另存为】-选择PDF格式,导出的文件就会你看到的蓝框划分一模一样。2.此时,表格周围会出现蓝色的粗线,这根蓝线就是PDF的页面边界。

T700_675的博客 692

web打印技术方案

在B/S应用系统开发中常常遇到表单打印需求,尤其是OA、ERP类的企业运营管理系统,打印的需求很常见,但WEB应用的打印一直以来是一个难题,特别是在应用中完成标签打印(如包裹面单、货运标签等)、票据打印(如零售小票)难度较大,其难度在于如何将需要打印的内容,精确套打到标签、票据中,精确控制分页,并实现高速连续打印。(1)前端转化PDF实现打印。(1)不能准确对齐边边距及打印文字,常常会发现打印的样式十分混乱,因为打印机采用的是 mm 单位,而不是我们页面常用的 px,同时有些样式在打印时也不会生效;

2113

React-PDF终极指南:如何快速实现PDF打印预览功能

React-PDF是一个强大的React库,专门用于在浏览器中创建预览PDF文档。这个开源项目让开发者能够使用熟悉的React语法来生成高质量的PDF文件,并提供了完整的打印预览功能。无论你是需要生成报表、发票、合同还是任何其他类型的文档,React-PDF都能提供简单易用的解决方案。 ## 🚀 为什么选择React-PDF? React-PDF最大的优势在于它的**声明式编程模型**。你

gitblog_00344的博客 554

Ladybird打印功能:页面排版打印预览实现全指南

Ladybird作为一款真正独立的网页浏览器,其打印功能的实现涉及页面排版优化与打印预览两个核心环节。本文将详细介绍Ladybird浏览器如何处理打印任务,帮助用户轻松掌握页面打印的关键技术与使用方法。 ## 打印样式与媒体查询基础 📄 Ladybird通过CSS媒体查询机制识别打印场景,核心实现位于`Libraries/LibWeb/CSS/MediaQuery.cpp`文件中。当检测到`

gitblog_01423的博客 448

如何在 Vue 中打印页面:直接用 web-print-pdf(npm 包)

本文介绍了在Vue项目中使用web-print-pdf实现打印功能的方案。相比原生window.print,该npm包支持静默/批量打印、指定打印机/纸张/边距等参数,解决了浏览器兼容性问题。文章详细展示了Vue2/Vue3中的接入方法,包括打印HTML、PDF图片的实现代码,并比较了前后端生成PDF的优缺点。建议生产环境采用"后端生成PDF+前端打印"的方案,确保稳定性一致性,同时提供了样式优化常见问题解决方案。该方案适用于订单、标签、表单等多种打印场景。

Web打印社区,静默打印预览技术交流社区 996

AI证件照排版神器:一键生成打印版,照相馆级效果

本文介绍了基于“星图GPU”平台自动化部署“AI 智能证件照制作工坊”镜像的完整流程。该镜像集成了人像分割、背景替换与智能排版算法,支持一键生成符合打印标准的多规格证件照。典型应用场景为用户上传自拍照后,自动完成抠图、换底、尺寸裁剪及最优排版实现照相馆级高清输出,适用于考公、签证等高频证件照需求,提升效率并降低打印成本。

NightshadeRaven21的博客 1250

macOS 如何实现网页静默打印?同一套 web-print-pdf 搞定

Apple生态B/S打印解决方案:macOS静默打印与iOS限制解析 本文针对Apple生态下的网页打印问题提出技术方案,重点解决两个核心痛点: macOS静默打印实现 浏览器直接调用window.print()会强制弹出系统对话框 提出三层架构方案:前端web-print-pdfnpm包 + 本地Electron客户端 + CUPS打印系统 详细说明macOS特有挑战(CUPS队列名编码、双架构兼容、权限配置等) 提供统一API设计,屏蔽Windows/macOS底层差异 iOS/iPadOS打印限制 明

Web打印社区,静默打印预览技术交流社区 354

一般试卷的纸张大小是多少_pdf试卷怎么打印在A3纸上

一般的PDF试卷的纸张大小都是A4大小,没有现成A3大小Word文档的试卷时,需要将PDF试卷转换Word文档之后进行排版,如何实现这一操作呢?请接着往下学习吧~一、将试卷的PDF格式转换为Word1.进入PDF快转官网,点击下载按钮下载并安装。2.打开安装好的软件,点击登陆即可享受更多权限。3. 点击击选择你要转换的功能。4. 首先点击选择你要保存的位置,其次点击添加需要转换的文件,最后点击转换...

weixin_39987847的博客 3723

Stirling-PDF多页布局功能:小册子打印与N-up页面设置

在日常办公中,我们经常需要将PDF文档进行特殊排版以节省纸张或满足打印需求。无论是制作小册子、会议资料还是多页标签,Stirling-PDF提供的多页布局功能都能轻松实现专业级的打印效果。本文将详细介绍如何使用Stirling-PDF的小册子打印N-up页面设置功能,让你的文档排版更高效、更环保。 ## 功能概述 Stirling-PDF通过两个核心控制器实现多页布局功能: - **Rear...

gitblog_00174的博客 906

网页打印老方案 vs web-print-pdf:Lodop、window.print 还要不要用?

Web 打印的技术选型,十个项目里有八个会先想到 window.print()或。它们不是「过时就没用」,但在场景下,边界已经很清晰。本文对比 window.print与,帮你判断老方案要不要留、新方案怎么接。

Web打印社区,静默打印预览技术交流社区 681
上一篇: CorelDRAW二次开发
下一篇: DEV里的webchartcontrol使用
jimil
博客等级 码龄22年 62粉丝 9原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值