No.5: word转为pdf(结合网上资料)

本文介绍了解决Adobe Acrobat Professional在Word中遇到的PDF转换问题的方法,并提供了调整PDF背景色及电脑窗口背景色以保护视力的具体步骤。

(1)安装Adobe Acrobat professional专业版后就可直接选中word右键转化为pdf了,或者打开word文档后,直接点击菜单栏上的转换为pdf。

 

不过有时会出现转化错误。现“PDFMaker 文件遗失 要在修复模式下运行安装程序吗”,点击“是”,问题也没有解决。但直接在DOC
文件打印到PDF时没有问题。出现此错误的解决方法如下: 1、首先关闭Word。 2、打开 目录C:/Documents and Settings/Loginuser/Application Data/Microsoft/Templates (Loginuser是当前电脑开机登录用户名;如果不能显示Application Data目录,则到“ 我的电脑”,选择工具->文件夹选项->查看->显示所有文件和文件夹即可)。 3、备 份后删除目录内.dot文件(备份是为了以防万一,其实不备份也行)。 4、打开Word, 进入帮助->关于Microsoft Office Word ->禁用项目。 5、在弹出窗口中,选择与pdf相关的启用项后,单机启动,然后关闭。 6、关闭Word再重新启动,问题就解决了。  
http://forum.byr.edu.cn/article/OfficeTool/9397

 

则可解决此问题

  
(2)关于改变pdf背景色

 

pdf背景色一直是白色,对于喜欢阅读pdf电子书的朋友来说,时间长了,很伤眼睛的。

网上找了些资料,都不好解决。

在这篇文章中找到了解决办法http://iceflamer.blog.sohu.com/99398927.html

      主菜单->编辑->首选项->辅助工具->替换文档颜色->自定义颜色->页面背景->其它颜色->按下列设置更改:色调:85;饱和度:123;亮度:205->添加到自定义颜色->在自定义颜色选定点确定->确定。这样PDF文档不再是刺眼的白底黑字,而是非常柔和的豆沙绿色,这个色调是眼科专家配置的,长时间使用会很有效的缓解眼睛疲劳保护眼睛。

 

(3)电脑窗口背景色改变---有益于健康    

     桌面->右键->属性->外观->高级->项目选择(窗口)、颜色1(L)选择(其它)将色调改为:85。饱和度:123。亮度:205->添加到自定义颜色->在自定义颜色选定点确定->确定这样所有的文档都不再是刺眼的白底黑字,而是非常柔和的豆沙绿色。

2025-10-08 16:41:08.298 [reactor-http-nio-2] DEBUG reactor.netty.http.server.HttpServerOperations - [14b53664, L:/0:0:0:0:0:0:0:1:9002 - R:/0:0:0:0:0:0:0:1:56548] New http connection, requesting read 2025-10-08 16:41:08.298 [reactor-http-nio-3] DEBUG reactor.netty.http.server.HttpServerOperations - [5230cfa4, L:/0:0:0:0:0:0:0:1:9002 - R:/0:0:0:0:0:0:0:1:56549] New http connection, requesting read 2025-10-08 16:41:08.299 [reactor-http-nio-2] DEBUG reactor.netty.transport.TransportConfig - [14b53664, L:/0:0:0:0:0:0:0:1:9002 - R:/0:0:0:0:0:0:0:1:56548] Initialized pipeline DefaultChannelPipeline{(reactor.left.httpCodec = io.netty.handler.codec.http.HttpServerCodec), (reactor.left.httpTrafficHandler = reactor.netty.http.server.HttpTrafficHandler), (reactor.right.reactiveBridge = reactor.netty.channel.ChannelOperationsHandler)} 2025-10-08 16:41:08.299 [reactor-http-nio-3] DEBUG reactor.netty.transport.TransportConfig - [5230cfa4, L:/0:0:0:0:0:0:0:1:9002 - R:/0:0:0:0:0:0:0:1:56549] Initialized pipeline DefaultChannelPipeline{(reactor.left.httpCodec = io.netty.handler.codec.http.HttpServerCodec), (reactor.left.httpTrafficHandler = reactor.netty.http.server.HttpTrafficHandler), (reactor.right.reactiveBridge = reactor.netty.channel.ChannelOperationsHandler)} 2025-10-08 16:41:08.376 [reactor-http-nio-3] DEBUG reactor.netty.http.server.HttpServerOperations - [5230cfa4, L:/0:0:0:0:0:0:0:1:9002 - R:/0:0:0:0:0:0:0:1:56549] Increasing pending responses, now 1 2025-10-08 16:41:08.434 [reactor-http-nio-3] DEBUG reactor.netty.http.server.HttpServer - [5230cfa4-1, L:/0:0:0:0:0:0:0:1:9002 - R:/0:0:0:0:0:0:0:1:56549] Handler is being applied: org.springframework.http.server.reactive.ReactorHttpHandlerAdapter@7c08ed8 2025-10-08 16:41:08.536 [reactor-http-nio-3] DEBUG o.s.web.server.adapter.HttpWebHandlerAdapter - [5230cfa4-1] HTTP POST "/asn/pack/export" 2025-10-08 16:41:08.593 [reactor-http-nio-3] DEBUG o.s.w.r.r.m.a.RequestMappingHandlerMapping - [5230cfa4-1] Mapped to com.hvlink.controller.AsnPackController#exportLabels(AsnPackExportParam) 2025-10-08 16:41:08.625 [reactor-http-nio-3] DEBUG o.s.w.r.r.m.a.RequestBodyMethodArgumentResolver - [5230cfa4-1] Content-Type:application/json 2025-10-08 16:41:08.638 [reactor-http-nio-3] DEBUG o.s.w.r.r.m.a.RequestBodyMethodArgumentResolver - [5230cfa4-1] 0..1 [com.hvlink.entity.param.asn.AsnPackExportParam] 2025-10-08 16:41:08.713 [reactor-http-nio-3] DEBUG reactor.netty.channel.FluxReceive - [5230cfa4-1, L:/0:0:0:0:0:0:0:1:9002 - R:/0:0:0:0:0:0:0:1:56549] [terminated=false, cancelled=false, pending=0, error=null]: subscribing inbound receiver 2025-10-08 16:41:08.815 [reactor-http-nio-3] DEBUG o.s.http.codec.json.Jackson2JsonDecoder - [5230cfa4-1] Decoded [AsnPackExportParam(ids=[6, 7, 8], exportType=B)] 2025-10-08 16:41:08.905 [reactor-http-nio-3] DEBUG org.mybatis.spring.SqlSessionUtils - Creating a new SqlSession 2025-10-08 16:41:08.953 [reactor-http-nio-3] DEBUG org.mybatis.spring.SqlSessionUtils - SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@4e968606] was not registered for synchronization because synchronization is not active 2025-10-08 16:41:09.138 [reactor-http-nio-3] DEBUG o.springframework.jdbc.datasource.DataSourceUtils - Fetching JDBC Connection from DataSource 2025-10-08 16:41:09.138 [reactor-http-nio-3] DEBUG o.m.spring.transaction.SpringManagedTransaction - JDBC Connection [ConnectionID:1 ClientConnectionId: d38df3dc-2a93-45b1-9445-314ac1f77cd9] will not be managed by Spring 2025-10-08 16:41:09.158 [reactor-http-nio-3] DEBUG com.hvlink.mapper.asn.AsnPackMapper.selectByIds - ==> Preparing: SELECT l.id, l.asn_no as asnNo, l.factory_code as factoryCode, (SELECT TOP 1 factory_name FROM tm_factory WHERE factory_code = l.factory_code) as factoryName, l.warehouse_code as warehouseCode, (SELECT TOP 1 warehouse_name FROM tm_warehouse WHERE warehouse_code = l.warehouse_code) as warehouseName, ad.order_no as orderNo, l.part_code as partCode, l.part_desc as partDesc, l.production_batch as productionBatch, l.case_code as caseCode, l.pack_quantity as packQuantity, l.quantity as quantity, l.supplier_code as supplierCode, (SELECT TOP 1 supplier_name FROM tm_supplier WHERE supplier_code = l.supplier_code) as supplierName, l.unique_code as uniqueCode, l.remark as remark FROM tb_asn_pack l INNER JOIN tb_asn_detail ad ON l.asn_no = ad.asn_no AND l.part_code = ad.part_code AND l.factory_code = ad.factory_code AND l.warehouse_code = ad.warehouse_code AND ad.is_deleted = 0 WHERE l.is_deleted = 0 AND l.id IN ( ? , ? , ? ) 2025-10-08 16:41:09.335 [reactor-http-nio-3] DEBUG com.hvlink.mapper.asn.AsnPackMapper.selectByIds - ==> Parameters: 6(Integer), 7(Integer), 8(Integer) 2025-10-08 16:41:09.512 [reactor-http-nio-3] DEBUG com.hvlink.mapper.asn.AsnPackMapper.selectByIds - <== Total: 3 2025-10-08 16:41:09.515 [reactor-http-nio-3] DEBUG org.mybatis.spring.SqlSessionUtils - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@4e968606] 2025-10-08 16:41:10.098 [reactor-http-nio-3] ERROR com.hvlink.service.impl.AsnPackServiceImpl - 标签导出失败 java.io.IOException: C:/Windows/Fonts/sim sun.ttc not found as file or resource. at com.itextpdf.text.io.RandomAccessSourceFactory.createByReadingToMemory(RandomAccessSourceFactory.java:262) at com.itextpdf.text.io.RandomAccessSourceFactory.createBestSource(RandomAccessSourceFactory.java:172) at com.itextpdf.text.pdf.RandomAccessFileOrArray.<init>(RandomAccessFileOrArray.java:150) at com.itextpdf.text.pdf.TrueTypeFont.process(TrueTypeFont.java:799) at com.itextpdf.text.pdf.TrueTypeFontUnicode.process(TrueTypeFontUnicode.java:121) at com.itextpdf.text.pdf.TrueTypeFontUnicode.<init>(TrueTypeFontUnicode.java:98) at com.itextpdf.text.pdf.BaseFont.createFont(BaseFont.java:705) at com.itextpdf.text.pdf.BaseFont.createFont(BaseFont.java:625) at com.itextpdf.text.pdf.BaseFont.createFont(BaseFont.java:460) at com.hvlink.service.impl.AsnPackServiceImpl.generatePdfBytes(AsnPackServiceImpl.java:174) at com.hvlink.service.impl.AsnPackServiceImpl.lambda$exportLabels$1(AsnPackServiceImpl.java:105) at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:45) at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64) at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:157) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539) at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839) at reactor.core.publisher.MonoFlatMap$FlatMapInner.onNext(MonoFlatMap.java:249) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539) at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:210) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:210) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.complete(MonoIgnoreThen.java:292) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onNext(MonoIgnoreThen.java:187) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539) at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839) at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:151) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539) at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839) at reactor.core.publisher.MonoZip$ZipCoordinator.signal(MonoZip.java:258) at reactor.core.publisher.MonoZip$ZipInner.onNext(MonoZip.java:347) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539) at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539) at reactor.core.publisher.FluxDefaultIfEmpty$DefaultIfEmptySubscriber.onNext(FluxDefaultIfEmpty.java:101) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:210) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539) at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:74) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539) at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539) at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839) at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:151) at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539) at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onNext(FluxMapFuseable.java:299) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539) at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.onNext(FluxFilterFuseable.java:337) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539) at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839) at reactor.core.publisher.MonoCollect$CollectSubscriber.onComplete(MonoCollect.java:160) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onComplete(FluxOnAssembly.java:549) at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onComplete(FluxMapFuseable.java:152) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onComplete(FluxOnAssembly.java:549) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onComplete(FluxPeekFuseable.java:277) at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onComplete(FluxOnAssembly.java:549) at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144) at reactor.netty.channel.FluxReceive.onInboundComplete(FluxReceive.java:415) at reactor.netty.channel.ChannelOperations.onInboundComplete(ChannelOperations.java:439) at reactor.netty.http.server.HttpServerOperations.onInboundNext(HttpServerOperations.java:656) at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:114) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at reactor.netty.http.server.HttpTrafficHandler.channelRead(HttpTrafficHandler.java:276) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436) at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346) at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318) at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166) at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788) at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.lang.Thread.run(Thread.java:750) 2025-10-08 16:41:10.131 [reactor-http-nio-3] ERROR com.hvlink.controller.AsnPackController - 标签导出失败 java.lang.RuntimeException: 标签导出失败: C:/Windows/Fonts/sim sun.ttc not found as file or resource. at com.hvlink.service.impl.AsnPackServiceImpl.lambda$exportLabels$1(AsnPackServiceImpl.java:123) Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: Assembly trace from producer [reactor.core.publisher.MonoError] : reactor.core.publisher.Mono.error(Mono.java:315) com.hvlink.service.impl.AsnPackServiceImpl.lambda$exportLabels$1(AsnPackServiceImpl.java:123) Error has been observed at the following site(s): *__Mono.error ⇢ at com.hvlink.service.impl.AsnPackServiceImpl.lambda$exportLabels$1(AsnPackServiceImpl.java:123) *__Mono.defer ⇢ at com.hvlink.service.impl.AsnPackServiceImpl.exportLabels(AsnPackServiceImpl.java:83) Original Stack Trace: at com.hvlink.service.impl.AsnPackServiceImpl.lambda$exportLabels$1(AsnPackServiceImpl.java:123) at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:45) at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64) at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:157) at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839) at reactor.core.publisher.MonoFlatMap$FlatMapInner.onNext(MonoFlatMap.java:249) at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:210) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:210) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.complete(MonoIgnoreThen.java:292) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onNext(MonoIgnoreThen.java:187) at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839) at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:151) at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839) at reactor.core.publisher.MonoZip$ZipCoordinator.signal(MonoZip.java:258) at reactor.core.publisher.MonoZip$ZipInner.onNext(MonoZip.java:347) at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180) at reactor.core.publisher.FluxDefaultIfEmpty$DefaultIfEmptySubscriber.onNext(FluxDefaultIfEmpty.java:101) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:210) at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:74) at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79) at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839) at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:151) at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107) at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onNext(FluxMapFuseable.java:299) at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.onNext(FluxFilterFuseable.java:337) at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839) at reactor.core.publisher.MonoCollect$CollectSubscriber.onComplete(MonoCollect.java:160) at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onComplete(FluxMapFuseable.java:152) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onComplete(FluxPeekFuseable.java:277) at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144) at reactor.netty.channel.FluxReceive.onInboundComplete(FluxReceive.java:415) at reactor.netty.channel.ChannelOperations.onInboundComplete(ChannelOperations.java:439) at reactor.netty.http.server.HttpServerOperations.onInboundNext(HttpServerOperations.java:656) at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:114) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at reactor.netty.http.server.HttpTrafficHandler.channelRead(HttpTrafficHandler.java:276) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436) at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346) at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318) at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166) at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788) at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.lang.Thread.run(Thread.java:750) 2025-10-08 16:41:10.134 [reactor-http-nio-3] DEBUG o.s.w.r.r.m.a.RequestMappingHandlerAdapter - [5230cfa4-1] Using @ExceptionHandler com.hvlink.exceptions.ExceptionHandle#handleException(Exception) 2025-10-08 16:41:10.137 [reactor-http-nio-3] ERROR com.hvlink.exceptions.ExceptionHandle - ===服务器内部错误== java.lang.RuntimeException: 标签导出失败: C:/Windows/Fonts/sim sun.ttc not found as file or resource. at com.hvlink.service.impl.AsnPackServiceImpl.lambda$exportLabels$1(AsnPackServiceImpl.java:123) Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: Assembly trace from producer [reactor.core.publisher.MonoError] : reactor.core.publisher.Mono.error(Mono.java:315) com.hvlink.service.impl.AsnPackServiceImpl.lambda$exportLabels$1(AsnPackServiceImpl.java:123) Error has been observed at the following site(s): *__________Mono.error ⇢ at com.hvlink.service.impl.AsnPackServiceImpl.lambda$exportLabels$1(AsnPackServiceImpl.java:123) *__________Mono.defer ⇢ at com.hvlink.service.impl.AsnPackServiceImpl.exportLabels(AsnPackServiceImpl.java:83) |_ Mono.onErrorResume ⇢ at com.hvlink.controller.AsnPackController.exportLabels(AsnPackController.java:61) |_ Mono.flatMap ⇢ at org.springframework.web.reactive.result.method.annotation.ResponseEntityResultHandler.handleResult(ResponseEntityResultHandler.java:132) |_ checkpoint ⇢ Handler com.hvlink.controller.AsnPackController#exportLabels(AsnPackExportParam) [DispatcherHandler] *__________Mono.error ⇢ at com.hvlink.controller.AsnPackController.lambda$exportLabels$0(AsnPackController.java:63) Original Stack Trace: at com.hvlink.service.impl.AsnPackServiceImpl.lambda$exportLabels$1(AsnPackServiceImpl.java:123) at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:45) at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64) at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:157) at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839) at reactor.core.publisher.MonoFlatMap$FlatMapInner.onNext(MonoFlatMap.java:249) at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:210) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:210) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.complete(MonoIgnoreThen.java:292) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onNext(MonoIgnoreThen.java:187) at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839) at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:151) at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839) at reactor.core.publisher.MonoZip$ZipCoordinator.signal(MonoZip.java:258) at reactor.core.publisher.MonoZip$ZipInner.onNext(MonoZip.java:347) at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180) at reactor.core.publisher.FluxDefaultIfEmpty$DefaultIfEmptySubscriber.onNext(FluxDefaultIfEmpty.java:101) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:210) at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:74) at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79) at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839) at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:151) at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107) at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onNext(FluxMapFuseable.java:299) at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.onNext(FluxFilterFuseable.java:337) at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839) at reactor.core.publisher.MonoCollect$CollectSubscriber.onComplete(MonoCollect.java:160) at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onComplete(FluxMapFuseable.java:152) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onComplete(FluxPeekFuseable.java:277) at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144) at reactor.netty.channel.FluxReceive.onInboundComplete(FluxReceive.java:415) at reactor.netty.channel.ChannelOperations.onInboundComplete(ChannelOperations.java:439) at reactor.netty.http.server.HttpServerOperations.onInboundNext(HttpServerOperations.java:656) at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:114) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at reactor.netty.http.server.HttpTrafficHandler.channelRead(HttpTrafficHandler.java:276) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436) at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346) at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318) at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166) at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788) at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.lang.Thread.run(Thread.java:750) 2025-10-08 16:41:10.147 [reactor-http-nio-3] DEBUG o.s.w.r.r.m.annotation.ResponseBodyResultHandler - [5230cfa4-1] Using 'application/json' given [*/*] and supported [application/json, application/*+json, application/x-ndjson, text/event-stream] 2025-10-08 16:41:10.147 [reactor-http-nio-3] DEBUG o.s.w.r.r.m.annotation.ResponseBodyResultHandler - [5230cfa4-1] 0..1 [com.hvlink.common.Result<?>] 2025-10-08 16:41:10.218 [reactor-http-nio-3] DEBUG o.s.http.codec.json.Jackson2JsonEncoder - [5230cfa4-1] Encoding [Result(status=500, msg=发现未知问题,请联系管理员!, data=null, timestamp=1759912870145)] 2025-10-08 16:41:10.326 [reactor-http-nio-3] DEBUG reactor.netty.http.server.HttpServerOperations - [5230cfa4-1, L:/0:0:0:0:0:0:0:1:9002 - R:/0:0:0:0:0:0:0:1:56549] Decreasing pending responses, now 0 2025-10-08 16:41:10.326 [reactor-http-nio-3] DEBUG reactor.netty.http.server.HttpServerOperations - [5230cfa4-1, L:/0:0:0:0:0:0:0:1:9002 - R:/0:0:0:0:0:0:0:1:56549] Last HTTP packet was sent, terminating the channel 2025-10-08 16:41:10.327 [reactor-http-nio-3] DEBUG reactor.netty.channel.ChannelOperations - [5230cfa4-1, L:/0:0:0:0:0:0:0:1:9002 - R:/0:0:0:0:0:0:0:1:56549] [HttpServer] Channel inbound receiver cancelled (operation cancelled). 2025-10-08 16:41:10.373 [reactor-http-nio-3] DEBUG o.s.web.server.adapter.HttpWebHandlerAdapter - [5230cfa4-1] Completed 500 INTERNAL_SERVER_ERROR 2025-10-08 16:41:10.392 [reactor-http-nio-3] DEBUG reactor.netty.http.server.HttpServerOperations - [5230cfa4-1, L:/0:0:0:0:0:0:0:1:9002 - R:/0:0:0:0:0:0:0:1:56549] Last HTTP response frame package com.hvlink.service.impl; import com.alibaba.nacos.common.utils.StringUtils; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.hvlink.entity.dto.asn.AsnPackDTO; import com.hvlink.entity.param.asn.AsnPackExportParam; import com.hvlink.entity.param.asn.AsnPackLabelParam; import com.hvlink.entity.po.asn.AsnPackPO; import com.hvlink.entity.vo.asn.AsnPackLabelVO; import com.hvlink.mapper.asn.AsnPackMapper; import com.hvlink.pagination.PageResult; import com.hvlink.service.IAsnPackService; import com.hvlink.utils.BeanCopyUtils; import com.hvlink.utils.QRCodeUtils; import com.itextpdf.text.Image; import com.itextpdf.text.Rectangle; import com.itextpdf.text.pdf.*; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.core.io.ByteArrayResource; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import reactor.core.publisher.Mono; import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; /** * ASN包装信息(AsnPack)表服务实现类 * * @author sunzhuang * @since 2025-09-23 16:39:02 */ @Slf4j @RequiredArgsConstructor @Service("asnPackService") public class AsnPackServiceImpl extends ServiceImpl<AsnPackMapper, AsnPackPO> implements IAsnPackService { private final AsnPackMapper asnPackMapper; /** * 查询标签信息 * * @param asnPackLabelParam 请求参数 * @return 查询结果 */ @Override public PageResult<AsnPackLabelVO> queryPage(AsnPackLabelParam asnPackLabelParam) { // 查询标签数据 Page<AsnPackDTO> page = new Page<>(asnPackLabelParam.getPageIndex(), asnPackLabelParam.getPageSize()); Page<AsnPackDTO> dtoPage = asnPackMapper.queryLabelPage(page, asnPackLabelParam); // 换 DTO 到 VO List<AsnPackLabelVO> voList = Collections.emptyList(); if (!CollectionUtils.isEmpty(dtoPage.getRecords())) { voList = dtoPage.getRecords().stream() .map(dto -> BeanCopyUtils.copyBean(dto, AsnPackLabelVO.class)) .collect(Collectors.toList()); } // 构建分页结果 PageResult<AsnPackLabelVO> result = new PageResult<>(); result.setRecords(voList); result.setTotal(dtoPage.getTotal()); result.setPageIndex(asnPackLabelParam.getPageIndex()); result.setPageSize(asnPackLabelParam.getPageSize()); return result; } @Override public Mono<ResponseEntity<Resource>> exportLabels(AsnPackExportParam exportParam) { return Mono.defer(() -> { try { // 参数验证 if (exportParam == null || exportParam.getIds() == null || exportParam.getIds().isEmpty()) { return Mono.error(new IllegalArgumentException("导出参数或ID列表不能为空")); } // 查询导出数据 List<AsnPackDTO> exportData = asnPackMapper.selectByIds(exportParam.getIds()); if (exportData.isEmpty()) { return Mono.error(new RuntimeException("未找到导出数据")); } // 验证导出类型 if (!isValidExportType(exportParam.getExportType())) { return Mono.error(new IllegalArgumentException("不支持的导出类型: " + exportParam.getExportType())); } // 根据导出类型选择模板 String templatePath = getTemplatePath(exportParam.getExportType()); // 生成PDF节数组 byte[] pdfBytes = generatePdfBytes(exportData, exportParam.getExportType(), templatePath); // 创建资源 Resource resource = new ByteArrayResource(pdfBytes); // 设置响应头 String fileName = buildFileName(exportParam.getExportType()); ResponseEntity<Resource> responseEntity = ResponseEntity.ok() .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + fileName) .contentType(MediaType.APPLICATION_PDF) .contentLength(pdfBytes.length) .body(resource); return Mono.just(responseEntity); } catch (Exception e) { log.error("标签导出失败", e); return Mono.error(new RuntimeException("标签导出失败: " + e.getMessage())); } }); } private String getTemplatePath(String exportType) { switch (exportType.toUpperCase()) { case "P": return "static/templates/托标签模板.pdf"; // 托标签模板 case "C": return "static/templates/箱标签模板.pdf"; // 箱标签模板 case "B": return "static/templates/包标签模板.pdf"; // 包标签模板 default: throw new IllegalArgumentException("不支持的导出类型: " + exportType); } } private boolean isValidExportType(String exportType) { if (exportType == null) return false; String type = exportType.toUpperCase(); return type.equals("P") || type.equals("C") || type.equals("B"); } private String buildFileName(String exportType) { String typeName = ""; switch (exportType.toUpperCase()) { case "P": typeName = "托标签"; break; case "C": typeName = "箱标签"; break; case "B": typeName = "包标签"; break; default: typeName = "标签"; } return typeName + "_" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".pdf"; } private byte[] generatePdfBytes(List<AsnPackDTO> data, String exportType, String templatePath) throws Exception { ClassPathResource templateResource = new ClassPathResource(templatePath); if (!templateResource.exists()) { throw new RuntimeException("模板文件不存在: " + templatePath); } try (InputStream templateStream = templateResource.getInputStream(); ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) { PdfReader reader = new PdfReader(templateStream); PdfStamper stamper = new PdfStamper(reader, outputStream); AcroFields form = stamper.getAcroFields(); // 添加中文体支持 BaseFont simSunFont = BaseFont.createFont("C:/Windows/Fonts/sim sun.ttc,0", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); form.addSubstitutionFont(simSunFont); // 填充第一个数据项 AsnPackDTO item = data.get(0); fillFormFields(form, item, exportType); // 添加二维码到指定位置 addQRCode(stamper, form, item, exportType); // ✅ 关键:压平表单前确保所有操作已完成 stamper.setFormFlattening(true); // 将表单转为静态文本 stamper.close(); // 关闭 stamper 会自动写入修改后的内容 reader.close(); return outputStream.toByteArray(); } } private void fillFormFields(com.itextpdf.text.pdf.AcroFields form, AsnPackDTO item, String exportType) throws Exception { Map<String, String> fieldValues = buildFieldValues(item, exportType); log.info("要填充的数据: {}", fieldValues); // 填充表单段 for (Map.Entry<String, String> entry : fieldValues.entrySet()) { String fieldName = entry.getKey(); String fieldValue = entry.getValue(); if (form.getFields().containsKey(fieldName)) { if (StringUtils.hasText(fieldValue)) { try { form.setField(fieldName, fieldValue); log.info("成功填充: {} = {}", fieldName, fieldValue); } catch (Exception e) { log.error("填充段失败: {}, 值: {}", fieldName, fieldValue, e); } } else { log.warn("段值为空: {}", fieldName); } } else { log.warn("未找到表单: {}", fieldName); } } } private Map<String, String> buildFieldValues(AsnPackDTO item, String exportType) { Map<String, String> values = new HashMap<>(); // 公共段 values.put("part_desc", item.getPartDesc()); values.put("part_code", item.getPartCode()); values.put("supplier_name", item.getSupplierName()); values.put("supplier_code", item.getSupplierCode()); values.put("order_no", item.getAsnNo()); values.put("production_batch", item.getProductionBatch()); values.put("case_code", generateCaseCode(item, exportType)); values.put("remark", item.getRemark()); // 数量相关段 switch (exportType.toUpperCase()) { case "P": values.put("quantity", formatQuantity(item.getQuantity())); values.put("pack_quantity", formatQuantity(item.getPackQuantity())); values.put("unique_code", generateUniqueCode("P", item.getSupplierCode())); values.put("master_label", "MASTER LABEL " + item.getWarehouseCode()); break; case "C": values.put("quantity", formatQuantity(item.getQuantity())); values.put("pack_quantity", formatQuantity(item.getPackQuantity())); values.put("unique_code", generateUniqueCode("C", item.getSupplierCode())); break; case "B": values.put("quantity", formatQuantity(item.getQuantity())); values.put("pack_quantity", formatQuantity(item.getPackQuantity())); values.put("unique_code", generateUniqueCode("B", item.getSupplierCode())); break; } return values; } private String generateCaseCode(AsnPackDTO item, String exportType) { switch (exportType.toUpperCase()) { case "P": return "1/1"; // X/Y格式 case "C": return "1/5-1"; // X/Y-Z格式 case "B": return "1/10-C-1"; // X/Y-C-Z格式 default: return item.getCaseCode(); } } private String generateUniqueCode(String prefix, String supplierCode) { SimpleDateFormat sdf = new SimpleDateFormat("yyMMdd"); String dateStr = sdf.format(new Date()); String sequence = String.format("%06d", System.currentTimeMillis() % 1000000); return prefix + supplierCode + dateStr + sequence; } private String formatQuantity(Double quantity) { return quantity != null ? String.valueOf(quantity) : "0"; } private void addQRCode(PdfStamper stamper, AcroFields form, AsnPackDTO item, String exportType) throws Exception { try { String uniqueCode = generateUniqueCode( exportType.equals("P") ? "P" : exportType.equals("C") ? "C" : "B", item.getSupplierCode() ); // 生成二维码 ByteArrayOutputStream qrCodeStream = QRCodeUtils.generateQRCode(uniqueCode, 100, 100); Image qrCodeImage = Image.getInstance(qrCodeStream.toByteArray()); // 获取段位置 List<AcroFields.FieldPosition> fieldPositions = form.getFieldPositions("QRcode"); if (fieldPositions == null || fieldPositions.isEmpty()) { log.warn("未找到 QRcode 段的位置信息"); return; } AcroFields.FieldPosition position = fieldPositions.get(0); int pageNo = position.page; Rectangle rect = position.position; PdfContentByte canvas = stamper.getOverContent(pageNo); // 使用上层绘制,避免干扰底层 qrCodeImage.setAbsolutePosition(rect.getLeft(), rect.getBottom()); qrCodeImage.scaleToFit(rect.getWidth(), rect.getHeight()); canvas.addImage(qrCodeImage); } catch (Exception e) { log.error("添加二维码失败", e); throw e; // 显式抛出便于调试 } } } 按照你的修改,报错了
10-09
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值