【Foxit PDF SDK for Web】如何从TIFF转换成PDF

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});           

        }

    }   

}