2013-11-13 1 views
0

У меня есть страница CFML, которая позволяет пользователю вводить довольно много информации и сохранять ее (MS SQL). Затем они могут создать страницу отчета psuedo, содержащуюся в текстовом поле.Создание динамического cfdocument - нужен переменный размер шрифта

<cfform action="index.cfm?fa=customReportAction" method="post"> 
    <cfif benchInfo.custom_report EQ "" or attributes.submit eq "Generate New Reports"> 
    <cfif attributes.submit eq "Generate New Reports"> 
    This is a new version of the report<br> 
    </cfif> 
    <cftextarea name="custom_report" richtext="true" value="#body_temp#" width="1000" height="600"> 
     <cfoutput> 

      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
      <div align="center" > 
       <br /> 
       <br /> 
       <div> 
        <img src="#replace(request.controlurl,'https','http')#images/Logo.png" /> 
       </div> 
       <br /> 
       <br /> 
       <div style="font-size:20px; font-weight:bold; padding-top:25px;">Benchmark Comparative Study 
        <br /> 
        Summary</div> 
       <div style="padding-top:10px; "><h2> 
         #benchInfo.name# 
        </h2></div> 

lots of code............... 

     </cfoutput> 
    </cftextarea> 
    <br /> 
    <br /> 
    <cfelse> 
     <cftextarea name="custom_report" richtext="true" value="#benchInfo.custom_report#" width="1000" height="600"></cftextarea><br /><br /> 
     </cfif> 
    <cfinput type="hidden" name="benchid" value="#attributes.benchid#" /> 
    <cfinput type="submit" value="Submit" name="Submit" /> 
</cfform> 

Кнопка отправки передает их на страницу действий, которая создает cfdocument;

<cfparam name="doc_title" default = "#replace(benchInfo.title, " ", "_", "all")#" /> 
<cfset doc_title = #replace(benchInfo.title, " ", "_", "all")# /> 
<cfset custom_report2 = "#replace(form.custom_report, "&lt;--- This is a page break ---&gt;", "|", "all")#"> 
<cfinvoke component="cfc.updates" method="updSalBenchCustomReport" sb_id="#attributes.benchID#" custom_report="#custom_report2#" /> 

<cfset infoReplaceBegin = "<!-- Info -->"> 
<cfset infoReplaceEnd = "<!-- End Info -->"> 

<cfdocument format="pdf" filename="#request.Controlpath#salarybenchmarking\reports\#benchid#\#doc_title#_client.pdf" overwrite="yes" 
      marginbottom=".5"> 
    <cfdocumentitem 
     type = "footer"> 
     <cfoutput> 
     <div style="float:left; text-align:left; border-top:1px solid ##910062; width:100%; padding-top:5px; horizontal-align:top;"> 
       <img src="#request.controlurl#images/Logo_small.jpg" /> 
       <span style="padding-left:215px; line-height:12px;"><a href="http://www.tt.com" style="font-size:12px; ">www.Tt.com</a></span> 
       <span style="padding-left:225px; font-size:12px;">Page #cfdocument.currentpagenumber# of #cfdocument.totalpagecount#</span> 
     </div> 
     </cfoutput> 
    </cfdocumentitem> 

     <cfoutput> 
      <cfset counter = 0> 
      <cfloop list="#custom_report2#" delimiters="|" index="x"> 

      <cfset counter = counter + 1> 
      <cfif counter eq 1> 
       <cfset infoBegin = findnocase(infoReplaceBegin,x)> 
       <cfset infoEnd = findnocase(infoReplaceEnd,x)> 
       <cfif val(infoBegin) and val(infoEnd) and (val(infoEnd) gt val(infoBegin))> 
        <cfset stringCount = evaluate((infoend - infobegin)+len(infoReplaceEnd))> 
        <cfset tempString = mid(x,infoBegin,stringCount)> 
        <cfset x = replacenocase(x, tempString, '')> 
       </cfif> 
      </cfif>  
      #x# 

      <!--- Check to see if it's not the last delimiter ---> 
      <cfif counter lt evaluate(listlen(custom_report2,"|")-1)> 
       <cfdocumentitem type="pagebreak"></cfdocumentitem> 
      </cfif> 
      </cfloop> 

     </cfoutput> 


</cfdocument> 

<cfset compReplaceBegin = "<!-- Companyname -->"> 
<cfset compReplaceEnd = "<!-- End Companyname -->"> 
<cfdocument format="pdf" filename="#request.Controlpath#salarybenchmarking\reports\#benchid#\#doc_title#_participant.pdf" overwrite="yes" marginbottom="0"> 

     <cfoutput> 
      <cfloop list="#custom_report2#" delimiters="|" index="x"> 

      <cfset compBegin = findnocase(compReplaceBegin,x)> 
      <cfset compEnd = findnocase(compReplaceEnd,x)> 
      <cfif val(compBegin) and val(compEnd) and (val(compEnd) gt val(compBegin))> 
       <cfset stringCount = evaluate((compend - compbegin)+len(compReplaceEnd))> 
       <cfset tempString = mid(x,compBegin,stringCount)> 
       <cfset x = replacenocase(x, tempString, '')> 
      </cfif> 
      #x# 
      <div style="float:left; position:absolute; top:925px; text-align:center; border-top:1px solid ##910062; width:100%; padding-top:5px;"> 
       <div style="float:left; "><img src="#request.controlurl#images/Logo_small.jpg" /></div> 
       <div style="text-align:center; float:left; width:80%;"><a href="http://www.tt.com" style="font-size:12px; ">www.Tt.com</a></div> 
       <div style="float:right; position:absolute; width:100%; text-align:right; font-size:10px; padding-top:10px;">Page 1 of 1</div> 
      </div> 
      <cfbreak> 
      </cfloop> 

     </cfoutput> 


</cfdocument> 

<cfoutput> 
<br /> 
<a href="#request.controlURL#salarybenchmarking/reports/#benchid#/#doc_title#_client.pdf" target="_blank">View Client PDF</a><br /> 
<br /> 
<a href="#request.controlURL#salarybenchmarking/reports/#benchid#/#doc_title#_participant.pdf" target="_blank">View Participant PDF</a><br /> 
<br /> 
<a href="#request.controlURL#salarybenchmarking/index.cfm?fa=view&benchID=#attributes.benchID#" >Return to Benchmark Details</a><br /> 
<br /> 
<a href="#request.controlURL#salarybenchmarking/">Salary Benchmarking Home</a><br /> 
<br /> 
</cfoutput> 

Проблема возникает, когда вводится слишком много данных, создается автоматический разрыв страницы. Иногда пользователю приходится тратить время, сокращая свои заметки, чтобы он соответствовал странице. Я думал, что могу позволить им изменить шрифт/размер и сохранить эту информацию. Затем они могут воссоздать PDF-файл и посмотреть, подходит ли он. Я вижу, где глобальный шрифт/размер может быть немного сложным. Мне нужно какое-то диалоговое окно, чтобы пользователь мог сделать глобальный выбор шрифта.

+1

'' масштабирует весь PDF –

+0

Я предполагаю, что я должен был включать некоторые из таблиц, которые используются для форматирования отчета. Я говорю о данных, которые показаны внутри . Если я разрешаю фиксированную ширину поддерживать формат, может произойти обертка текста и вызвать новую строку и которая добавит длину страницы и, возможно, разрыв страницы внизу страницы. Каждая страница является фиксированным форматом, так как она должна помещаться на одной странице. – user990016

+0

Как раз ноту, я сейчас тестирую масштаб. – user990016

ответ

1
<cfdocument scale="xx"> 

увеличивает в целом в формате PDF