有没有遇到过在没有安装 Microsoft Office 的设备上打开 Word、Excel 或 PowerPoint 文件的情况?这种情况比我们想象的要常见,尤其是在不同电脑之间切换、使用移动设备或在共享机器上工作时。
这时,Office Viewer 就派上用场了。
这个轻量级的在线工具让你可以直接在浏览器中打开 .docx、.xlsx、.pptx 以及其他常见文档格式。无需安装软件、创建账户或将文件上传到服务器——一切都在本地安全地进行。
它支持的格式包括:
- Word 文档
- Excel 表格
- PowerPoint 演示文稿
- CSV 和 PDF 文件
- ZIP 和 RAR 压缩包
无论你是在手机上查看演示文稿,还是在借来的笔记本电脑上检查表格,Office Viewer 都能让你快速访问,而无需麻烦。
在这里试试吧: https://officeviewer.org/
返回首页
最新
标题:我一直在租用MI300X,因为它们比H100便宜,而且我的使用体验比我在网上看到的评价要顺利得多。ROCm 6.4现在开箱即用,表现不错。如果能节省20%的费用,我愿意多花30分钟来设置我的GPU。<p>我很想听听其他在AI工作负载上进行实验的人的类似经验。
# 在 HarmonyOS Next 中开发简单的通用头部导航栏
在日常页面开发中,大多数页面需要一个头部来显示导航控件和页面信息。为每个页面重复编写这段代码效率低下,并且会导致实现不一致。本指南演示如何创建一个可重用的头部组件。
## 第一步:创建 NavBar 组件
创建一个新的 ArkTS 文件,并使用 `@Component` 装饰器定义自定义组件:
```typescript
import Utils from "../common/utils/Utils";
@Component
export struct NavBar {
// 组件实现将在这里进行
}
```
## 第二步:实现组件属性和 UI
添加属性并构建头部 UI:
```typescript
import Utils from "../common/utils/Utils";
@Component
export struct NavBar {
@Prop title: string = ''; // 头部标题文本
@Prop backImg: string = ''; // 自定义返回按钮图标路径
@Prop bgColor: string = '#FFFFFF'; // 头部背景颜色
@Prop customBack?: () => void; // 自定义返回按钮处理函数
@Prop mode: string = 'center'; // 标题对齐方式:'center' 或 'left'
build() {
Row() {
// 返回按钮部分
Row() {
Image(this.backImg || Utils.getImgPath('home/adult_page_back_black.png'))
.width(Utils.getVp(48))
.height(Utils.getVp(48))
.objectFit(ImageFit.Cover)
}
.onClick(() => {
// 如果提供了自定义处理函数,则使用它,否则使用默认的返回导航
this.customBack ? this.customBack() : router.back();
})
// 标题部分
Row() {
Text(this.title)
.fontColor('#191B27')
.fontSize(Utils.getVp(33))
.fontWeight(FontWeight.Bold)
.textAlign(this.mode === 'center' ? TextAlign.Center : TextAlign.Start)
.width('100%')
}
.margin({ left: this.mode === 'center' ? 0 : Utils.getVp(20) })
.flexShrink(1) // 允许收缩以适应内容
.height('100%')
}
.width('100%')
.padding({ left: Utils.getVp(32), right: Utils.getVp(32) })
.height(Utils.getVp(88))
.backgroundColor(this.bgColor)
}
}
```
## 第三步:在父视图中使用组件
### 居中对齐标题示例:
```typescript
import { NavBar } from './component/NavBar';
@Entry
@Component
struct ParentPage {
build() {
Column() {
NavBar({ title: '页面标题', mode: 'center' })
// 页面内容在这里
}
.width('100%')
.height('100%')
}
}
```
### 左对齐标题示例:
```typescript
import { NavBar } from './component/NavBar';
@Entry
@Component
struct ParentPage {
build() {
Column() {
NavBar({ title: '页面标题', mode: 'left' })
// 页面内容在这里
}
.width('100%')
.height('100%')
}
}
```
## 自定义选项
1. *自定义图标*:传入 `backImg` 属性并指定图像路径
```typescript
NavBar({
title: '设置',
backImg: Utils.getImgPath('icons/custom_back.png')
})
```
2. *自定义背景*:更改头部颜色
```typescript
NavBar({
title: '个人资料',
bgColor: '#F5F5F5'
})
```
3. *自定义返回操作*:重写默认导航
```typescript
NavBar({
title: '结账',
customBack: () => { /* 自定义逻辑 */ }
})
```
## 主要特性
- *响应式设计*:使用 `Utils.getVp()` 适应不同屏幕尺寸
- *灵活布局*:标题对齐选项(居中/左对齐)
- *可定制性*:支持自定义图标、颜色和行为
- *一致的 UI*:确保应用程序中头部外观统一
- *易于集成*:基于属性的简单配置
该实现提供了一个可重用的、可定制的头部组件,消除了代码重复,并确保在整个 HarmonyOS Next 应用程序中提供一致的导航体验。
# HarmonyOS Flutter 插件开发详细指南
## 0. 环境设置
*前提条件*: 配置 HarmonyOS Flutter 环境
*参考*: [HarmonyOS Flutter 环境设置指南](https://juejin.cn/post/7317214081261207603)
*注意*: 下载和编译引擎耗时较长。可根据请求获取预构建的引擎。
------
## 1. 获取原始插件代码
```
git clone <original_plugin_repository>
```
------
## 2. 生成 OHOS 目录
```
# 选项 1: 直接生成(可能失败)
flutter create -t plugin --platforms ohos
# 选项 2: 创建演示项目并复制
flutter create -t plugin --platforms ohos demo
cp -r demo/ohos ./
```
------
## 3. 配置本地依赖
在 `pubspec.yaml` 中添加本地依赖:
```
dependencies:
your_plugin:
path: ../path_to_plugin
```

## 4. 构建插件包
```bash
flutter build hap \
--local-engine-src-path /path/to/ohos_flutter/src \
--local-engine ohos_release_arm64
```
*成功输出*:
```markdown
√ Built build/hap/release/entry-release.hap (XX.XMB)
```
------
## 5. 验证生成的文件
构建成功后:

## 6. 定位插件 HAR 包
插件输出目录:
```markdown
your_plugin/ohos/build/outputs/
└── har
└── your_plugin_ohos.har # 插件包
```

## 7. 将 HAR 添加到演示项目
将 HAR 复制到演示项目:
```bash
cp your_plugin_ohos.har demo_portal/module/ohos/libs/
```
------

## 8. 配置 HAR 依赖

## 9. 初始化插件

## 10. 测试插件功能


## 11. 开发原生实现
按照以下步骤进行原生开发:
1. 分析现有的 iOS/Android 原生逻辑
2. 在 `ohos/src/main/cpp/` 中创建 HarmonyOS 对应实现
3. 实现平台接口:cpp