Coldfusion cfpdf thumbnail plus preview?
-
28-10-2019 - |
Pergunta
temos muitos conteúdos PDF em nosso site.Tenho algumas miniaturas de CFPDF perfeitamente utilizáveis geradas a partir da página 1 de cada PDF.Achei que seria bom ter a miniatura jpg um link de forma que, quando você clicar nela, você veja a primeira página como está ou outra visualização em escala real seja gerada.
Estou experimentando usar a ação de mesclagem do CFPDF, mas sem muita sorte até agora.Não parece haver uma maneira de apenas extrair uma única página do PDF - apenas excluí-la.
Alguém tem alguma sugestão?Eu realmente aprecio isso!Obrigado!
ATUALIZAÇÃO: para tentar esclarecer, aqui está o código que estou usando agora.Desculpe a confusão!
<cfset dir = expandPath("\images\thumbs")>
<cfif not directoryExists(dir)>
<cfdirectory action="create" directory="#dir#">
</cfif>
<cfset firstPage = expandPath("\images\thumbs\firstPage.pdf")>
<cfpdf action="thumbnail"
source="source"
destination="#dir#"
format="jpg"
scale="40"
overwrite="yes"
pages="1"
resolution="low">
<cfpdf action="merge"
source="sameSource"
pages="1"
destination="#firstPage#"
overwrite="yes">
<a href="firstPage.pdf" target="_blank">
<img src="thumbnail.jpg" style="border: 1px solid silver;">
</a>
De qualquer forma, espero que isso explique melhor o que estou tentando fazer.Como eu disse, isso funciona, mas firstPage.pdf é sempre apenas um arquivo - o que acontece se várias pessoas estiverem visualizando PDFs diferentes ao mesmo tempo, por exemplo?
Obrigado!
Solução
(Se estou entendendo a pergunta corretamente ...)
Claro, você pode usar mesclar para extrair uma única página:
<cfpdf action = "merge"
source="c:\dev\myFile.pdf"
pages="10"
name="singlePage" />
<cfcontent type="application/pdf" variable="#ToBinary(singlePage)#">
o que acontece se várias pessoas visualizarem PDFs diferentes no mesmo tempo, por exemplo?
Editar: alguns deles acabarão visualizando a página errada e / ou a imagem em miniatura;) Para evitar isso, você deve gerar um nome de arquivo exclusivo a cada vez,como usar getTempFile () , createUUID () & ". pdf", etc.
Embora tecnicamente você não precise criar um arquivo.Você pode gerar imagens / PDFs apenas na memória e exibi-los com cfcontent (como no exemplo acima).
Outras dicas
É muito fácil
<cfpdf source="pdfdata" pages="1" action="thumbnail" destination="." format="jpg" overwrite="true" resolution="high" scale="25">
Isso transformará a página um em um jpg