<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Форум компьютерной помощи &mdash; Сжатие Pdf вложений в лотус документе.]]></title>
	<link rel="self" href="https://itpmr.ru/extern.php?action=feed&amp;tid=1158&amp;type=atom" />
	<updated>2024-06-03T07:12:07Z</updated>
	<generator>PunBB</generator>
	<id>https://itpmr.ru/viewtopic.php?id=1158</id>
		<entry>
			<title type="html"><![CDATA[Сжатие Pdf вложений в лотус документе.]]></title>
			<link rel="alternate" href="https://itpmr.ru/viewtopic.php?pid=124956#p124956" />
			<content type="html"><![CDATA[<p>Есть проблема - к лотус докментам прикрепляют огромные по размерам Pdf приложения, которые совсем не оптимизированы по сжатию. Размеры файликов бывают 100-300 Мб.<br />Вот пока первый вариант сжатия таких вложений с помощью gswin64c.exe - Ghostscript, программа.</p><p>Вызов функции.<br /></p><div class="codebox"><pre><code>Print &quot;Вложение сжать: &quot; + datpatch$ &amp; oname$ 
If (obj.FileSize &gt; 10214400 ) Then &#039; БОРЯ 2024
If ws.Prompt (PROMPT_YESNO, &quot;Внимание&quot;,    &quot;Сжать ПДФ&quot;) = 1 Then     Call Pdf_compact (datpatch$ , oname$ )  
End If</code></pre></div><p>Функция.<br /></p><div class="codebox"><pre><code>Function Pdf_compact(datpatch As String, oname As String) As String
    On Error GoTo errh    
    Dim cmd As String
    Dim Namepdf As String
    Print &quot;Pdf_compact старт&quot;
    Namepdf = datpatch &amp; oname    

    If oname = &quot;456-output.pdf&quot; Then
        
        cmd = datpatch &amp; {gswin64c.exe}
        cmd = cmd &amp; { -sDEVICE=pdfwrite}
        cmd = cmd &amp; { -dCompatibilityLevel=1.7}
        cmd = cmd &amp; { -dNOPAUSE}
        cmd = cmd &amp; { -dBATCH}
        cmd = cmd &amp; { -sColorConversionStrategy=Gray}
        cmd = cmd &amp; { -dMonoImageResolution=60}        
        cmd = cmd &amp; { -o&quot;}  &amp; datpatch &amp; {tmpout.pdf&quot; -f&quot;} &amp; datpatch &amp; oname &amp; {&quot;}
        
        Print cmd
        
        Dim WShell As Variant, WshExec As Variant
        Dim OutStream As Variant, StdErr As String
        Set WShell=Nothing
        Set WshExec=Nothing
        
        Set WShell = CreateObject(&quot;WScript.Shell&quot;)
        Set WshExec = WShell.Exec(cmd)  &#039;запускаем прогу  
        Sleep 3
        While WshExec.Status=0 &#039;ждем закрытия проги
            Sleep 1
        Wend
        
        Set OutStream = WshExec.StdErr
        While Not OutStream.AtEndOfStream
            StdErr = StdErr &amp; Trim(OutStream.ReadLine()) &amp; Chr(13)
        Wend
        If Trim(StdErr)&lt;&gt;&quot;&quot; Then MsgBox StdErr
        Sleep 1
        Kill datpatch + oname
        Name datpatch + &quot;tmpout.pdf&quot; As datpatch + oname
        Sleep 1
    
        Print  &quot;ЗАКРЫЛИ&quot;
    End If
    Print &quot;Pdf_compact END&quot;
    Exit Function
ErrH:    
    Print &quot;Библиотека &#039;MED_XML&#039; ф-ция &#039;pdf_compact&#039;. Ошибка &quot; &amp; Error(Err) &amp; &quot; в строке &quot; &amp; Erl    
    Exit Function
End Function</code></pre></div>]]></content>
			<author>
				<name><![CDATA[admin]]></name>
				<uri>https://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2024-06-03T07:12:07Z</updated>
			<id>https://itpmr.ru/viewtopic.php?pid=124956#p124956</id>
		</entry>
</feed>
