精华内容
下载资源
问答
  • 背景图片就是位于文档最底层的图片,文字和其他内容可以浮它的上面。这又分为两种情况,一是局部的背景图片,一是全局的背景图片。局部的背景图片一般很少遇到,这里我要的是整体上的一个背景图片。它往往是一些...

    这个问题我在网上搜了很久,没有找到什么解决方案,需求其实很简单,就是添加背景图片。

    在解决这个问题之前,我们需要了解什么是背景图片?背景图片就是位于文档最底层的图片,文字和其他内容可以浮在它的上面。这又分为两种情况,一是局部的背景图片,一是全局的背景图片。局部的背景图片一般很少遇到,这里我要加的是整体上的一个背景图片。它往往是一些单纯的颜色图片,跟网页的背景图片一样。

    所以怎么做?我突发奇想,just do it,把图片加进去再说,试试居然成功了。很简单,像往常一样将图片加载到文档即可,只不过,要将图片缩放到整个文档,换句话说,图片的初始位置是 0,0大小就是文档的大小,比如你创建A4纸大的文档,图片就应该缩放到大小(595,842),其他的纸张可以去网上查。示例代码如下:

    Document tDoc = new Document(PageSize.A4, 50, 50, 50, 50); //创建文档
    PdfWriter tWriter = PdfWriter.getInstance(tDoc, new FileOutputStream(mFileFullPath.toString())); //创建写入流
    tWriter.setEncryption(null,"1".getBytes(), PdfWriter.ALLOW_SCREENREADERS|PdfWriter.ALLOW_PRINTING,PdfWriter.STANDARD_ENCRYPTION_128); //加密
    tDoc.open();  //打开文档
    Image tImgCover = Image.getInstance(mImgPath+"cover.jpg"); 
    			/* 设置图片的位置 */
    			tImgCover.setAbsolutePosition(0, 0);
    			/* 设置图片的大小 */
    			tImgCover.scaleAbsolute(595, 842);
    			tDoc.add(tImgCover);             //加载图片

    效果图如下:泛黄的就是背景图片,而文字是用程序打上去的,浮在背景之上(图一)。而其他的小图(比如盖章)一样可以浮在上面(图二)。

                                                                                                               (图一)

                                                                    

                                                                    (图二)

     

    展开全文
  • three.js贴图之CubeTextureLoader全景贴图

    千次阅读 2018-09-09 22:04:37
    有时候我们创建地图街景或者地点全景的时候,会经常用到THREE.CubeTextureLoader来对场景Scene的背景进行贴图,使之成为一个天空盒,只不过这个天空盒不能看见其外面的情景,无论怎么缩放,始终都全景内,这是...

    学习交流欢迎加群:789723098,博主会将一些demo整理共享

    有时候我们在创建地图街景或者地点全景图的时候,会经常用到THREE.CubeTextureLoader来对场景Scene的背景进行贴图,使之成为一个天空盒,只不过这个天空盒不能看见其外面的情景,无论怎么缩放,始终都在全景内,这是为什么呢?原因很简单,我们是对Scene的背景颜色进行贴图;笔者从官方文档中查到其应用的方法如下:

    var scene = new THREE.Scene();
    scene.background = new THREE.CubeTextureLoader()
    	.setPath( 'textures/cubeMaps/' )
    	.load( [
    		'px.png',
    		'nx.png',
    		'py.png',
    		'ny.png',
    		'pz.png',
    		'nz.png'
    	] );

    其中,setPath里面的字符串代表图片所在文件夹,load里面的字符串代表你要贴的六个面对应的六张图片,通过观察不难发现,它们的顺序是有规律的,例如px.png和nx.png是对面,以你为例,此刻的你在电脑屏幕对面,就是这样的关系。好了,啰嗦了一大堆,不知道读者们听懂没听懂,还是直接上demo代码吧:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>天空盒贴图</title>
        <script type="text/javascript" src="build/three.js"></script>
        <script type="text/javascript" src="js/controls/OrbitControls.js"></script>
        <script type="text/javascript" src="js/libs/stats.js"></script>
        <style>
            body {
                margin: 0px;
                overflow: hidden;
            }
        </style>
    </head>
    <body>
        <script type="text/javascript" >
            let container1 = document.createElement('div');
            document.body.appendChild(container1);
    
            let container2 = document.createElement('div');
            document.body.appendChild(container2);
    
            let scene = undefined;
            let renderer = undefined;
            let camera = undefined;
            let pointLight = ambientLight = undefined;
            let controls = undefined;
            let stats = undefined;
    
            main();
            render();
    
            function main() {
                initScene();
                initRenderer(container1);
                initCamera();
                initLight();
                textureBox();
                initControls();
                initStats(container2);
                window.addEventListener('resize', onWindowResize, false);
            }
    
            function initScene() {
                scene = new THREE.Scene();
                scene.background = new THREE.CubeTextureLoader()
                    .setPath('textures/cube/park2/').load(
                        [
                            'posx.jpg',
                            'negx.jpg',
                            'posy.jpg',
                            'negy.jpg',
                            'posz.jpg',
                            'negz.jpg'
                        ]
                    );
    
            }
    
            function initCamera() {
                camera = new THREE.PerspectiveCamera(60, window.innerWidth / window.innerHeight, 0.1, 1000);
                camera.position.set(10, 0, 10);
                camera.lookAt(new THREE.Vector3(0, 0, 0));
            }
    
            function initRenderer(container1) {
                renderer = new THREE.WebGLRenderer({antialias:true});
                renderer.setClearColor(0xffffff, 1.0);
                renderer.setSize(window.innerWidth, window.innerHeight);
                container1.appendChild(renderer.domElement);
            }
    
            function initLight() {
                ambientLight = new THREE.AmbientLight(0xffffff, 0.35);
                scene.add(ambientLight);
    
                pointLight = new THREE.PointLight(0xffffff);
                pointLight.position.set(10, 10, 10);
                scene.add(pointLight);
            }
    
            function initControls() {
                controls = new THREE.OrbitControls(camera, renderer.domElement);
                controls.autoRotate = false;
                controls.enableKeys = true;
            }
    
            function textureBox() {
                let geometry = new THREE.BoxGeometry(3, 3, 3, 30, 30, 30);
                let map = new THREE.TextureLoader().load('textures/brick_bump.jpg');
                let material = new THREE.MeshPhongMaterial({map:map});
                let box = new THREE.Mesh(geometry, material);
    
                scene.add(box);
            }
    
            function initStats(container2) {
                stats = new Stats();
                stats.setMode(0);
    
                stats.domElement.style.position = 'absolute';
                stats.domElement.style.left = '0px';
                stats.domElement.style.top = '0px';
    
                container2.appendChild(stats.domElement);
            }
    
            function onWindowResize() {
                camera.aspect = window.innerWidth / window.innerHeight;
                camera.updateProjectionMatrix();
                renderer.setSize( window.innerWidth, window.innerHeight);
            }
    
            function render() {
                controls.update();
                stats.update();
                requestAnimationFrame(render);
                renderer.render(scene, camera);
            }
    
        </script>
    
    
    </body>
    </html>

    效果图:

    展开全文
  • 这个互联网快速发展的信息化时代,企业的商业机密的泄露风险不容小觑。如今,很多企业会通过使用加密软件,来保护电脑里的重要数据。...   当今社会,盗版、山寨、假冒品牌的现象横行,所以...

               在这个互联网快速发展的信息化时代,企业的商业机密的泄露风险不容小觑。如今,很多企业会通过使用加密软件,来保护电脑里的重要数据。于是,选购一款合适的加密软件就变得非常关键了。

        加密软件要怎么挑选?图纸、文档加密软件哪个好?在市面上,关于各类加密软件的评价众说纷纭,让有心选购的客户挑花了眼。加密系统的选购需要考虑的不光是功能和价格,笔者认为以下几个选购因素要重点考虑:

     

    1. 加密软件公司的背景和口碑;  
              当今社会,盗版、山寨、假冒品牌的现象横行,所以加密系统供应商的信誉口碑是必须要考虑的因素。可以通过网上调查来查看该公司的营业执照等证书;或者通过与加密软件供应商接触,分析该公司的专业程度;一个负责任的加密软件公司,应该是能跟你分析他们产品的优缺点,而不是只告诉你,他的产品有多好。   

    2. 加密软件的各项功能是否适合、满足自身企业的需求;  

             功能的“多样性”可能也是部分客户考虑的因素之一。但是,需要注意的是,功能越多(即使不用),不稳定因素相应增加,日常维护的工作量必然增大,客户花费的时间成本、人工成本也响应增加。对于中、小型企业而言,冗余的软件功能也许是不必要的负担。必须从明确切身的需求出发,寻找与需求匹配度最高的加密软件。

    3. 加密软件的兼容性、稳定性;  


        关于兼容性:

            兼容性方面,要考虑二个方面:与操作系统的兼容性、与应用软件的兼容性。

            Windows操作系统会不断升级,因此也要考察加密软件对Windows操作系统(如:32位/64位;win7\win10\win??)的兼容性,安装了兼容性不强的加密软件,操作系统升级后,你连更新补丁都不敢!

              应用软件种类繁多、版本迭代频率高,加密软件跟应用软件的兼容性必须考虑,兼容性不强的软件,应用软件升级,加密软件有可能要跟着升级;应用软件改变一下进程、扩展名等,加密软件后台就要跟着改变设置,不仅增加工作量,还有可能成为加密软件厂商后续收费的理由。

         关于稳定性:

             稳定性方面,同样要考虑二个因素:加密软件运行的稳定性、密文的稳定性。

             加密软件与操作系统、应用软件有千丝万缕的关系,不稳定的加密软件,维护量多得让人心累,总不能为了文件加密,配多一名IT人员吧?

            密文的稳定性方面,要留意是否会损坏文件,是否会造成文件丢失的情况,总不能请狼牧羊,羊没丢,却被狼吃掉了吧?  

     

    4. 速度必须考虑  

              速度涉及到工作效率,因而是选购加密软件必须考虑的因素之一。但值得注意的是,我们关注的应是员工正常使用过程中是否会影响工作效率,比如整个windows系统的运行会不会因为加密软件的存在而变得迟缓;上层应用软件(CAD\Solidworks等)会不会因为加密软件的存在而卡顿;读/写加密文件时,会不会因为加密软件的存在而增加读写时间……  

               但并不是所有的性能指标中,速度都是越快越好的,比如,手动加密文件时,速度越快就代表其加密编码越简单,甚至是假加密。我们可以尝试手动加密一个比较大的文件,如1G的电影文件,如果是瞬间完成的话,基本上可以判定这是一个非常容易破解的假加密了(因为它只是对文件头或文件尾做了处理,甚至只是加插了一些信息而已)。一个真正的全编码加密过程,手动加密的正常时间应该是略大于复制这个文件的时间。  

                但因为正常使用加密软件时,并不需要手动加密,因而这个指标即使慢,也不影响员工的工作效率。

     

    5. 操作简单,对日常工作影响小;  

              上面也提及,功能不是越多越好,而是合适才是最好的,有时候,我们会盲目跟风,比如:认为上市公司、大型企业用得很好的加密软件,自己用就一定没问题,殊不知,需求不同,合适程度可能相差十万八千里。当加密系统的操作过于复杂、繁琐时,花在加密软件的维护时间一多,必然会降低企业的工作效率,严重时甚至还会引起部分员工的不满情绪。

               最好选购适合自己的加密软件,在保障数据绝对安全的同时,把对工作的影响降到最低,才是王道。

     

    6. 提供良好的售后服务体系和专业的技术支持;  

               买产品的同时,还要买“服务”。一个优秀的加密软件供应商,必须有一支专业的技术团队,会在售后提供专业的操作培训和技术支持,出现任何问题时及时响应。

                同时,加密软件是保护企业敏感文件的,是敏感行业,服务方应该熟悉企业情况,才能提供准确的、不影响安全的服务。

                指定专门的、一对一的服务人员是最好的方式,而不是每个维护电话,都只能打到对方售后服务前台,不了解您公司情况的售后服务人员,可能会在服务过程中,配置出损害公司利益的行为,如:给不应该有解密权限的员工赋予解密权限、开放不应该开放的流程等,

     

    7. 安全性是最核心的。  

             最后一点,也是最重要的一点,是我们使用加密软件的初衷。  

             抛开“安全性”不讲的加密软件都是耍流氓。使用加密软件,最核心的要解决的问题就是“文件安全”,合格的、正规的加密软件,编码技术通常都是无法破解的。但访问控制技术,理论上可以破解,因此,外围功能越少,弯弯绕绕越少,理论上是越安全的。

      以上是笔者认为在选购加密软件时,必须重点考虑的7个要点,希望能对读者有所帮助。

    展开全文
  • 问题解决后,个简短的补充说明 如何解读答案 RTFM 和 STFW:如何知道你已完全搞砸了 如果还是搞不懂 处理无礼的回应 如何避免扮演失败者 不该问的问题 好问题与蠢问题 如果得不到回答 如何更好地回答问题 ...
  • 彻底清理卸载后残留文件解决方案

    千次阅读 2019-04-14 10:48:05
    不能彻底清理卸载后残留文件解决方案(ps:因为之前使用的word来写的这篇笔记配有,上传到这不知道怎么加上,所以这篇博客就没有,实在需要的话我qq1252008199发有的word文档给你) 一、背景 当...

    不能彻底清理卸载后残留文件解决方案(ps:因为之前使用的word来写的这篇笔记配有图,上传到这不知道怎么把图加上,所以这篇博客就没有图,实在需要图的话加我qq1252008199发有图的word文档给你)

     

    一、背景

    当我们因为某种需要,在windows新安装了一款软件(这里用java这款软件案例)但发现这款软件的版本不适合当前使用,于是想卸载了老版本的java想要安装新版本时会报错“该软件已经安装在您计算机里,是否重新安装”等我们点确认重新安装,又报错“该操作只对当前产品有效”,这让我们陷入了既卸载不掉老版本又安装不了新版本的尴尬局面。

     

    二、分析原因

    计算机提示我们“该软件已经安装在您计算机里,是否重新安装”说明计算机确实检测到了我们老版本java的安装信息,我们计算机内确实没清理干净卸载后的残留文件。解决问题的思路:我们只要能彻彻底底清理掉卸载后的残留软件,就能成功安装新版本。

     

    三、解决方案

    方案一:重装系统

    系统重装后再装新版本软件必定可行,重装系统可以说能解决百分之九十九的非硬件问题,但是这既费时又费力,给维修人员重装还费钱,我不推荐。

     

    方案二:使用正确卸载方式(以下为win8.1过程截图)

    步骤一:双击“我的电脑”,单击“计算机”

     

    步骤二:单击“卸载或更改程序”

     

    步骤三:找到程序“java”右键,单击“卸载”

     

    注意:步骤三卸载不了先不用管它,继续往下步骤。

     

     

    步骤四:找到安装老版本软件的文件夹删除掉(能找到就找 下找不到就跳过这一步不是很关键)

     

    步骤五:删除注册表相关文件(特别关键)

     

    按快捷键“Win + R在命令框中输入“regedit”,单击确认

     

    按路径HEKEY_CURRENT_USER--àSoftware--àJavaSoft

    将JavaSoft这个文件夹删除,

    同理按路径HKEY_LOCAL_MACHINE--àSOFTWARE--àJavaSoft

    将JavaSoft这个文件夹删除(如果没有就忽略)

    注意:做到这步就可以去试试步骤三,如果还不能将老版本从列表中卸载掉,就直接试试直接安装新版本,一般可以成功安装,如不能那就接着干下去吧。

     

    步骤六:右键“我的电脑”,单击“属性” ,单击“高级系统设置”

     

    先跳到“高级”,然后单击“环境变量”

     

     

    找到有关要卸载的软件名字字样,如这里的“JAVA_HOME”

     

      

     

    查看“path”或“classpath”其值是不是带有想卸载的软件的名字的字样,如果有也一一删除掉。

    注意:反正这一步骤就是为了删除老版本的路径,让电脑按这个路径找不到它,自然就不会检测出老版本的软件。

    好了,做到这一步应该没什么问题了,先重启下你的电脑试试安装新版本吧。

     

    方案三:系统还原法

    当你认认真真做完方案二还不行的话,那只能使出我的绝杀技了,亲测百分百有效。

    先介绍下系统还原法吧,系统还原法就是系统曾经记录下你在计算机进行的有点特色的操作,比如曾经有天你卸载了个软件,哪天你新安装了某个软件,它每次记录就相当于一次存储当前的状态。你可以当作这是系统在快照自己。系统还原法我认为就相当于一个时光机器,回到当初的起点。其与系统重装的最大区别就是不会让我们的C盘和其他盘文件丢失,可能会影响我们在时光倒流的那个点之后所安装的软件。有趣的事来了,试想我们要是时光倒流到我们装那个老版本之前那不就根本不需要什么彻底清理老版本了吗(因为根本还没装老版的软件啊)

    注意:此方法非常适合近期安装了老版本,但又觉得老版本不适合卸载又卸载不干净导致无法安装新版本软件的人的人。(近期哦)

     

     

    步骤一:右键“我的电脑”,单击“属性” ,单击“高级系统设置”

     

    步骤二:单击“系统保护”,单击“系统还原”,单击“下一步”

    步骤:选中列表中一个你想要时光倒回的一个点(是倒回这个点之前,就是不包含这个点),单击下一步,最好将所有应用都关闭,不然可能影响成功回到那个点。

     

    注意:这个可能一遍这样操作不会成功(如果成功了就不用做后面的操作了自行忽略后面直接安装新版本软件去),我当时还原是失败的,试了三遍还是提示“还原系统失败,原因无法将C:\....”的字样。这个时候不要急,它提示我们可以用高级系统还原法

    高级系统还原法:其实也是系统还原法只是它进入那个界面不同而已。下面我介绍的是win8.1(其它系统的可以百度如何进入高级系统还原很简单)进入这个页面的操作。

    步骤一:返回桌面,移动鼠标,让鼠标指针沿着右下角的角平分线一直移动到屏幕的右下角最边的位置停住,系统会在右侧弹出个界面,我们单击弹出来的界面中的“设置”。

    步骤二:单击“电源”,按住键盘“Shift”的同时单击“重启”,这时电脑会重启然后进入了系统界面。(由于无法演示所以找了下百度的图,大概就是这样,如有错误见谅)

     

     

    步骤三:单击“疑难解答”

     

    步骤四:单击“高级选项”然后找到“系统还原”字样

     

     

     

    步骤五:选择一个账户,输入密码

    步骤六:和还原系统法一样他会让我们选择一个点进行系统还原,我们选安装老版本的软件那个点就好。然后坐等它还原成功吧,亲测可以还原成功。

    步骤七:安装你的新版本的软件,终于大功告成。

     

     

     

    一些扩展知识:

    Windows向下兼容性:64位的系统可以安装运行32位的软件,反过来不行。

    判断一个软件包是64位还是32位在linux下直接用“file +文件名”

    Windows里面我知道的方法是安装它的时候要是默认安装在program files(x86)这个文件夹的是32位的,而默认安装在program files这个文件夹的是64位的。

    当然这粗略估计,要确定还得看其打印信息为准。

     

    结语:

    你遇到过的问题别人早就遇到过了,

    一切能百度的问题都不是问题!

     

     

     

     

    展开全文
  • 背景图A到背景图B怎么可能有动画过渡效果呢?这和我这么多年的认识完全不符合啊!难道这么多年我学的是假的CSS。 但是,事实就摆眼前,不得不信啊。 我一琢磨,莫非是Chrome浏览器自己了什么私货,最近才支持...
  • 怎么擅长写文档,先上效果 github源码地址 背景使用element-ui 开发项目中,有一个隐藏的组件 el-scrollbar 可以用来美化滚动条,往往有这种需求,需要滚动到一定的位置,并且可以一些过渡的动画,...
  • Ant Design Vue中Tabs 标签页的样式如所示:其中蓝色滚动条标签的下边,如果想让滚动条去标签页的上边,(这可不是我想出来的,设计稿规定。。。)应该怎么实现呢? 二、实现 Ant Design Vue—Tabs 标签页的...
  • # 背景 我想要当前的Spring Boot项目中使用Redis作为缓存。目前所了解到的内容是Redis缓存有两种实现方式,一种是使用Spring Cache注解,需要加一个配置文件,另一种是使用RedisTemplate,想要两种方式混合使用。 ...
  • Redis INCR命令

    千次阅读 2018-05-24 13:51:30
    路人甲:嘿,兄弟,知不知道redis的incr命令怎么用?路人丙:啥?你这都不知道,不就是将...肯定不少人文档的时候把蓝色背景的文字漏了吧。这是一个针对字符串的操作,因为 Redis 没有专用的整数类型,所以 key...
  • GTK+ FAQ常见问题解答

    2009-02-22 11:03:56
    5.24 我的窗口没有实现/显示之前我怎么创建象素? 6. 应用 GTK+ 开发程序: 特殊部件的问题 6.1 我如何得到列表部件的选中内容? 6.2 列表滚动的时候,我怎么保持列表部件的标签显示? 6.3 任何禁止用户...
  • EasyPhotos目前还更新,欢迎各种Issues以及群讨论,只是目前本人精力以及本职工作原因,更新不会频繁,只能保证不定期查看反馈统一修改,希望各位理解,感谢! QQ交流群:288600953 更新日志 3.1.1: 修复:...
  • flashmtv的制作

    2011-11-17 18:15:11
    背景层〗50帧处,按右键插入【关键帧】前面任意地方【创建补间动画】,125帧处插入【关键帧】前面任意位置【创建补间动画】,如果想让背景层一直显示到歌曲结束,拉动滚动条到和声音结尾对齐的地方插入...
  • Excel插件--OBS.DLL

    2008-11-27 17:05:52
    18、Excel中播放背景音乐、定时执行特定的程序、整点报时,一定很惬意... 19、屏幕录像及捕捉。哦,这个功能很强大啊。可以截取屏幕图像、录制屏幕变化、图片格式转换、批量bmp转成AVI文件、AVI文件转成动画GIF...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 159
精华内容 63
关键字:

怎么在文档加背景图