![]() |
Форум visio.getbb.ru | О форумах Библиотека | Частые вопросы | Литература | Склад материалов Visio Navigator | Blog | Полезные ссылки | О сайте История Visio | Продукты Visio |
Для русскоязычных пользователей Visio. Начинающих и профессионалов. Где взять, как сделать, что купить и т.д. |
07.06.2021  Editing a Visio EE master – Part 2 johnvisiomvp.
13.05.2021  Editing a Visio EE master johnvisiomvp.
06.12.2019  Displaying Visio Number Shapes data clearly David Parker.
03.09.2019 Методы повышения визуального восприятия структурных схем Ничков А.В..
08.08.2019  Multiline text in Visio Shape Data David Parker.
10.07.2019 Направляющие линии Глушаков С.В., Лобяк А.В..
10.07.2019 Соединительные точки Глушаков С.В., Лобяк А.В..
27.02.2019  Visio Топ 10 лучших трюков Vigil. Видео
02.08.2017 Назначить фигуру слою, в соответствии со значением выбранным в ShapeData используя только ShapeShee Kuzin Alexander.
03.04.2017  Visio 2016. Дополнительное окно Проводник документа Alla Vasilieva. Видео
12.07.2016  Truly “No-Glue-To” Shapes Chris Roth.
20.11.2015  Using multiSelect in Visio David Parker. Add-In для прослеживания соединений
23.05.2012 Способы выделения фигур Alla Vasilieva.
14.05.2012 Создание новой схемы из схемы-образца Alla Vasilieva.
26.04.2012  Visio Date Format Pictures Affect Data Entry via the Calendar Popup David Parker.
23.02.2012 Связывание диапазонов с фигурами Alla Vasilieva.
28.01.2010  Applying Selected DataGraphic to the Whole Document David Parker.
10.12.2009  Faking 3D in Visio Chris Roth.
09.11.2009  Kill the Reviewing Toolbar! Chris Roth.
04.11.2009  Why are my Visio files so large? Visimation.
02.11.2009  Copying a Visio graphic as a metafile can improve performance Visimation.
06.08.2009  Visio 2010 Master Icons Get a Facelift! Chris Roth.
25.05.2009  How to Count the Number of Items in a List Chris Roth.
04.01.2009  Closing Shape Data Sets window in Visio 2007 David Parker.
21.10.2008  Title Blocks #1: How to Display Existing Document Information Chris Roth.
19.06.2008  Enhancing Visio Data Graphics Text Callouts David Parker.
Отображение данных шейпа в 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