代码如下:
@Entry
@Component
struct PDGPage {
@State pixelMap: image.PixelMap|string = ""
aboutToAppear(): void {
this.openFile()
}
//打开选择的PDF文件
async openFile() {
let context = getContext() as common.UIAbilityContext;
let dir: string = context.filesDir
// 确保rawfile里面有pdf文件
let filePath: string = dir + "/pdf_reference.pdf";
fileIo.accessSync(filePath);
let content: Uint8Array = context.resourceManager.getRawFileContentSync('rawfile/26.pdf');
let fdSand = fileIo.openSync(filePath, fileIo.OpenMode.WRITE_ONLY | fileIo.OpenMode.CREATE | fileIo.OpenMode.TRUNC);
fileIo.writeSync(fdSand.fd, content.buffer);
fileIo.closeSync(fdSand.fd);
let document = new pdfService.PdfDocument
document.loadDocument(filePath, '');
let pageCount = document.getPageCount()
// for (let i = 0; i < pageCount; i++) {
let page: pdfService.PdfPage = document.getPage(0)
this.pixelMap = page.getPagePixelMap(); //设置Image组件参数
// }
}
build() {
Column() {
Image(this.pixelMap)
.width('500')
.objectFit(ImageFit.Contain)
}
.height('100%')
.width('100%')
}
.getPage(0)需使用getCustomPagePixelMap()规范page的大小。
参考demo: