Foxit PDF SDK for Web 不支持直接通过 UI 将 tiff 图像转换为 PDF,但有一种方法可以调用API。例如:您可以直接调用 PDFPage::addImage 将 tiff 图像插入到新的 PDF 中,但这只会插入图像的第一个 iframe。 如果要插入所有的iframe,则需要获取每个iframe,然后将其一一插入到PDF中。 首先,您需要将 tiff.js 包安装到您的项目中,然后将其导入到您的项目中。 以下是示例代码:
async function covertTiff2pdf(url){
//get the buffer of tiff file
var imageResp = await fetch(url);
var arrayBuffer = await imageResp.arrayBuffer();
var image = new Tiff({ buffer: arrayBuffer });
//get the iframe counts
var imageCount = image.countDirectory();
var pdfViewer = await pdfui.getPDFViewer();
//create a new PDF document
var pdfdoc = await pdfViewer.createNewDoc("newpdf.pdf","websdk",{height:image.height(), width:image.width()})
var page1 = await pdfdoc.getPageByIndex(0);
//insert the first iframe to first page
page1.addImage(arrayBuffer,{left:0,right:image.width(), top: image.height(), bottom: 0});
//insert the rest of iframe to PDF
if(imageCount>1){
for(i=1;i<imageCount;i++){
//insert a new PDF page to document
var newPage = await pdfdoc.insertPage(i,image.width(),image.height());
//get the next iframe
image.setDirectory(i);
var tifImage = await image.toDataURL("image/png");
var tifImageResp = await fetch(tifImage );
var tifImageArrayBuffer = await tifImageResp.arrayBuffer();
//insert current iframe to current page
await newPage.addImage(tifImageArrayBuffer,{left:0,right:image.width(), top: image.height(), bottom: 0});
}
}
}