Coldfusion cfpdf миниатюра плюс превью? - PullRequest
0 голосов
/ 22 февраля 2012

у нас на сайте много PDF-контента. У меня есть несколько очень полезных миниатюр CFPDF, сгенерированных на странице 1 каждого PDF. Я подумал, что было бы неплохо, чтобы миниатюра jpg была ссылкой, чтобы при нажатии на нее вы либо видели первую страницу как есть, либо генерировался другой предварительный просмотр в полном масштабе.

Я экспериментирую с использованием действия слияния CFPDF, но пока без особой удачи. Кажется, не существует способа просто извлечь одну страницу из PDF - только удалить их.

У кого-нибудь есть предложения? Я действительно ценю это! Спасибо!

ОБНОВЛЕНИЕ: чтобы попытаться уточнить, вот код, который я сейчас использую. Извините за путаницу!

<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>

В любом случае, я надеюсь, это лучше объясняет, что я пытаюсь сделать. Как я уже сказал, это работает, но firstPage.pdf - это всегда только один файл - что произойдет, если несколько человек одновременно просматривают разные PDF-файлы, например?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 22 февраля 2012

(Если я правильно понимаю вопрос ...)

Конечно, вы можете использовать слияние для извлечения одной страницы:

<cfpdf action = "merge" 
    source="c:\dev\myFile.pdf"
    pages="10"
    name="singlePage" />

<cfcontent type="application/pdf" variable="#ToBinary(singlePage)#">    

что произойдет, если несколько человекпредварительный просмотр разных PDF-файлов одновременно, например?

Редактировать: Некоторые из них в конечном итоге будут просматривать неверную страницу и / или эскиз изображения;) Чтобы избежать этого, вы должны каждый раз генерировать уникальное имя файла, например, используя getTempFile () , createUUID () & ". Pdf", и так далее.

Хотя технически вам не нужно создавать файл.Вы можете создавать изображения / PDF-файлы только в памяти и передавать их с помощью cfcontent (как в примере выше).

1 голос
/ 22 февраля 2012

Это очень просто

<cfpdf source="pdfdata" pages="1" action="thumbnail" destination="." format="jpg" overwrite="true" resolution="high" scale="25">

Это превратит первую страницу в JPG

...