精华内容
下载资源
问答
  • C# word 图片大小

    2017-10-24 13:50:00
    实际工作中,首先将图片插入到word中,根据目前的大小,计算转换为目标大小的比率,将长宽按照目标大小进行缩放即可。 msword.InlineShape spa = oOperateDoc.Tables[oOperateDoc.Tables.Count].Cell(1, 1).R...

    通过Office自带的类库word文档中插入图片,图片大小的单位为磅

    而文档中,图片的大小已经固定,为CM。

    实际工作中,首先将图片插入到word中,根据目前的大小,计算转换为目标大小的比率,将长宽按照目标大小进行缩放即可。

    msword.InlineShape spa = oOperateDoc.Tables[oOperateDoc.Tables.Count].Cell(1, 1).Range.InlineShapes.AddPicture(jietuA);
    float yuanwidth = spa.Width;
    float yuanheidht = spa.Height;
    double bilv = GetChangepicSizeRation(yuanwidth,yuanheidht, targetW, targetH);
    spa.Width = (float)(yuanwidth * bilv);
    spa.Height = (float)(yuanheidht * bilv);
    

      

     

    private double GetChangepicSizeRation(double width_pt, double height_pt, double targetWidthCM, double targetHeightCM)
            {
                //CM转pt
                double p = 0.03527;// 0.03759;  //1pt=0.3759mm
                double TargetWdithPt = targetWidthCM / p;
                double TargetHeightPt = targetHeightCM / p;
                double[] bilv = new double[2];
                bilv[0] = TargetWdithPt / width_pt;
                bilv[1] = TargetHeightPt / height_pt;
                return (bilv[0] > bilv[1] ? bilv[1] : bilv[0]);
            }
    

       

    转载于:https://www.cnblogs.com/DayDreamEveryWhere/p/7723133.html

    展开全文
  • 此功能中的文本替换实现不难,但是图片替换和自适用费了很大劲,主要是要知道word文档的原理,实际是一个zip 的压缩包,里面包括图片信息和xml文件等等,主要就是看xml中的对应关系,大家可以试着把word改为一个zip...

            此功能中的文本替换实现不难,但是图片替换和自适用费了很大劲,主要是要知道word文档的原理,实际是一个zip 的压缩包,里面包括图片信息和xml文件等等,主要就是看xml中的对应关系,大家可以试着把word改为一个zip文件看看,废话不多说,直接上代码。

    主类,测试类:

    package com.test;
    
    import org.docx4j.Docx4J;
    import org.docx4j.TraversalUtil;
    import org.docx4j.finders.RangeFinder;
    import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
    import org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart;
    import org.docx4j.wml.*;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    
    public class Test {
    
        public static void main(String[] args) throws Exception {
    
            // 设置的标签
            ArrayList<String> bmList = new ArrayList<>();
            bmList.add("username");
            bmList.add("userage");
            bmList.add("usersex");
    
            // 文件源目录
            String srcPath = "C:\\Users\\0253000023\\Desktop\\1.docx";
            // 目标文件目录
            String destPath = "C:\\Users\\0253000023\\Desktop\\5.docx";
            Map<String, String> map = new HashMap<>();
            map.put("username","张三");
            map.put("usersex","男");
            map.put("userage","27");
    
            // 打开一个存在的word
            WordprocessingMLPackage wPackage = WordprocessingMLPackage.load(new FileInputStream(srcPath));
            // 作word处理
            WordprocessingMLPackage wPackage1 = replaceContentByBookmark(wPackage, map, bmList);
            wPackage1.save(new File(destPath));
            Docx4J.toPDF(wPackage1,new FileOutputStream(new File("C:\\Users\\0253000023\\Desktop\\5.pdf")));
    
        }
    
    
        public static  WordprocessingMLPackage  replaceContentByBookmark(WordprocessingMLPackage wPackage, Map<String, String> map, ArrayList<String> bmList)  {
            try {
                // 提取正文
                MainDocumentPart main = wPackage.getMainDocumentPart();
                Document doc = main.getContents();
                Body body = doc.getBody();
    
                // 获取段落
                List<Object> paragraphs  = body.getContent();
    
                // 提取书签并获取书签的游标
                RangeFinder rt = new RangeFinder("CTBookmark", "CTMarkupRange");
                new TraversalUtil(paragraphs, rt);
    
                // 遍历书签
                for (CTBookmark bm : rt.getStarts()) {
                    // 替换文本内容
                    for (String bmName: bmList) {
                        if (bm.getName().equals(bmName)){
                            Tool.replaceText(bm, map.get(bm.getName()));
                        }
                    }
    
                    // 替换image
                    if (bm.getName().equals("userimg")){
                        Tool.addImage(wPackage, bm, "C:\\Users\\0253000023\\Desktop\\4.jpg");
                    }
    
                    // 替换image
                    if (bm.getName().equals("userimg2")){
                        Tool.addImage(wPackage, bm, "C:\\Users\\0253000023\\Desktop\\333.jpg");
                    }
                }
    
            } catch (Exception e){
                // handle exception
            }
    
            return  wPackage;
        }
    
    }
    

     

    工具类,重点在这里

    package com.test;
    
    import org.apache.commons.io.IOUtils;
    import org.docx4j.Docx4J;
    import org.docx4j.XmlUtils;
    import org.docx4j.convert.out.FOSettings;
    import org.docx4j.dml.Graphic;
    import org.docx4j.dml.GraphicData;
    import org.docx4j.dml.picture.Pic;
    import org.docx4j.dml.wordprocessingDrawing.Inline;
    import org.docx4j.fonts.IdentityPlusMapper;
    import org.docx4j.fonts.Mapper;
    import org.docx4j.fonts.PhysicalFont;
    import org.docx4j.fonts.PhysicalFonts;
    import org.docx4j.jaxb.Context;
    import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
    import org.docx4j.openpackaging.parts.WordprocessingML.BinaryPartAbstractImage;
    import org.docx4j.wml.*;
    
    import javax.xml.bind.JAXBElement;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.OutputStream;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    
    /**
     * 模板word内容替换工具类
     */
    public class Tool {
    
        /**
         * 在标签处插入替换内容
         *
         * @param bm
         * @param wPackage
         * @param object
         * @throws Exception
         */
        public static void replaceText(CTBookmark bm, Object object) throws Exception {
            if (object == null) {
                return;
            }
            if (bm.getName() == null){
                return;
            }
            String value = object.toString();
            try {
                List<Object> theList = null;
                ParaRPr rpr = null;
                if (bm.getParent() instanceof P) {
                    PPr pprTemp = ((P) (bm.getParent())).getPPr();
                    if (pprTemp == null) {
                        rpr = null;
                    } else {
                        rpr = ((P) (bm.getParent())).getPPr().getRPr();
                    }
                    theList = ((ContentAccessor) (bm.getParent())).getContent();
                } else {
                    return;
                }
                int rangeStart = -1;
                int rangeEnd = -1;
                int i = 0;
                for (Object ox : theList) {
                    Object listEntry = XmlUtils.unwrap(ox);
                    if (listEntry.equals(bm)) {
                        if (((CTBookmark) listEntry).getName() != null) {
                            rangeStart = i + 1;
                        }
                    } else if (listEntry instanceof CTMarkupRange) {
                        if (((CTMarkupRange) listEntry).getId().equals(bm.getId())) {
                            rangeEnd = i - 1;
                            break;
                        }
                    }
                    i++;
                }
                int x = i - 1;
                for (int j = x; j >= rangeStart; j--) {
                    theList.remove(j);
                }
    
                ObjectFactory factory = Context.getWmlObjectFactory();
                org.docx4j.wml.R run = factory.createR();
                org.docx4j.wml.Text t = factory.createText();
                t.setValue(value);
                run.getContent().add(t);
                theList.add(rangeStart, run);
            } catch (ClassCastException cce) {
    
            }
        }
    
        /**
         * 替换image
         * @param wPackage
         * @param bm
         * @param file
         */
        public static void addImage(WordprocessingMLPackage wPackage, CTBookmark bm, String file){
    
            // 新增image
            ObjectFactory factory = Context.getWmlObjectFactory();
            P p = (P) (bm.getParent());
            R run = factory.createR();
            byte[] bytes ;
            Long newCx = 0L;
            Long newCy = 0L;
            String newRelId = null;
            try {
                bytes = IOUtils.toByteArray(new FileInputStream(file));
                BinaryPartAbstractImage imagePart = BinaryPartAbstractImage.createImagePart(wPackage,bytes);
                Inline newInline = imagePart.createImageInline(null, null, 0, 1, false,0);
    
                // 获取CX 、CY
                newCx = newInline.getExtent().getCx();
                newCy = newInline.getExtent().getCy();
    
                // 获取relId
                Graphic newg = newInline.getGraphic();
                GraphicData graphicdata = newg.getGraphicData();
                Object o = graphicdata.getAny().get(0);
                Pic pic = (Pic)XmlUtils.unwrap(o);
                newRelId = pic.getBlipFill().getBlip().getEmbed();
    
            } catch (Exception e) {
                e.printStackTrace();
            }
    
            // 获取模板图片的CX 、CY 、relId
            Object parent = (P) bm.getParent();
            List<Object> rList = getAllElementFromObject(parent, R.class);
            for (Object robj: rList){
                if (robj instanceof R){
                    R r = (R) robj;
                    List<Object> drawList = getAllElementFromObject(r, Drawing.class);
                    for (Object dobj: drawList){
                        if (dobj instanceof Drawing){
                            Drawing d = (Drawing) dobj;
                            Inline inline = (Inline)d.getAnchorOrInline().get(0);
                            // 获取CX 、CY
                            Long cx = inline.getExtent().getCx();
                            Long cy = inline.getExtent().getCy();
    
                            // 获取relId
                            Graphic g = inline.getGraphic();
                            GraphicData graphicdata = g.getGraphicData();
                            Object o = graphicdata.getAny().get(0);
                            Pic pic = (Pic)XmlUtils.unwrap(o);
                            String relId = pic.getBlipFill().getBlip().getEmbed();
    
                            // 替换relId
                            pic.getBlipFill().getBlip().setEmbed(newRelId);
                            // 处理CX、CY
                            Map<String,Long> map = dealCxy(cx, cy, newCx, newCy);
    
                            // 更改cx、cy
                            inline.getExtent().setCx(map.get("setCx"));
                            inline.getExtent().setCy(map.get("setCy"));
    
                        }
                    }
                }
            }
        }
    
        /**
         * 处理图片适应大小
         * @param cx
         * @param cy
         * @param newCx
         * @param newCy
         */
        public static Map<String, Long> dealCxy(Long cx, Long cy, Long newCx, Long newCy){
            Map<String, Long> map = new HashMap<>();
            Long setCx;
            Long setCy;
    
            if (newCx > cx){
                if (newCy <= cy){
                    setCx = cx;
                    setCy = newCy/(newCx/cx);
                } else {
                    if ((newCx/cx) > (newCy/cy)){
                        setCx = cx;
                        setCy = newCy/(newCx/cx);
                    } else {
                        setCy = cy;
                        setCx = newCx/(newCy/cy);
                    }
                }
            } else {   // newCx < cx
                if (newCy > cy) {
                    setCx = cx;
                    setCy = newCy * (cx/newCx);
                } else {
                    if ((cx/newCx) > (cy/newCy)) {
                        setCx = cx;
                        setCy = newCy *(cx/newCx);
                    } else {
                        setCy = cy;
                        setCx = newCy * (cy/newCy);
                    }
                }
            }
            map.put("setCx",setCx);
            map.put("setCy",setCy);
            return map;
        }
    
    
        /**
         * 得到指定类型的元素
         * @param obj
         * @param toSearch
         * @return
         */
        public static List<Object> getAllElementFromObject(Object obj, Class<?> toSearch) {
            List<Object> result = new ArrayList<>();
            if (obj instanceof JAXBElement)
                obj = ((JAXBElement<?>) obj).getValue();
            if (obj.getClass().equals(toSearch))
                result.add(obj);
            else if (obj instanceof ContentAccessor) {
                List<?> children = ((ContentAccessor) obj).getContent();
                for (Object child : children) {
                    result.addAll(getAllElementFromObject(child, toSearch));
                }
            }
            return result;
        }
    
        /**
         * word 转换 pdf (实际是没有用到的)
         * @param docxPath
         * @param pdfPath
         * @throws Exception
         */
        public static void convertDocxToPDF(String docxPath, String pdfPath) throws Exception {
            OutputStream os = null;
            try {
                WordprocessingMLPackage mlPackage = WordprocessingMLPackage.load(new File(docxPath));
                Mapper fontMapper = new IdentityPlusMapper();
                fontMapper.put("华文行楷", PhysicalFonts.get("STXingkai"));
                fontMapper.put("华文仿宋", PhysicalFonts.get("STFangsong"));
                fontMapper.put("隶书", PhysicalFonts.get("LiSu"));
                mlPackage.setFontMapper(fontMapper);
    
                os = new java.io.FileOutputStream(pdfPath);
    
                FOSettings foSettings = Docx4J.createFOSettings();
                foSettings.setWmlPackage(mlPackage);
                Docx4J.toFO(foSettings, os, Docx4J.FLAG_EXPORT_PREFER_XSL);
    
            }catch(Exception ex){
                ex.printStackTrace();
            }finally {
                IOUtils.closeQuietly(os);
            }
        }
    
        /**
         * 下载PDF文件(实际是没有用到的)
         * @param wordMLPackage
         * @param os
         * @throws Exception
         */
        public  void pdfFile(WordprocessingMLPackage wordMLPackage,OutputStream os) throws Exception {
    
            String regex = null;
            Mapper fontMapper = new IdentityPlusMapper();
            wordMLPackage.setFontMapper(fontMapper);
            PhysicalFont font = PhysicalFonts.get("Arial Unicode MS");
            String directory = "D:\\upload\\pdf";
            String fileName = "OUT_ConvertInXHTMLURL.pdf";
            File f = new File(directory,fileName);
            if(f.exists()) {
                // 文件已经存在,输出文件的相关信息
                System.out.println(f.getAbsolutePath());
                System.out.println(f.getName());
                System.out.println(f.length());
            } else {
                //  先创建文件所在的目录
                f.getParentFile().mkdirs();
            }
            File file = new File(directory+"/"+fileName);
            OutputStream os34 = new java.io.FileOutputStream(file);
            Docx4J.toPDF(wordMLPackage, os34);
            os.flush();
            os.close();
            wordMLPackage = null;
        }
    
    
    }
    
    展开全文
  • 1,单击文件 2. 3.如下图,最后确定 4.如图 ...注意,n需要替换为实际值:如15 代码中单位厘米 (1)设置固定大小n厘米: Sub resetImgSize() Dim iShape As In...

    1,单击文件

    2.

     

    3.如下图,最后确定

     

     

     

     

     4.如图

     

    5.在弹出框中点击创建,

     

     6.将宏命令copy到命令窗口中并点击运行即可,也无需保存

    注意,n需要替换为实际值:如15

     

     

     

     

     

     

    代码中单位厘米

    (1)设置固定大小n厘米:

    Sub resetImgSize()
    Dim iShape As InlineShape
    For Each iShape In ActiveDocument.InlineShapes
    iShape.LockAspectRatio = msoTrue
    iShape.Height = CentimetersToPoints(n)
    iShape.Width = CentimetersToPoints(n)
    Next
    End Sub

    (2)等比例缩放n倍

    Sub resetImgSize()

    Dim imgHeight

    Dim imgWidth
    Dim iShape As InlineShape
    For Each iShape In ActiveDocument.InlineShapes
    iShape.LockAspectRatio = msoTrue

    imgHeight = iShape.Height

    imgWidth = iShape.Width
    iShape.Height = CentimetersToPoints(n * imgHeight )
    iShape.Width = CentimetersToPoints(n * imgWidth)

    Next
    End Sub

    (3)最大宽度n厘米等比例缩放:

    Sub resetImgSize()

    Dim imgHeight

    Dim imgWidth
    Dim iShape As InlineShape
    For Each iShape In ActiveDocument.InlineShapes
    iShape.LockAspectRatio = msoTrue

    imgHeight = iShape.Height
    imgWidth = iShape.Width

     

    iShape.Height = CentimetersToPoints(n * imgHeight / imgWidth)
    iShape.Width = CentimetersToPoints(n)
    Next
    End Sub

     

    转载于:https://www.cnblogs.com/janwang/p/8289803.html

    展开全文
  • Word图片压缩

    2018-12-01 01:25:00
    虽然文档中显示的图片区域变小了,但实际存储在文档中的图片数据没有变化,未显示区域的图片数据仍然存储在文档中,文档的大小不会因裁剪而变小。关闭文档重新打开,用户可以通过“裁剪”功能恢复显示整幅图片。完成...

    造冰箱的大熊猫,本文适用于Microsoft Word 2007@cnblogs 2018/12/1

     

    图片插入Word文档后,可以通过“裁剪”功能只显示图片的部分区域。虽然文档中显示的图片区域变小了,但实际存储在文档中的图片数据没有变化,未显示区域的图片数据仍然存储在文档中,文档的大小不会因裁剪而变小。关闭文档重新打开,用户可以通过“裁剪”功能恢复显示整幅图片。完成文档的最终编辑后,可以对文档中的图片进行压缩,将不在文档中显示的图片区域的数据从文档中删除,减小文档大小。具体操作步骤如下:

      - 鼠标左键双击图片。

      - 在“格式”菜单栏中,选择“压缩图片”。

      - 在弹出的“压缩图片”对话框中,选择“选项”。

      - 在弹出的“压缩设置”对话框中,选中“删除图片的剪裁区域”。

    需要注意的是,压缩后的图像无法恢复回原始状态,使用时慎之又慎(“修改原始设计,慎之又慎”)。

    图片压缩(点击鼠标右键看大图)

    转载于:https://www.cnblogs.com/pandabang/p/10048019.html

    展开全文
  • 原文地址:Word批量打印、取消超链接及批量删除图片和修改图片大小技巧作者:水流云 除了上次介绍过的Word中批量删除英文或中文的方法,在Word中还有很多批量操作可以帮助我们提高日常办公的效率,这里再介绍一些...
  • 是的,不用找什么神奇,也不用现学ps,word简单两步走,轻松搞定图片大小,一起来试试吧! Word 2019 for Mac压缩图片的图文教程 1、在word文档中插入图片,如下图所示: 2、在桌面左上角工具栏中,选择【文件】–...
  • 打开含有图片的Word2007文档,在上下拖动滚动条浏览文档时总会发现Word图片显示不完全,有时候是图片中间出现空白的一行,有时候是图片显示大小实际又不符合,但是把Word程序最小化后再恢复就可以发现图片显示又...
  • 新版身份证规格:尺寸:673*425像素、大年夜小:8.55*5.4厘米、分辨率:200像素/...2.击图片右键点"设置图片格局","大小" 3.往掉落"锁定纵横比"和"相对原始图片大年夜小"复选勾: 4.调剂高度5.4厘米,宽度8.56...
  • 教你怎么打印出实际大小的身份证

    千次阅读 2014-06-14 09:51:57
    1、在word插入图片:   2、击图片右键点“设置图片格式”,“大小”     3、去掉“锁定纵横比”和“相对原始图片大小”复选勾:     4、调整高度5.4厘米,宽度8.56厘米【第二代身份证尺寸规格为...
  • word完美转html(doc、docx 图片转base64编码)

    千次阅读 热门讨论 2019-08-20 14:43:04
    由于我选择将预览修改后的文档保存到S3里面,所以我选择将word中的图片直接转成base64编码,上传到S3中,好处就是不需要额外的地方(例如 mongo)存储保存这些图片,缺点就是转成的html文本的大小会比相应的word文件...
  • 绘制图片时需要存储用于word文章编辑中,而存储的图片空白区域较大(相对图片实际内容而言占据太多空间),需要在word中手动裁剪。图片较多时需要重复,且不易保证每张图片大小调整得一致。 2期望结果 通过m文件...
  • 易捷PDF转换成Word工具是一款专业的PDF转Word工具软件,易捷pdf转word转换器能快速准确的将您PDF文档中的文字及图片提取出来,转换保存成Word格式,同时很好的让原有PDF中的文字/字体/大小/行间距等保持不变,图片也...
  • 先说图片X×dpi=点数dotX是图片实际尺寸,简单点,我们只算图片的高吧,比如说拍了张图片144×144 72dpi,那么它的实际高就是144÷72=2吋dpi是每吋点数,在相机拍出一张图片之后它的dpi就确定了(右键属性摘要里就能...
  • word中插入CAD图时经常会有人将其改变成图片,这样的结果就造成在...出现像这种,实际需要的图好小,图片调整有非常困难的情况。 出现这种情况是因为复制图时,系统默认情况是CAD当前显示界面大小,也就是这种情...
  • 实际工作排版中,时常对图片大小是有要求的,那对于过大的图片,该如何压缩?今天就与大家分享两个免费还超级好用的技巧。 方法一: 首先新建一个Word文档,并将将图片插入在文档中,接着选中图片并右击选择...
  • 如果我们想创建能够随着部件大小自动缩放而不是平铺的背景,我们需要设置一种称之为“边框图片”的东东。 注意 “边框图片”可以通过border-image属性指定,它同时提供了部件的背景和边框。 一个“边框图片”被分为...
  • 生成图片后调用浏览器预览功能,等待文件保存完成,如果保存失败,自动重试3次,最后返回图片在服务器上的实际路径,便于后续处理,如导出到Word或Excel中。 后端接收图片的服务器端口和默认图片大小可通过echart....
  • 随心打-格式报表套打设计工具,可以自由的设计报表打印的格式,按照实际的票据模板,自定义设计要打印的内容,及位置,大小,可以插入直线,图片,文本框,等等,可以指定数据源,动态的打印数据,提供功能丰富的按钮...
  • //文件大小 WORD bfReserved1; //保留字 WORD bfReserved2; //保留字 DWORD bfOffBits; //实际位图数据的偏移字节数,即前三个部分长度之和 } BITMAPFILEHEADER; 对应数据: WORD bfType : 0x4d42 DWORD ...
  • 今天想找一个vba的宏来完成对word中的图片实现批量resize的工作(就是不仅仅只是改变显示的大小,而且可以实际改变图像的大小) 但发现还挺难的,据说不大可能用vba直接搞定。 虽然这里的方法不错,但是好像不...
  • 9.26~9.28 目的:想为社团做一个自己的宣传网站来迎新,同时积累UI设计经验 ...预测或实际遇到的问题 (1)UIPC移动端兼容问题,(bootstrap 和layui提供的模块化帮助我搭建了自适应布局,不...(word图片统一大小
  • DPI与像素分辨率的关系

    千次阅读 2015-11-13 09:08:54
    X是图片实际尺寸,简单点,我们只算图片的高吧,比如说拍了张图片144×144 72dpi,那么它的实际高就是144÷72=2吋 dpi是每吋点数,在相机拍出一张图片之后它的dpi就确定了(右键属性摘要里就能看),比如最常见的72...
  • Nature Communication 投稿要求

    千次阅读 2020-08-19 17:35:22
    Nature Communication 投稿要求格式要求文章内容Microsoft WordTeX/LaTeX封面信...对于第一次投稿(即未经修订的稿件),作者可以选择将手稿文本和图片合并到一个大小不超过30 MB的单个文件(Microsoft Word、TeX/LaTeX
  • 这份漂亮的报告是用XDocBuilder设计出来的,看看截图:   特色: 基于XML的数据模型,可视化拖拽布局 ...运行时动态传递实际XML数据(包括图片) 看看运行时效果:     大小: 225.6 KB
  • 实际工作过程中,很多朋友都有过这样的经历:在文档中加入大量的图片后,发现文档变成了几十M,导致无法通过MAIL进行发送,不得不能过QQ或其它的即时通讯工具进行传送。经过研究发现:可以直接通过Office组件本身...
  • 6、图片显示时具有放大、缩小、全屏显示、实际大小、最适合大小显示功能,并能用鼠标移动图片进行查看。 7、可设定图片浏览权限(即浏览等级),只有具有相应权限的人才能浏览此图片。 8、屏蔽右键复制图片功能。 9...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 121
精华内容 48
关键字:

word图片实际大小