精华内容
下载资源
问答
  • 在网页端ERP应用内,打印页面是一很常规的操作,包括打印单据、打印表单这些,而除了打印以外,导出PDF...很时候,开发出一新功能并不是一次性就到位,而是通过很次的迭代开发,结合实际应用场景慢慢优化之...

    在网页端ERP应用内,打印页面是一个很常规的操作,包括打印单据、打印表单这些,而除了打印以外,导出PDF的功能也很常见,很多企业会选择将一些重要的单据保存为PDF进行电子留档,于是网页应用导出PDF功能也被很多网页ERP进行开发了出来。今天这篇文章,就分享一下如何通过在浏览器里面导出PDF。

    很多时候,开发出一个新功能并不是一次性就到位,而是通过很多次的迭代开发,结合实际应用场景慢慢优化之后,才能够得到最优的体验,今天也通过明源工作流导出PDF功能的几个迭代开发,跟大家分享一下导出PDF功能是如何实现并进行迭代优化。

    /导出PDF V1.0/

    当明源工作流第一次拿到的导出PDF功能时,需求只有一个要求“客户希望能够将当前流程导出PDF,作为电子留档,因为浏览器自带的导出PDF操作比较繁琐,所以希望页面内有一个导出PDF的按钮,可以一键导出PDF”。

    在产品经理规划好需求,并在需求迭代上传达之后,从开发的角度来讲,就得到了一个信息:“这个方案由前端实现,只需要将当前页面内容保存为PDF文件就可以”。所以很快就有了第一版导出PDF的功能,这个时候第一版的实现方案很简单,就是将当前浏览器的内容保存为一个PDF文件,并可以选择保存在本地

    在说明技术实现方案,首先需要明白一个概念,浏览器本身没有导出PDF的功能,其次JS本身也不存在导出PDF的相关API供调用,包括像“window.print()”的接口调用,也只不过是唤起浏览器的打印窗口,所以想通过一行代码实现一键导出PDF,是没有办法的。

    那么导出PDF只能通过其他方案来实现,而作为整个系统里面不是很重要,也不能作为产品本身能够直接变现的一个功能,通过完全自主开发来实现导出PDF,不太现实,所以最终通过参考相关资料之后,决定采用成熟的前端插件来实现。

    所采用的插件分别是“html2canvas.js"以及“jspdf.js”,这两个插件的功能是独立的,html2canvas可以将网页内指定dom通过canvas生成为一张base64图片,jspdf可以将指定图片转换为一个PDF文件流并触发浏览器文件下载,所以两个插件需要结合使用。

    大致实现代码如下:

    //调用html2canvas将指定区域生成为imghtml2canvas($('.pdfPrint')[0], { loggingfalse }).then(function (canvas{    var img = Canvas2Image.convertToImage(canvas, canvas.width, canvas.height);       //调用jsPDF将图片生成为PDF文件    var pdf = new jsPDF('''pt''a4'true);//调用jsPDF将图片生成为PDF文件    pdf.addImage(img, 'JPG', 10, 10, imgWidth, imgHeight, '', 'FAST');    //调用pdf插件,保存pdf文件到本机    pdf.save($("#js-titleText").text().trim() + '.pdf');});

    实现思路,是将指定区域的dom生成为图片,然后再将这个图片保存为PDF文件,实际上,当我们百度“js导出PDF”后,会得到很多类似的文章推荐,进去之后也基本上都是你抄我,我抄你的内容,代码本身没有问题,但实际上有不少坑在里面,而且这些坑在百度里面是找不到解决方案的。▼

    e7fb495f4f65cf6307825a88778417ef.png

    /导出PDF V2.0/

    在第一个版本开发测试上线之后,也稳定运行了一段时间,很长一段时间没有用户反馈这个问题,一个是并没有直接宣传这个功能,也没有作为卖点功能主推,但只要有按钮,就会有用户点击,终于在有客户发现这个按钮,并选择使用之后,终于用出不是这个方案开发初衷的其他功能:“我们在导出这个PDF之后,用浏览器打印出来,发现只能打印一页A4纸,而且内容很小,希望你们可以解决”。

    这个功能开发的初衷只是给提出需求的客户,解决电子留档的问题,但没想到有客户用导出的PDF用来作为打印用途,这明显违背了这个功能的初衷,但客户就是上帝,如果不解决就面临产品被投诉,所以我们进行了二次优化。

    实际上,出现客户所说的问题,也是因为我们在开发的时候,没有考虑到还存在打印需求,直接将整张网页保存为了一页PDF,而PDF的机制是,不管你一页内容有多少内容,在打印的时候,始终只会将这一页内容放在一张A4纸里面打印出来,不会二次帮你分页,如下图所示。▼

    4c21d744afe07f20018acad2ede2395b.png

    当网页内容越长,保存的PDF一页内容也会越长,打印出来的A4内容也就越小。所以解决这个问题的内容关键是前端在保存PDF的时候,对PDF进行分页。而刚好,JSPDF插件提供了分页机制,我们只需要在版本1里面做一些分页就可以。▼

    //调用html2canvas将指定区域生成为imghtml2canvas($('.pdfPrint')[0], { logging: false }).then(function (canvas) {    var img = Canvas2Image.convertToImage(canvas, canvas.width, canvas.height);    //调用jsPDF将图片生成为PDF文件    var pdf = new jsPDF('', 'pt', 'a4', true);//调用jsPDF将图片生成为PDF文件    pdf.addImage(img, 'JPG', 10, 10, imgWidth, imgHeight, '', 'FAST');    //添加分页逻辑,对生成的图片进行分页处理    if (leftHeight         pdf.addImage(img, 'JPG', 10, 10, imgWidth, imgHeight, '', 'FAST');    } else {        while (leftHeight > 0) {            pdf.addImage(img, 'JPG', 10, position, imgWidth, imgHeight, '', 'FAST')            leftHeight -= pageHeight;            position -= 841.89;            //避免添加空白页            if (leftHeight > 0) {                pdf.addPage();            }        }    }    //保存为PDF文件    pdf.save($("#js-titleText").text().trim() + '.pdf'); });

    在加入分页之后,开发测试之后,第二个版本上线。

    /导出PDF V3.0/

    第二个版本上线之后,又稳定运行了一个时间,而将我们这个导出PDF功能用来导出后再进行打印的客户也越来越多了(说好的只是想用来电子存档呢)。当然了,用的人越多,发现的问题也会越多,终于有一家客户发现了问题,并给出了反馈“总感觉你们导出的这个PDF打印出来好模糊,希望可以优化一下”。

    实际上,造成打印出来模糊的问题,我们开发自己包括测试一直都没注意到,在跟网页自带的打印效果对比之后,发现真的很模糊。▼

    5eb274503fe1b1fe9d6c20356d8e8d1e.png

    在分析代码,并且查找了相关文档之后,发现依然找不到问题原因。后来突发灵感,将我们导出功能的PDF和网页内容放进PS里面进行了对比,发现导出的PDF内容实际比网页内容缩放了,而正是这个缩放,导致了导出的PDF模糊,打印后更模糊了。▼

    0fe146144bcf5df38b67de6c9f5d2541.png

    在查找不到任何相关文档并且检查插件使用代码也没问题之后(实际上这个过程花费了很长时间,包括做不同的数据验证),最后了一个关键信息,就是jspdf的生成PDF实例接口传入参数有误。

    var pdf = new jsPDF('', 'pt', 'a4', true);//调用jsPDF将图片生成为PDF文件

    在jsPDF方法内,第3个参数,官方文档为传入’a4’,生成的PDF会是A4纸张的尺寸,在分析了插件源码之后发现,实际上’a4’对应了一个默认宽高尺寸“[595.28,841.89]”,这个尺寸会让导出的PDF有轻微的缩放,而canvas生成的图片,是跟网页dom尺寸一模一样的,问题关键点就出现在了我们不能使用默认的’a4’配置,而是应该传入一个更为精确的尺寸。在一番尝试之后,验证出了如果想要打印出的A4清晰,传入的尺寸应该是“[576,840]”,这个尺寸与官方文档的尺寸不一致,但打印验证之后,发现确实清晰了很多,最终导出的效果就很清晰了。▼

    b6cf795ddc4428514d4fbc0625e4da4d.png

    三版开发测试上线。

    /导出PDF V4.0/ 

    在解决导出PDF清晰度之后,又稳定运行了很长一段时间,这个时候已经大面积客户发现,并将这个导出PDF功能作为打印功能用到了极致,我们甚至已经忘了这个功能初衷是给客户用来作为电子留档的。直到遇到了大数据客户,打印了一张超大表单卡死之后,给我们提出了反馈“你们这个导出PDF按钮一点,浏览器就卡死了,能不能帮忙看看是什么问题”。

    到目前为止,使用的“html2canvas.js"以及“jspdf.js”其实本身是没有太大问题的,但实际性能瓶颈还是存在,当页面长度有几千甚至几万个像素长度之后(很多用户超大表单),将生成的图片转换为PDF会让浏览器会扛不住这么大的算法,直接卡到崩溃。针对这个问题,继续让前端来解决性能瓶颈,已经没有可操作的余地了,这个时候经过内部分析,决定采用前端+后端实现的方案。

    优化后的大致开发逻辑:前端将生成的图片传递给后端,再由后端生成一个PDF文档后,返回给前端一个文件流地址,前端再触发这个文档流的下载。也就是我们在这个版本内,舍弃了jspdf插件,将转换PDF的压力给到服务器来解决,关键的实现代码如下所示。▼

    window.utility.ajax({    loading: true,    type: 'POST',    data: JSON.stringify({        base64Text: $(img).attr("src"),        width: pdfWidth,//图片宽度        height: pdfHeight,//图片高度        pdfWidth: _pdfWidth,//PDF宽度        pdfHeight: _pdfHeight//PDF高度    }),    url: "/***/***",    dataType: "json",    contentType: "application/json",    cache: false,    success: function (result) {        data = result.data;        if (data == "") {            mysoft.layer.alertTip({                text: "下载文件的 URL 不能为空!"            });            return;        }        var docName = tplData.ProcessInfo.Title + ".pdf";        var downUrl = "/Download/" + docName + "?filepath=" + data;        //下载后端给的PDF文档流        window.open(downUrl);       }});

    /导出PDF V5.0/

    4.0版本其实还不够应付更大的性能瓶颈,因为没稳定多久,又有客户做出了更大的数据,导致canvas生成图片也卡死,并且在IE下,生成图片支持的最大内容高度也要小很多,这个时候考虑用前端的方案进行优化。

    优化主要是前端进行图片的分页,但前端没有直接操作图片分割的API,于是采用了一个变通方案,优化思路如下:将需要生成图片的dom复制多份,过定位算出每个dom的偏移量,最终通过循环生成这些dom的图片后,将分割后的图片,传给后端进行下载。

    /导出PDF 终极版本V6.0/

    实际上,第5个版本体验不太好,循环复制大批量dom到浏览器内,本身就会增加性能问题,其次循环生成canvas也会导致浏览器卡顿,上线之后的反馈并不太好。最终做了一个折中方案,限制不同浏览器可导出PDF的最大高度,如果超出性能瓶颈,则提示使用浏览器默认的导出PDF功能,前端则还是生成一张图片给后端,由后端对图片进行分割后,再提供PDF文件给前端进行下载。

    方案改动不太大,最终的这个方案,主要生成PDF的逻辑在于后端,同样的,后端生成PDF也会存在导出的PDF模糊问题,这个时候同样只需要控制生成的尺寸就可以保证导出的PDF清晰度。而作为控制导出的PDF尺寸一个小技巧,将每页PDF的宽高属性由前端传入,这样通过前端修改尺寸属性,可以快速找到最合适的导出尺寸

    后端生成PDF的功能和实现逻辑大致如下:

    • 1、根据Base64字符串,按宽高生成指定大小图片集合

    • 2、将图片集合生成到PDF文件中提供给前端下载

    代码实现:

    private static List CutImageByBase64(string base64Str,int width, int height){    var result = new List();    //临时文件存放文件夹    var temp_path = FileHelper.GetPath("\\TempFiles\\ImportPDF\\");    if (!Directory.Exists(temp_path))    {        Directory.CreateDirectory(temp_path);    }    byte[] bit = Convert.FromBase64String(base64Str);    using (MemoryStream memStream = new MemoryStream(bit))    {        using (var bmp = new System.Drawing.Bitmap(memStream))        {            var imgCount = Math.Ceiling(bmp.Height * 1.0 / height);            for (int i = 0; i < imgCount; i++)            {                //根据指定大小生成图片                using (var img = new System.Drawing.Bitmap(width, height))                {                    //根据原图切割,宽度固定,只会根据高度来切割                    using (var g = System.Drawing.Graphics.FromImage(img))                    {                        g.PageUnit = System.Drawing.GraphicsUnit.Pixel;                        g.Clear(System.Drawing.Color.White);                        g.DrawImage(bmp,                                     new System.Drawing.RectangleF(0, 0, width, height),                                     new System.Drawing.RectangleF(0, height * i, width, height),                                     System.Drawing.GraphicsUnit.Pixel);                        g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;                    }                    string savePath = $@"{temp_path}{Guid.NewGuid()}.jpg";                    img.Save(savePath, System.Drawing.Imaging.ImageFormat.Jpeg);                    result.Add(savePath);                }            }        }    }    return result;}

    /写在最后/

    经过几轮的迭代开发,这个在18年由客户提出并实现开发的功能,经过了接近两年的大面积使用验证,现在总算是比较稳定下来,但目前也依然面临一个问题,由于生成的PDF实际上是网页的截图,而浏览器导出的PDF是矢量文件,清晰度依然没有原生的导出PDF完美,如果你有更好的解决方案,欢迎文章底部评论留言。

    文:@徐龙昌 @曾斌

    来源:明源技术团队

    展开全文
  • Flash 课件的特点 1 学习起来简单 利用 Flash 软件设计的课件均采用了组件 + 层次 + 时间轴...制这实例的元件即可这样课件中只要和这元件相关的 所有实例都会一次性做相应的修改 3 交互式多媒体集成 交互性是 Flash
  • 前阵子在12333平台打印社保证明,无法一次性打印出完整页数的PDF,于是分成5个PDF下载,再将它们合并起来。起初使用微信小程序中的PDF合并功能,但是会出现PDF文件被压缩、不清晰的现象。学Python正好学到结构化文本...

    题目 / 应用场景:
    前阵子在12333平台打印社保证明,无法一次性打印出完整页数的PDF,于是分成5个PDF下载,再将它们合并起来。起初使用微信小程序中的PDF合并功能,但是会出现PDF文件被压缩、不清晰的现象。学Python正好学到结构化文本文件PDF的处理,本文讲述用第三方库PyPDF2来处理合并多个PDF文件的问题。

    IDE:
    Thonny

    代码:

    from PyPDF2 import PdfFileMerger
    merger=PdfFileMerger()
    input1=open('C:/Users/Jocelyn/Desktop/社保证明/3.pdf','rb')
    input2=open('C:/Users/Jocelyn/Desktop/社保证明/4.pdf','rb')
    input3=open('C:/Users/Jocelyn/Desktop/社保证明/5.pdf','rb')
    input4=open('C:/Users/Jocelyn/Desktop/社保证明/6.pdf','rb')
    input5=open('C:/Users/Jocelyn/Desktop/社保证明/7.pdf','rb')
    merger.append(fileobj=input1)
    merger.append(fileobj=input2)
    merger.append(fileobj=input3)
    merger.append(fileobj=input4)
    merger.append(fileobj=input5)
    merger.write('merge.pdf')
    

    遇到的问题:

    1. 引用模块后调用函数的格式:<模块>.<名称>
      在这里插入图片描述
      模块引用的方式有两种:
      ① import <模块> [as <别名> ]
      用此方法,后续调用模块中函数,需要加上模块的命名空间。如import PyPDF2后接merger=PyPDF2.PdfFileMerger()
      ② from <模块> import <函数>
      用此方法,直接引入模块中的某个函数,调用该函数的时候不需要再加上命名空间。如from PyPDF2 import PdfFileMerger
      懒得麻烦,直接用方法二。

    2. 要先读取文件后合并,并且读取文件要加上该文件的路径。
      在Windows文件属性中查看的路径是“ \ ”,Python将“ / ”识别为转义字符,解决方法有三种:①用正斜杠“ / ”;②用双反斜杠(进行斜杠转义)③在路径前加r,让路径变为原始字符串如r'c:\Users\...',详情可见https://blog.csdn.net/weixin_42899627/article/details/108032987?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2allfirst_rank_v2~rank_v25-2-108032987.nonecase&utm_term=python%E8%B7%AF%E5%BE%84%E7%9A%84%E6%96%9C%E6%9D%A0%E4%B8%BA%E4%BB%80%E4%B9%88%E6%98%AF%E5%8F%8D%E7%9A%84
      在这里插入图片描述

    思考(待解决):
    如何将合并的PDF文档生成到指定位置
    (目前会生成到Thonny的默认位置)

    展开全文
  • 对于VBA的读者来说,这是本具有较强指导和实用的图书。 3图书前言 AutoCAD VBA二开发教程读者对象 本书适用于使用VBA和ActiveX技术对AutoCAD进行二开发的工程技术人员。 如果对AutoCAD VBA开发毫无概念...
  • 使用多个DES密钥执行多重加密可以增加安全;但是双重DES由于【A】而并没有相应地 增加安全。 A.中间相遇攻击 B.线性分析攻击 C.差分分析攻击 D.计时攻击 我们常提到的"在Windows操作系统中安装VMware,运行...
  • 批量WORD转PDF转换器

    2018-07-02 08:48:36
    批量Word转PDF转换器是一款Windows平台下的Word转PDF转换工具,它可以方便快捷地一次性多个Word文件转换成PDF格式文件。由于软件抛弃了传统虚拟打印生成PDF的方法,而采用直接分析WORD文件并转换到PDF的技术,因此...
  • 前言:有同学问我,如何把文件夹中的文件一次性完成打印,由于文件太,单个打印着实麻烦。这些文件主要有三种类型,分别为PDF,word(.doc和.docx),我决定把他们全部变为PDF文件,然后再合并所有的pdf文件为一...

    前言:有同学问我,如何把文件夹中的文件一次性完成打印,由于文件太多,单个打印着实麻烦。这些文件主要有三种类型,分别为PDF,word(.doc和.docx),我决定把他们全部变为PDF文件,然后再合并所有的pdf文件为一个PDF文件,分两个步骤完成!

    1.把所有word转化为PDF

    from win32com.client import Dispatch
    import os
    
    pdfRoot = "D:\Desktop\wordToPDF\pdf" #保存pdf结果的文件夹
    wordRoot = "D:\Desktop\wordToPDF\word" #读取word的文件夹
    
    def doc2pdf(filePath, file):
        print("正在转换:",file)
        word = Dispatch('Word.Application')
        doc = word.Documents.Open(filePath)
        outFile = pdfRoot +"\\"+ file.split('.')[0] + ".pdf" #生成pdf文件路径名称
        doc.SaveAs(outFile, FileFormat=17)
        doc.Close()
        word.Quit()
    
    if __name__ == "__main__":
        filelist = os.listdir(wordRoot)
        for file in filelist:
            if (file.endswith(".doc") or file.endswith(".docx")) and ("~$" not in file):
                filePath = wordRoot+"\\"+file
                doc2pdf(filePath, file)
        print ("所有word文件转PDF文件已完成!!!")
    

    2.合并所有PDF文件

    from PyPDF2 import PdfFileMerger
    import os
    
    pdfRoot = "D:\Desktop\wordToPDF\pdf" #保存pdf结果的文件夹
    merger = PdfFileMerger() #调用PDF文件合并模块
    filelist=os.listdir(pdfRoot) #读取文件夹所有文件
    for file in filelist:
        if file.endswith(".pdf"):
            merger.append(pdfRoot+"\\"+file)#合并PDF文件
    merger.write("result.pdf") #写入PDF文件
    

    在这里插入图片描述


    3.多个word文件合并

    from os.path import abspath
    from win32com import client
    import os
    
    wordRoot = "D:\Desktop\Ada\word" #读取word的文件夹
    final_docx = r"D:\Desktop\Ada\result\word文件合并结果2.docx"
    files = list()
    filelist = os.listdir(wordRoot)
    for file in filelist:
        if (file.endswith(".doc") or file.endswith(".docx")) and ("~$" not in file):
            filePath = wordRoot+"\\"+file
            files.append(filePath)
    # 启动word应用程序
    word = client.gencache.EnsureDispatch("Word.Application")
    word.Visible = True
    # 新建空白文档
    new_document = word.Documents.Add()
    
    for fn in files[::-1]:
        print ("正在合并:", fn)
        fn = abspath(fn)
        new_document.Application.Selection.Range.InsertFile(fn)
    # 保存最终文件,关闭Word应用程序
    new_document.SaveAs(final_docx)
    new_document.Close()
    word.Quit()
    

    在这里插入图片描述

    展开全文
  • 在处理时,需要将多个报表一次性打印输出。因为多个报表是以不同的报表模板生成的,所以转成各个pdf之后,需要将这多个pdf文件合并为一个。并且,这个文件,还得附加页码,因为原来做这样的报表,是用页码标签机手工...

      某一项目,用ReportMachine做报表模板,然后写了一个DLL以JNI方式供Java调用。在处理时,需要将多个报表一次性打印输出。因为多个报表是以不同的报表模板生成的,所以转成各个pdf之后,需要将这多个pdf文件合并为一个。并且,这个文件,还得附加页码,因为原来做这样的报表,是用页码标签机手工盖印后归档,这样麻烦,希望用电脑输出时自动生成页码。今天终于把这个问题彻底解决了。

    一、pdf文件的合并,使用pdftk工具,可以通过命令行,将多个合并为一个。
      1.将横向排列的报表,旋转变成纵向。
       pdftk in.pdf cat 1-endeast output out.pdf
      2. 将多个文件合并为一个文件
       pdftk 1.pdf 2.pdf 3.pdf output all.pdf
      这个工具参见:http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/

    二、给pdf文件额外添加页码,使用cpdf工具。
      最开始时,对应pdftk有一个STAMPtk工具,就是为pdf加水印,可是它是商业版需要购买。接着找到a-pdf.com这个网站,然后对应找了一个PDFNumber.exe破解的,可惜它是GUI操作方式,不适合在后台用命令行静默执行。费了好大劲,才找到cpdf这个工具,试了一下,加页码确实不错。
      命令:cpdf -bottomright 40 -font Arial -font-size 16 -add-text "%Page" 0.pdf -o 1.pdf
      此命令会输出:For non-commercial use only.... 可加参数 2>nul来屏蔽。
      cpdf -bottomright 40 -font Courier -font-size 16 -add-text "%Page" 0.pdf -o 1.pdf 2>nul
      详见:http://community.coherentpdf.com/

    至此,关于多个pdf合并,并且添加页码的要求,成功实现。

    补充: cpdf也可以实现pdf文件合并的功能,且可以旋转。
      合并:cpdf -merge 1.pdf 2.pdf -o all.pdf
      旋转:cpdf -rotate 270 3.pdf -o 4.pdf
     在添加页码时,如果有文件是旋转的pdf,为了一致都在所见的文件统一位置,应加参数-prerotate才行。
      cpdf -prerotate -bottomright 40 -font Arial -font-size 16 -add-text "%Page" 0.pdf -o 1.pdf 2>nul
     同时,上一命令行,如果是放在批处理中,百分号(%)需要转义,用两个%才行。

     

       目前,报表操作部分,我是用cpdf的办法。

     

    转载于:https://www.cnblogs.com/bigsong/p/3983802.html

    展开全文
  • 导出excel和PDF小结 vba

    2016-10-28 10:27:00
    最近接触了一个关于Access工具的项目,所以整理下需要使用的方法。 功能要求简介:  1.将数据表中的数据导出到excel和PDF  2.... 3.... 1.设置头部的标题内容和... 2.copy设置好的单元格,一次性生成多个sheet....
  • 1.25 函数只定义了一次,调用了一次,但编译器提示非法重声明了。 43 *1.26 main的正确定义是什么?void main正确吗? 44 1.27 我的编译器总在报函数原型不匹配的错误,可我觉得没什么问题。这是为什么? 44 ...
  • visio教程PDF

    热门讨论 2010-05-17 23:56:22
    15.2.3 在多个模板中放置个主图形 15.3 设置模板文件属性 15.4 使用文档模板 15.5 编辑模板文件 15.5.1 编辑主图形 15.5.2 编辑图标 15.5.3 重命名模板文件 15.6 调整模板窗口 15.6.1 浏览...
  • C#微软培训教材(高清PDF

    千次下载 热门讨论 2009-07-30 08:51:17
    14.2 .159 14.3 抽象与密封 .163 14.4 继承中关于属性的一些问题.169 14.5 小 结 .172 第四部分 深入了解 C#.174 第十五章 接 口 .174 15.1 组件编程技术 .174 15.2 接 口 定 义 .177 15.3 ...
  • 可以实现由多个设计师分担设计,可以大幅消减程序的编制时间。   2).与微机、计算机相同的编程方法 ST语言是与C语言相类似的语言,因此使用梯形图语言难以实现的复杂的计算,也能通过与微机及计算机相同的操作方法...
  • 2018 年 12 月 6日,在国家科技领导小组第一次会议上强调“突出‘硬科技’研究,努力取得更原创成果”。2019 年 10 月 16 日,科技部火炬中心组织召开硬科技发展工作座谈会,研究推进硬科技发展工作。 放眼全球,...
  • 本书分10章,共有1000多个实例,编写时从产生电脑故障的各个方面入手,涉及到硬件、软件等各方面的内容,其中包括开/关机中的问题、操作中的问题、软件运用的故障、外设故障以及病毒防治等等,这些都是个人电脑使用...
  • 实例220 动态创建多个Button控件 295 11.2 TextBox控件应用 296 实例221 制作多行文本框 296 实例222 制作密码文本框 297 实例223 在TextBox控件中显示回车符 297 实例224 只允许输入数字的TextBox控件 298 实例225 ...
  • 4.2.3 OR——判断多个条件中是否至少有个条件成立 155 4.2.4 XOR——判断多个条件中是否有个条件成立 156 4.2.5 IF——根据条件判断而返回不同结果 156 4.2.6 IFNA——判断公式是否出现#N/A错误 158 4.2.7 ...
  • 27712.4 选择、编辑、移动窗体元素和控件 28112.4.1 改变窗体页眉和窗体页脚的大小 28212.4.2 选择、移动和缩放单个控件 28212.4.3 将控件和网格对齐 28312.4.4 选择和移动多个控件 28312.4.5 对齐组控件 ...
  • 27712.4 选择、编辑、移动窗体元素和控件 28112.4.1 改变窗体页眉和窗体页脚的大小 28212.4.2 选择、移动和缩放单个控件 28212.4.3 将控件和网格对齐 28312.4.4 选择和移动多个控件 28312.4.5 对齐组控件 ...
  • 27712.4 选择、编辑、移动窗体元素和控件 28112.4.1 改变窗体页眉和窗体页脚的大小 28212.4.2 选择、移动和缩放单个控件 28212.4.3 将控件和网格对齐 28312.4.4 选择和移动多个控件 28312.4.5 对齐组控件 ...
  • 27712.4 选择、编辑、移动窗体元素和控件 28112.4.1 改变窗体页眉和窗体页脚的大小 28212.4.2 选择、移动和缩放单个控件 28212.4.3 将控件和网格对齐 28312.4.4 选择和移动多个控件 28312.4.5 对齐组控件 ...
  • 12.6.4 一次分配所有内存 12.7 返回状态 12.8 总结 12.9 练习 第13章 从c到c++ 13.1 输出 13.2 输入 13.3 函数 13.4 类和抽象数据类型 13.5 重载 13.6 构造函数和析构函数 13.7 面向对象编程和继承 13.8 多态 13.9 ...
  • Windows API自从1993年发布的Windows NT以来一直在演化和扩展,但自从2002年以来,.NET Framework对程序编写方式进行了重大的修改,2012年又进行了一次很大的改动。每10年就会发生这种改变吗?Windows 8现在提供了一...
  • 实例301 合并多个txt文件 实例302 批量复制指定扩展名的文件 实例303 将某文件夹中的文件进行分类存储 实例304 在指定目录下搜索文件 实例305 网络文件夹备份 12.2 文件的压缩与解压缩 实例306 压缩所有文本...
  • 获取上一次运行时的信息 376 显示文件内容 378 文件的复制 380 13-2 文本和二进制 382 在文本文件中保存实数 382 文本文件和二进制文件 383 在二进制文件中保存实数 384 显示文件自身 386 13-3 printf函数...
  • Java目录监视器源程序 9目标文件 内容索引:JAVA源码,综合应用,目录监视 用JAVA开发的一小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。...
  • Java目录监视器源程序 9目标文件 内容索引:JAVA源码,综合应用,目录监视 用JAVA开发的一小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。...
  •  实例120 通过类的确定人类的说话行为 147 5.4 迭代器和分部类的使用 149  实例121 使用迭代器显示公交车站点 149  实例122 使用迭代器实现倒序遍历 150  实例123 使用迭代器实现文字的动态效果 151 ...
  • 代码生成器依赖低,灵活的扩展能力,可快速实现二开发; 2.支持微服务SpringCloud Alibaba(Nacos、Gateway、Sentinel、Skywarking),提供切换机制支持单体和微服务自由切换 3.开发效率高,采用代码生成器,单表、...
  • iStylePDF是一个可高度定制的PDF阅读器,它有PDF阅读常用的功能,同时提供了丰富的开发接口,特有的VBA开发模式和插件模式,可定制自己的插件,来满足不同的PDF操作需求 iStylePDF功能特色: 1、清爽阅读 没有太...

空空如也

空空如也

1 2 3 4 5
收藏数 87
精华内容 34
关键字:

一次性打印多个pdf