首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >PHPRtfLite - RTF文件作为原始文件打开。

PHPRtfLite - RTF文件作为原始文件打开。
EN

Stack Overflow用户
提问于 2014-08-07 00:21:37
回答 2查看 1.1K关注 0票数 1

我使用PHPRtfLite库(http://sigma-scripts.de/phprtflite/docs/index.html)来生成一个使用PHPRtfLite的RTF文件。

到目前为止,我已经做了一个简单的"Hello“功能。

代码语言:javascript
运行
AI代码解释
复制
Yii::import('ext.phprtf.PHPRtfLite'); 
Yii::registerAutoloader(array('PHPRtfLite','registerAutoloader'), true); 
$rtf = new PHPRtfLite();

$sect = $rtf->addSection();
$sect->writeText('Hello world!', new PHPRtfLite_Font(), new PHPRtfLite_ParFormat());

//save rtf document
$rtf->sendRtf('takis.rtf');

文件是成功创建的,但是当我打开它( wordpad或ms word)时,我看不到文件的实际内容,而是RTF的原始代码:

代码语言:javascript
运行
AI代码解释
复制
{\rtf\ansi\deff0\fs20
{\fonttbl{\f0 Times New Roman;}}
{\colortbl;\red0\green0\blue0;}
{\info
}
\paperw11907 \paperh16840 \deftab1298 \margl1701 \margr1701 \margt567 \margb1134 \pgnstart1\ftnnar \aftnnrlc \ftnstart1 \aftnstart1 
\pard \ql {\fs20 Hello world!}
}

你知道如何解决这个问题吗?先谢谢你。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-07 01:02:04

回答我自己的问题,万一将来有人有同样的问题.

这似乎是sendRTF函数的一个问题。现在,我在本地保存创建的文件:

代码语言:javascript
运行
AI代码解释
复制
$rtf->save('takis.rtf');

然后生成一个链接,供用户下载该文件。这个很好用。

票数 2
EN

Stack Overflow用户

发布于 2016-01-19 11:56:38

我自己也经历过同样的事情。我不确定,是否有同样的原因,但在我的例子中,在<?php标记之前,PHP的开头有额外的换行符。当我使用sendRtf从浏览器下载文件时,换行符也出现在RTF文件中,使其无效,结果显示了原始的rtf代码。当使用保存时,这些额外的字符不会到达文件。

所以,在类似的情况下,有一件事要检查--在记事本中打开Rtf文件并检查文件的开头。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25177528

复制
相关文章
注册广播接收器registerReceiver
从registerReceiver(BroadcastReceiver receiver,IntentFilter filter)出发
全栈程序员站长
2022/11/17
1.1K0
Android基础总结(4)——广播接收器
  在Android中的每个应用程序可以对自己感兴趣的广播进行注册,这样该程序就只会接收自己所关心的广播内容,这些广播可能来自于系统的,也可能来自于其他应用程序的。Android提供了一整套完整的API,允许应用程序自由地发送和接收广播。发送广播就是借助之前了解过的Intent,接收广播则需要用到广播接收器(Broadcast Receiver)。. 1、广播的类型 标准广播:Normal broadcast,是一种完全异步执行的广播,在广播发出之后,所有的广播接收器几乎都会在同一时刻接收到这条广播消息,因
mukekeheart
2018/02/27
1.1K0
android广播注册方式_安卓广播接收器
前面分析了Android系统的广播机制,从本质来说,它是一种消息订阅/发布机制。因此,使用这种消息驱动模型的第一步便是订阅消息;而对Android应用程序来说,订阅消息其实就是注册广播接收器。
全栈程序员站长
2022/10/01
1.1K0
【Groovy】Groovy 扩展方法 ( 实例扩展方法配置 | 扩展方法示例 | 编译实例扩展类 | 打包实例扩展类字节码到 jar 包中 | 测试使用 Thread 实例扩展方法 )
为 Thread 扩展 hello 方法 , 在该方法中传入 Closure 参数 , 在该方法中 , 执行传入的闭包参数 ;
韩曙亮
2023/03/30
8490
【Groovy】Groovy 扩展方法 ( 实例扩展方法配置 | 扩展方法示例 | 编译实例扩展类 | 打包实例扩展类字节码到 jar 包中 | 测试使用 Thread 实例扩展方法 )
Carson带你学Android:手把手教你学会广播组件-BroadcastReceiver
当此 App首次启动时,系统会自动实例化mBroadcastReceiver类,并注册到系统中。
Carson.Ho
2022/03/24
6680
Carson带你学Android:手把手教你学会广播组件-BroadcastReceiver
安卓开发_深入理解广播机制
一、Broadcast(广播) 在Android中,有一些操作完成以后,会发送广播,比如说发出一条短信,或打出一个电话,如果某个程序接收了这个广播,就会做相应的处理。这个广播跟我们传统意义中的电台广播有些相似之处。之所以叫做广播,就是因为它只负责“说”而不管你“听不听”,也就是不管你接收方如何处理。另外,广播可以被不只一个应用程序所接收,当然也可能不被任何应用程序所接收。 (百度百科) 二、BroadcastReceiver(广播接收器) 1、自定义BroadcastReceiver 自定义广播接收器继承基
听着music睡
2018/05/18
1.5K0
Android四大组件:BroadcastReceiver史上最全面解析
BroadcastReceiver,本质上是一个全局的监听器,属于Android四大组件之一。
Carson.Ho
2019/02/22
1.9K0
Carson带你学Android:BroadcastRecevicer广播类型汇总
BroadcastReceiver(广播接收器),属于 Android 四大组件之一,在 Android 开发中,BroadcastReceiver 的应用场景非常多。今天,我将详细讲解关于BroadcastReceiver的所有广播类型,主要分为5类:
Carson.Ho
2022/03/24
5020
Carson带你学Android:BroadcastRecevicer广播类型汇总
类的实例化顺序
讲讲类的实例化顺序,比如父类静态数据,构造函数,字段,子类静态数据,构造函数,字段,当 new 的时候,他们的执行顺序。 先说结论,顺序为: 父类静态变量、 父类静态代码块、 子类静态变量、 子类静态代码块、 父类非静态变量(父类实例成员变量)、 父类构造函数、 子类非静态变量(子类实例成员变量)、 子类构造函数。 代码举例说明: A.java public class A { int a1 = 8; static int a3 = getA3(); int a2 = getA
Li_XiaoJin
2022/06/10
1.3K0
Android 四大组件之BroadcastReceiver
Hi,大家好,又双见面啦,上一期我们讲了如何使用Activity,肯定有不少小伙伴已经创建了属于自己的FirstActivity,那么这一期我们主要为大家介绍第二个重要组件-BroadcastReceiver(广播接收器)。作为Android的四大组件之二,其应用场景非常多。下面,就详细介绍下 BroadcastReceiver 的相关知识。
下码看花
2019/09/02
1.5K0
Android 四大组件之BroadcastReceiver
基类、扩展类──页面重构中的模块化设计(五)
基类 和 扩展类 是这个系列的主要内容,上一篇《 模块化的核心思想──页面重构中的模块化设计(四) 》中只是简单提了一下,我们再深入的来了解下它们。
GhostZhang
2022/08/21
7380
基类、扩展类──页面重构中的模块化设计(五)
WPF如何在子线程或其他类中操控控件
一开始使用WPF界面的时候,会有这样的需求就是在后台更新控件,以完成列表更新,计时器,进度条等功能,但WPF这边架构限制,决定子线程是不安全的,如果创建子线程直接操作控件就会出错。
zls365
2021/03/16
2K0
Python科学计算扩展库numpy中的广播运算
首先解答上一个文章Python扩展库numpy中的布尔运算中的问题,该题答案为[111, 33, 2],题中表达式的作用是按列表中元素转换为字符串后的长度降序排序。 ---------------------分割线------------------ numpy中的广播运算使得两个不同形状(但也有基本要求,不是任何维度都可以广播)的数组进行运算,较小维度的数组会被广播到另一个数组的相应维度上去,可以简化代码的编写(例如不需要编写循环)。 >>> import numpy as np # 列向量 >>> a
Python小屋屋主
2018/04/16
1.2K0
Tip | Android的Service相关知识提炼
onCreate():服务第一次被创建时调用 onStartComand():服务启动时调用 onBind():服务被绑定时调用 onUnBind():服务被解绑时调用 onDestroy():服务停止时调用
凌川江雪
2019/07/03
6580
Tip | Android的Service相关知识提炼
Android基础_1 四大基本组件介绍与生命周期
    Android四大基本组件分别是Activity,Service(服务),Content Provider(内容提供者),BroadcastReceiver(广播接收器)。
shirayner
2018/08/10
1.6K0
Android基础_1    四大基本组件介绍与生命周期
Android四大组件详解
Android四大组件详解 Activity(活动) 概念 Service(服务) 概念 定义与作用 Content Provider(内容提供器) 介绍 作用 系统的Content Provider 自定义Content Provider Broadcast Receiver广播 概述 广播的作用 广播接收者的创建 广播接收者的类型 注册广播的两种方式 静态注册和动态注册的区别 有序广播和无序广播的区别 有序广播接收者们的优先级 有序广播的拦截和篡改 简单介绍:Android四大核心组件指的是 Acti
是阿超
2022/11/23
5.9K0
给系统类扩展属性(枚举)或方法
在这里我以UIButton为例子给大家展示一种实现方法,主要依靠runtime实现。废话不说上码... 1.扩展一般属性NSString @interface UIButton (CJButtonType) @property (nonatomic, strong) NSString *typeString; @end /////////////////////////////////////////////// #import "UIButton+CJButtonType.h" #import <objc
developerbfl
2018/06/05
9920
Android开发笔记(八十)运行状态检查
大家都知道刻舟求剑的寓言故事,说的是事物是发展变化着的,如果拘泥于原来的情况,那随着情况的改变,就不会得到预期的结果。同样,影响app运行的因素,并不只是外部环境(如硬件、系统、权限等等),还包括app自身的运行信息。如果app的运行状态发生了变化,那么原先处理正确的逻辑也可能处理失败,所以在特定的情况下,我们得对app的运行情况进行检查。
aqi00
2019/01/18
6270
动态注册广播接收器_ip广播系统软件v2.3说明书
从registerReceiver(BroadcastReceiver receiver,IntentFilter filter)出发
全栈程序员站长
2022/10/01
7200
[C#] 在类里实例化自身的应用实例<上位机通信>
比如上位机需要做Modbus的通信.B/S架构,事先不知道有多少个链接.有需要是时候才实例化并保存通信连接...
科控物联
2022/03/29
3K0
[C#] 在类里实例化自身的应用实例<上位机通信>

相似问题

实例化内部广播接收器类

12

广播接收器不启动活动

11

广播接收器在活动中不工作

10

实例化服务类和广播类的异常

10

服务或广播接收器

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文