Для русскоязычных пользователей Visio. Начинающих и профессионалов. Где взять, как сделать, что купить и т.д.

PowerShell

Перечень литературы

08.08.2020  Exploring the Visio file   johnvisiomvp    

21.08.2019  Visio PowerShell   Saveen Reddy    

18.05.2016  Translating Visio VBA to PowerShell   mike    

14.01.2010  How Can I Create a Windows Visio Drawing of My Workstations Disk Subsystem?   ScriptingGuy    

12.01.2010  Can I Make a Microsoft Visio Drawing with Network Shapes and Symbols?   ScriptingGuy    

11.01.2010  Is It Possible to Automate Microsoft Visio?   ScriptingGuy    

Ответы на вопросы

Отображение данных шейпа в 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