|
Форум visio.getbb.ru |
О форумах
Библиотека | Частые вопросы | Литература | Склад материалов Visio Navigator | Blog | Полезные ссылки | О сайте История Visio | Продукты Visio |
| Для русскоязычных пользователей Visio. Начинающих и профессионалов. Где взять, как сделать, что купить и т.д. |
13.06.2022  
07.06.2021  
13.05.2021  
20.02.2020  
06.12.2019  
03.09.2019  
08.08.2019  
27.02.2019 Видео 
02.08.2017  
03.04.2017 Видео 
12.07.2016  
20.11.2015 Add-In для прослеживания соединений 
23.05.2012  
14.05.2012  
26.04.2012  
23.02.2012  
28.01.2010  
10.12.2009  
09.11.2009  
04.11.2009  
02.11.2009  
06.08.2009  
25.05.2009  
04.01.2009  
21.10.2008  
19.06.2008  
Отображение данных шейпа в PDF
Существует ли возможность отобразить данные шейпа при конвертировании в PDF?
Это возможно, если у вас установлен Acrobat Standard. Ниже приведен пример файла Visio с макросом (см. источник). Макрос сохраняет документ в формате PDF в той же папке, затем читает данные шейпов на всех страницах и записывает их в виде комментариев в PDF. Проверено в Visio 2013 Pro, Acrobat XI Standard, документ Visio в метрической системе. 2. Использование Acrobat - не единственная возможность. Существует множество библиотек, работающих с комментариями. Например, можно воспользоваться open-source PdfSharp. Преобразование координат должно быть несложным. Внутренние единицы Visio - это дюймы, в PDF - точки, начало координат одинаковое (левый нижний угол). Поэтому формулы Visio_X*72, Visio_Y * 72 должны давать координаты X и Y в PDF. Пример размещения комментариев есть в http://www.pdfsharp.net/wiki/Annotations-sample.ashx. Ниже приведен скрипт powershell для добавления аннотаций с использованием рассмотренной выше методики (PdfSharp).
$visioFileName = $PSScriptRoot + "\demo\PdfNote.vsd" $pdfFileName = $PSScriptRoot + "\demo\PdfNote.pdf" Write-Host converting $visioFileName to $pdfFileName # Load PdfSharp assembly Add-Type -Path (Get-ChildItem -Filter PdfSharp.dll -Recurse $PSScriptRoot).FullName # start Visio and open the document $visio = New-Object -ComObject Visio.Application $visio.Visible = $true $visioDoc = $visio.Documents.Open($visioFileName) # Export PDF, all pages $visioDoc.ExportAsFixedFormat(1, $pdfFileName, 1, 0) # Open exported PDF with PdfSharp $pdfDoc = [PdfSharp.Pdf.IO.PdfReader]::Open($pdfFileName); for ($i = 0; $i -lt $pdfDoc.PageCount; $i = $i + 1) { $pdfPage = $pdfDoc.Pages[$i] $visioPage = $visioDoc.Pages[1 + $i] foreach ($visioShape in $visioPage.Shapes) { # if comment exists $comment = $visioShape.CellsU("Comment").ResultStr(0) if ($comment) { # add it as annotation $x = $visioShape.CellsU("PinX").ResultIU - $visioShape.CellsU("Width").ResultIU / 2 $y = $visioShape.CellsU("PinY").ResultIU + $visioShape.CellsU("Height").ResultIU / 2 $annotation = New-Object PdfSharp.Pdf.Annotations.PdfTextAnnotation $annotation.Title = $visioShape.Characters.Text $annotation.Contents = $comment $annotation.Icon = 6 # "note" icon # inches to points $point = New-Object PdfSharp.Drawing.XPoint(($x * 72), ($y * 72)) $size = New-Object PdfSharp.Drawing.XSize(0, 0) $rect = New-Object PdfSharp.Drawing.XRect($point, $size) $annotation.Rectangle = New-Object PdfSharp.Pdf.PdfRectangle($rect) $pdfPage.Annotations.Add($annotation) } } }
Источник (и подробности) - http://visguy.com/vgforum/index.php?topic=8581