itext设置pdf的尺寸_如何获取pdf文档iText 7的页面大小-问答-阿里云开发者社区-阿里云...

我在iText 7中有一个Java程序,可以接收JSON数据并生成一个PDF文档(带有页眉和页脚),该文档可以很好地处理clientData注释中的变量中的数据,但是当在无注释clientData中使用变量不起作用时,我得到了此错误java.lang.NullPointerException,构建页眉和页脚(在此行中Rectangle pageSize = document.getPdfDocument().getPage(i).getPageSize();)时会出现错误,但不知道什么数据为null,因为JSON数据和PDF的结构相同,我在做什么错呢?

这是所有代码

import com.itextpdf.kernel.pdf.PdfDocument;

import com.itextpdf.kernel.pdf.PdfPage;

import com.itextpdf.kernel.pdf.PdfReader;

import com.itextpdf.kernel.pdf.PdfWriter;

import com.itextpdf.kernel.pdf.canvas.PdfCanvas;

import com.itextpdf.kernel.pdf.extgstate.PdfExtGState;

import com.itextpdf.layout.Document;

import com.itextpdf.layout.element.Table;

import com.itextpdf.layout.element.Text;

import com.itextpdf.io.image.ImageData;

import com.itextpdf.io.image.ImageDataFactory;

import com.itextpdf.kernel.colors.Color;

import com.itextpdf.kernel.colors.DeviceRgb;

import com.itextpdf.kernel.font.PdfFont;

import com.itextpdf.kernel.font.PdfFontFactory;

import com.itextpdf.kernel.geom.Rectangle;

import com.itextpdf.layout.element.Cell;

import com.itextpdf.layout.element.Image;

import com.itextpdf.layout.element.List;

import com.itextpdf.layout.element.ListItem;

import com.itextpdf.layout.element.Paragraph;

import com.itextpdf.layout.property.TextAlignment;

import com.itextpdf.layout.property.VerticalAlignment;

import java.io.File;

import java.io.IOException;

import java.text.NumberFormat;

import java.util.Locale;

import org.json.JSONArray;

import org.json.JSONObject;

public class PDFGenerator {

public static final String DESTINATION = "path/exampleSMA.pdf";

public static void main(String[] args) throws Exception {

File file = new File(DEST);

file.getParentFile().mkdirs();

//WORK

//String clientData = "'{\"nombre_cliente\":\"Postobon\",\"contacto\":\"Kelly Paz\",\"email\":\"ventas@test.com\",\"telefono\":\"233774983\",\"observaciones\":\"\",\"totalizar\":true,\"mostrar_impuesto\":false,\"credito\":true,\"creador\":\"jplata\",\"creador_nombre\":\"JAIME ANTONIO\",\"creador_apellido\":\"PLATA BOGOYA\",\"cargo_asesor\":\"GERENTE\",\"email_asesor\":\"dyehuty@gmail.com\",\"productos\":[{\"modelo\":\"BOLSA ACCESORIOS ESTANDAR\",\"tela\":\"KAMBREL O POLITEX DE 70GR\",\"cantidad\":\"3000\",\"destino\":186,\"destino_label\":\"CALDAS - NEIRA\",\"ancho\":22,\"alto\":33,\"fuelle\":0,\"manija\":0,\"estampado_cara_frontal\":\"1 TINTA MATE\",\"estampado_cara_posterior\":\"2 TINTAS MATE\",\"valor_bolsa\":\"1605\",\"valor_iva\":\"304\",\"iva\":19,\"accesorios_modelo\":[{\"id\":\"1\",\"nombre\":\"CORDON ESTANDAR SENCILLO; PARA BOLSAS CIERRE CORDON O BOLERO.\",\"ancho\":0,\"alto\":0}],\"accesorios_adicionales\":[{\"id\":\"37\",\"nombre\":\"ESTE ACCESORIO SE USA PARA COLOCARLE BASE DE CARTON FORRADA EN EL MISMO MATERIAL A LA BOLSA. NORMALMENTE SE USA PARA LA BOLSA ANCHETA; PERO SE LE PUEDE COLOCAR A CUALQUIER BOLSA.\",\"ancho\":0,\"alto\":0},{\"id\":\"23\",\"nombre\":\"BOLSILLO EN EL MISMO MATERIAL DE LA BOLSA; SE USA PARA LA BOLSA AUTOGUARDABLE TIPO BILLETERA; O PARA CUALQUIER BOLSA QUE SE DESEE LLEVE UN BOLSILLO. EN LOS CAMPOS ALTO Y ANCHO; INDIQUE LAS DIMENSIONES DE ÉSTE BOLSILLO.\",\"ancho\":20,\"alto\":20},{\"id\":\"36\",\"nombre\":\"ESTE ACCESORIO ES UNA CAPA QUE SE COLOCA ENCIMA DEL CUBREVESTIDO. EN EL CAMPO ALTO: INDIQUE EL ALTO DE LA CAPERUZA.\",\"ancho\":0,\"alto\":22}],\"cantidadesReporte\":[{\"cantidad\":3000,\"valor_bolsa\":1605,\"valor_iva\":0,\"subtotal\":4815000,\"total\":4815000}]}]}'";

//NOT WORK

String clientData = "'{\"nombre_cliente\":\"MARCA DE PRUEBA\",\"contacto\":\"Harry\",\"email\":\"harry@test.com\",\"telefono\":\"4553773773\",\"observaciones\":\"\",\"totalizar\":false,\"mostrar_impuesto\":true,\"credito\":false,\"creador\":\"jvalderrama\",\"creador_nombre\":\"JUAN CARLOS\",\"creador_apellido\":\"VALDERRAMA GONZALEZ\",\"cargo_asesor\":\"desarrollador\",\"email_asesor\":\"dyehuty@gmail.com\",\"telefono_asesor\":\"2373719 EXT 1147 - 5138731 - 8033205\",\"celular_asesor\":\"3149008989\",\"productos\":[{\"modelo\":\"BOLSA ACCESORIOS CIERRE ESPECIAL\",\"tela\":\"KAMBREL O POLITEX DE 70GR\",\"cantidad\":\"300,600,1000\",\"destino\":4,\"destino_label\":\"ANTIOQUIA - BARBOSA\",\"ancho\":23,\"alto\":44,\"fuelle\":0,\"manija\":0,\"estampado_cara_frontal\":\"1 TINTA MATE\",\"estampado_cara_posterior\":\"SIN ESTAMPADO\",\"estampado_fuelle_izquierdo\":\"SIN ESTAMPADO\",\"estampado_fuelle_derecho\":\"SIN ESTAMPADO\",\"estampado_fuelle_base\":\"SIN ESTAMPADO\",\"valor_bolsa\":\"1543,1202,1151\",\"valor_iva\":\"293,228,218\",\"iva\":19,\"accesorios_modelo\":[],\"accesorios_adicionales\":[{\"id\":\"37\",\"nombre\":\"BASE DE CARTON FORRADO\",\"descripcion\":\"ESTE ACCESORIO SE USA PARA COLOCARLE BASE DE CARTON FORRADA EN EL MISMO MATERIAL A LA BOLSA. NORMALMENTE SE USA PARA LA BOLSA ANCHETA,PERO SE LE PUEDE COLOCAR A CUALQUIER BOLSA.\",\"ancho\":2,\"alto\":0}],\"cantidadesReporte\":[{\"cantidad\":300,\"valor_bolsa\":1543,\"valor_iva\":87900,\"subtotal\":462900,\"total\":550800},{\"cantidad\":600,\"valor_bolsa\":1202,\"valor_iva\":136800,\"subtotal\":721200,\"total\":858000},{\"cantidad\":1000,\"valor_bolsa\":1151,\"valor_iva\":218000,\"subtotal\":1151000,\"total\":1369000}]},{\"modelo\":\"BOLSA ACCESORIOS CIERRE ESPECIAL\",\"tela\":\"YUTE LAMINADO COLOR CRUDO\",\"cantidad\":\"300,600,1000\",\"destino\":4,\"destino_label\":\"ANTIOQUIA - BARBOSA\",\"ancho\":23,\"alto\":44,\"fuelle\":0,\"manija\":0,\"estampado_cara_frontal\":\"1 TINTA MATE\",\"estampado_cara_posterior\":\"SIN ESTAMPADO\",\"estampado_fuelle_izquierdo\":\"SIN ESTAMPADO\",\"estampado_fuelle_derecho\":\"SIN ESTAMPADO\",\"estampado_fuelle_base\":\"SIN ESTAMPADO\",\"valor_bolsa\":\"6439,5016,4830\",\"valor_iva\":\"1223,953,917\",\"iva\":19,\"accesorios_modelo\":[],\"accesorios_adicionales\":[{\"id\":\"37\",\"nombre\":\"BASE DE CARTON FORRADO\",\"descripcion\":\"ESTE ACCESORIO SE USA PARA COLOCARLE BASE DE CARTON FORRADA EN EL MISMO MATERIAL A LA BOLSA. NORMALMENTE SE USA PARA LA BOLSA ANCHETA,PERO SE LE PUEDE COLOCAR A CUALQUIER BOLSA.\",\"ancho\":2,\"alto\":0}],\"cantidadesReporte\":[{\"cantidad\":300,\"valor_bolsa\":6439,\"valor_iva\":366900,\"subtotal\":1931700,\"total\":2298600},{\"cantidad\":600,\"valor_bolsa\":5016,\"valor_iva\":571800,\"subtotal\":3009600,\"total\":3581400},{\"cantidad\":1000,\"valor_bolsa\":4830,\"valor_iva\":917000,\"subtotal\":4830000,\"total\":5747000}]},{\"modelo\":\"BOLSA ACCESORIOS CIERRE ESPECIAL\",\"tela\":\"TELA DE SUBLIMAR EN KAMB. DE 70GR\",\"cantidad\":\"300,600,1000\",\"destino\":4,\"destino_label\":\"ANTIOQUIA - BARBOSA\",\"ancho\":23,\"alto\":44,\"fuelle\":0,\"manija\":0,\"estampado_cara_frontal\":\"1 TINTA MATE\",\"estampado_cara_posterior\":\"SIN ESTAMPADO\",\"estampado_fuelle_izquierdo\":\"SIN ESTAMPADO\",\"estampado_fuelle_derecho\":\"SIN ESTAMPADO\",\"estampado_fuelle_base\":\"SIN ESTAMPADO\",\"valor_bolsa\":\"1906,1485,1423\",\"valor_iva\":\"362,282,270\",\"iva\":19,\"accesorios_modelo\":[],\"accesorios_adicionales\":[{\"id\":\"37\",\"nombre\":\"BASE DE CARTON FORRADO\",\"descripcion\":\"ESTE ACCESORIO SE USA PARA COLOCARLE BASE DE CARTON FORRADA EN EL MISMO MATERIAL A LA BOLSA. NORMALMENTE SE USA PARA LA BOLSA ANCHETA,PERO SE LE PUEDE COLOCAR A CUALQUIER BOLSA.\",\"ancho\":2,\"alto\":0}],\"cantidadesReporte\":[{\"cantidad\":300,\"valor_bolsa\":1906,\"valor_iva\":108600,\"subtotal\":571800,\"total\":680400},{\"cantidad\":600,\"valor_bolsa\":1485,\"valor_iva\":169200,\"subtotal\":891000,\"total\":1060200},{\"cantidad\":1000,\"valor_bolsa\":1423,\"valor_iva\":270000,\"subtotal\":1423000,\"total\":1693000}]}]}'";

new PDFGenerator().createPdf(DEST, clientData);

}

public void createPdf(String dest, String data) throws IOException {

data = data.replace("'","");

JSONObject jsonPeticion = new JSONObject(data);

JSONArray jsonProductos= jsonPeticion.getJSONArray("productos");

boolean mostrarIva = jsonPeticion.getBoolean("mostrar_impuesto");

NumberFormat formateador = NumberFormat.getInstance(new Locale("us", "US"));

formateador.setMinimumFractionDigits(0);

formateador.setMaximumFractionDigits(0);

System.out.println("JSON ARRAY......" + jsonProductos);

System.out.println("JSON ARRAY LENGTH......" + jsonProductos.length());

PdfDocument pdf = new PdfDocument(new PdfWriter(dest));

try (Document document = new Document(pdf)) {

document.setMargins(120, 36, 120, 36);

document.add(new Paragraph("ESPECIFICACIONES TÉCNICAS DEL PRODUCTO")

.setTextAlignment(TextAlignment.CENTER)

.setBold());

for (int i = 0; i < jsonProductos.length(); i++) {

Text textoTinta = new Text("Tinta Utilizada");

textoTinta.setUnderline(1.5f, -1);

textoTinta.setTextAlignment(TextAlignment.LEFT);

Text textoTintaDescripcion = new Text(": Las tintas que usamos son 100% Ecológicas y Base Agua, "

+ "nuestra visión no es solo comercial sino de responsabilidad "

+ "con el medio ambiente y social.");

Text textoNota = new Text("NOTA: ").setBold();

textoNota.setTextAlignment(TextAlignment.LEFT);

Text textoNotaDescripcion = new Text("Señor cliente por favor tener presente, que en el momento "

+ "de la facturación, debemos facturar todo lo que salga, normalmente "

+ "puede salir un 5% de más o de menos.");

document.add(new Paragraph(textoTinta).add(textoTintaDescripcion)

.setTextAlignment(TextAlignment.JUSTIFIED));

document.add(new Paragraph(textoNota).add(textoNotaDescripcion)

.setTextAlignment(TextAlignment.JUSTIFIED));

String IMG = "C:\\path\\images\\logoSmallBiobolsa.png";

String FONT = "C:\\path\\COMIC.ttf";

ImageData imageData = ImageDataFactory.create(IMG);

Image pdfImg = new Image(imageData);

pdfImg.setWidth(70);

pdfImg.setHeight(77);

Color verdeBioBolsa = new DeviceRgb(5, 94, 27);

PdfFont comic = PdfFontFactory.createFont(FONT, true);

System.out.println("MARGENES SUPERIOR..... " + document.getTopMargin());

System.out.println("MARGENES INFERIOR..... " + document.getBottomMargin());

System.out.println("MARGENES IZQUIERDO..... " + document.getLeftMargin());

System.out.println("MARGENES DERECHO..... " + document.getRightMargin());

Paragraph headerImg = new Paragraph("").add(pdfImg);

Paragraph headerNombreEmpresa = new Paragraph("BIO BOLSA S.A.S")

.setFont(comic)

.setFontSize(20)

.setBold()

.setFontColor(verdeBioBolsa);

Paragraph headerSlogan = new Paragraph("!!Una Empresa con Conciencia Ambiental!!")

.setFont(comic)

.setFontSize(14)

.setFontColor(verdeBioBolsa);

Paragraph headerRegimen = new Paragraph("Régimen Común")

.setFont(comic)

.setFontSize(12)

.setBold()

.setFontColor(verdeBioBolsa);

Paragraph headerIdentificador = new Paragraph("NIT: 900.390.537-1")

.setFont(comic)

.setFontSize(12)

.setFontColor(verdeBioBolsa);

Paragraph footerTelefonosAsesor = new Paragraph("Tels: (57) (1) 7137516 EXT 1142 – 7138731 - 2033205 Cel: (57) 300 275 45 51")

.setFontSize(10)

.setFontColor(verdeBioBolsa);

Paragraph footerWebEmail = new Paragraph("Web: www.biobolsa.com.co E-mail: pchacon@biobolsa.com.co")

.setFontSize(10)

.setFontColor(verdeBioBolsa);

Paragraph footerDireccion = new Paragraph("Fábrica CRA 57 NO 45 A – 52 SUR LA SEVILLANA")

.setFontSize(10)

.setFontColor(verdeBioBolsa);

Paragraph footerCiudad = new Paragraph("Bogotá D.C, Colombia")

.setFontSize(10)

.setFontColor(verdeBioBolsa);

for (int i = 1; i <= document.getPdfDocument().getNumberOfPages(); i++) {

System.out.println("PAGINA DEL PDF" + i);

try {

Rectangle pageSize = document.getPdfDocument().getPage(i).getPageSize();

//Rectangle pageSize = document.getPdfDocument().getPage(i).getMediaBox();

System.out.println("RECTANGLE....." + pageSize);

} catch (Exception e) {

// TODO: handle exception

System.out.println("EXCEPCION RECTANGULO..." + e);

}

}

}

}

}

问题来源:Stack Overflow

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/307134.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

. NET5正式版本月来袭,为什么说gRPC大有可为?

当前企业正在慢慢改用微服务架构来构建面向未来的应用程序&#xff0c;微服务使企业能够有效管理基础架构&#xff0c;轻松部署更新或改进&#xff0c;并帮助IT团队的创新和学习。它还可以帮助企业能够设计出可以轻松按需扩展的应用程序&#xff0c;此外&#xff0c;随着企业转…

宝塔部署node项目_宝塔面板部署 node.js 项目

安装&#xff1a; Nginx 1.16.1安装&#xff1a;MySQL 5.5.62安装&#xff1a;PM2管理器 4.2.3Nginx 配置如下&#xff1a;user www www;worker_processes auto;error_log /www/wwwlogs/nginx_error.log crit;pid /www/server/nginx/logs/nginx.pid;worker_rlimit_nofile 51200…

后端学习 - 操作系统

文章目录一 基本概念1 操作系统的特征2 操作系统的位置3 计算机的硬件组成4 中断与异常5 系统调用二 进程管理1 进程控制块 PCB&#xff08;Process Control Block&#xff09;2 进程的状态与转换3 进程间的通信4 线程5 调度算法6 死锁7 PV 操作三 内存管理1 内存的非连续分配2…

西门子触摸屏脚本程序_通过驿唐PLC501远程下载Smart Line触摸屏

通过驿唐PLC-501远程下载Smart Line触摸屏一、触摸屏设置将PLC-501和Smart 700 IE V3通过网线连到一起。触摸屏上电后&#xff0c;点击Control Panel进入控制面板界面。进入控制面板后&#xff0c;点击Ethernet设置IP地址&#xff0c;与PLC-501联网宝在同一个网段。联网宝的IP地…

.NET for Apache Spark 1.0 版本发布

.NET for Apache Spark 1.0 现已发布&#xff0c;这是一个用于 Spark 大数据的 .NET 框架&#xff0c;可以让 .NET 开发者轻松地使用 Apache Spark。该软件包由微软和 .NET Foundation 牵头&#xff0c;经过大约两年的开发。在 2019 年的 Spark AI 峰会上&#xff0c;微软曾宣…

算法 - 排序算法

文章目录1 快速排序2 堆排序3.冒泡排序4.选择排序5.插入排序1 快速排序 时间复杂度 O(nlogn)不稳定在大多数情况下都是适用的&#xff0c;尤其在数据量大的时候性能优越性更加明显 def quicksort(start, end, nums):if start > end:return flag nums[start]r_ptr endl_pt…

fillrect不填充被覆盖的区域 mfc_quot;条带覆盖quot;猜想的中二证明:quot;球面条线覆盖或点覆盖quot;积分π...

注销&#xff1a;“黎曼猜想”复平面质数单向“虚”圆柱螺旋&#xff1a;几何法证明&#xff0c;技术应用​zhuanlan.zhihu.com假设有这样一部针点打印机从球心对球面打印&#xff0c;外部有一台蓝牙打印&#xff0c;球面打印蓝牙条带打印同步&#xff0c;球面被覆盖&#xff0…

让你变厉害的7个底层思维

职场&认知洞察 丨 作者 / findyi这是findyi公众号分享的第89篇原创文章如果把你的思维比做操作系统&#xff0c;那思维模型就是一个个App。这些App会给你提供新的视角&#xff0c;快速帮你决策&#xff0c;提升你的工作效率。顶级的思维模型能提高你成功的可能性&#xff0…

后端学习 - 计算机网络

文章目录一 基本概念1 计算机网络体系结构2 时延二 应用层&#xff1a;HTTP1 请求和响应报文、常见 header2 URL & RESTful API3 HTTP 协议通信过程4 HTTP 方法5 HTTP 状态码6 短连接、长连接与流水线7 Cookie8 Session三 应用层&#xff1a;HTTPS1 加密方式2 证书认证四 应…

跟我一起学Redis之Redis配置文件啃了一遍之后,从尴尬变得有底气了(总结了一张思维图)...

前言秋高气爽的一天&#xff0c;那时候年轻帅气的我正在参照着搜索引擎写代码&#xff0c;迷之微笑般的敲着键盘(又从搜索引擎上找到代码案例啦)&#xff0c;突然领导在小隔间里传来了呼唤声&#xff0c;然后有了以下场景&#xff1a;领导&#xff1a;小Z&#xff0c;你过来一下…

1093芯片做正弦波逆变器_长途自驾游“缺电”如何选购正确车载逆变器,避开商家套路...

让车友三分钟就能看明白如何选择车用逆变器&#xff0c;节约车友时间。长途自驾游充电是一个难题&#xff0c;手机充电还好办&#xff0c;其他笔记本、电饭煲、车载冰箱或者无人机电池等充电就会用到220V电源&#xff0c;那就必须用到逆变器(逆变器就是将12V或24V直流电&#x…

Spring 相关问题

文章目录Spring1 Spring 框架中用到的设计模式2 Spring 事务、隔离级别3 单例 Bean 是线程安全的吗Spring IOC1 Spring 容器&#xff1a;BeanFactory & ApplicationContext2 依赖注入的两种方式3 Bean 的生命周期4 依赖注入的四个注解5 如何解决循环依赖Spring AOP1 基本概…

达梦php_pdo不同机器安装

现象 extensionphp74_pdo_dm.so extensionlibphp74_dm.so 普通安装达梦pdo.so后运行php报错&#xff1a;Unable to start PDO_DM module in Unknown on line 0 机器上没有达梦服务器环境。 步骤&#xff1a; 1. 拷贝达梦php_pdo到php拓展目录下&#xff0c;更新php.ini。…

ndr4108贴片晶振是多少频率_关于山羊挺身你知道多少?这些干货速来了解一下...

就是因为有些人愿意吃苦&#xff0c;有些人缺乏决心毅力&#xff0c;才会有成功和失败之分。身材不是一天不运动或一天乱吃所造成&#xff0c;瘦身健身的效果也不是一天的努力可以看出来的。如同学业、事业&#xff0c;成功都不是一条直线&#xff0c;而是一条上上下下的崎岖路…

BeetleX之Websocket服务使用

BeetleX.FastHttpApi不仅是一个Webapi服务组件&#xff0c;它同时也是一个Websocket服务组件。由于BeetleX.FastHttpApi的实现是直接支持Websocket Upgrade操作&#xff0c;所以当启动服务后是HTTP还是Websocket完全取决于请求方&#xff1b;其原理和aspcore一样&#xff0c;同…

22日常实习面试记录

最后去快手了 文章目录字节跳动 后端开发实习生-新业务 一面TCL 鸿鹄实验室 一面字节跳动 飞书后端 一面快手 Java信息安全 一面快手 Java信息安全 二面快手 Java信息安全 三面比特大陆 软件开发实习生 一面比特大陆 软件开发实习生 二面字节跳动 后端开发实习生-新业务 一面 算…

typeorm_Nestjs 热更新 + typeorm 配置

Nestjs 开发环境热更新的方案Nestjs 的热更新是基于 Webpack HMR(Hot-Module Replacement) 方案警告请注意&#xff0c;webpack不会自动将您的资产(例如graphql文件)复制到dist文件夹。同样&#xff0c;webpack与glob静态路径(例如TypeOrmModule中的实体属性)不兼容。1 使用 CL…

缓存一致性和跨服务器查询的数据异构解决方案canal

当项目的请求量上去了之后&#xff0c;通常有两种做法来应对高并发&#xff0c;第一是尽最大可能的使用cache来对抗&#xff0c;第二是尽最大可能的分库分表对抗。。。说起来容易&#xff0c;做起来并不那么乐观&#xff0c;这一篇就来浅析下。一&#xff1a;如何保证缓存一致性…

synchronized 实现原理

参考链接 文章目录一 基本使用1 三个作用2 三种用法二 同步原理1 监视器 Monitor2 synchronized 用于同步代码块3 synchronized 用于同步方法3 Mark Word4 对象头的 Mark Word 和线程的 Lock Record三 锁的优化1 自旋锁2 锁消除3 锁粗化4 偏向锁5 轻量级锁、重量级锁以及三种锁…

开头th_是什么文件_Python文件读写最详细的讲解

本文来自公众号&#xff1a;可乐的数据分析之路今天这篇文章来详细讲解一下Python中的文件读写。1、文件读写的流程1)类比windows中手动操作txt文档&#xff0c;说明python中如何操作txt文件&#xff1f;① windows中手动操作txt文件的步骤找到word文档打开word文档查看(或操作…