Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Создание PDF в Powershell (http://forum.oszone.net/showthread.php?t=344427)

DJ Mogarych 15-03-2020 15:00 2913264

Создание PDF в Powershell
 
Есть ли у вас опыт сабжа?
Интересует личный опыт, т. к. гуглить я и так неплохо умею.

Хотелось бы именно создавать PDF прямо в командной строке (типа export-csv), а не конвертировать из другого формата, не печатать в файл.
Типа, подгрузить какую-нибудь библиотеку dll и работать через неё.

Чем удобнее пользоваться, у чего синтаксис попроще?

Busla 15-03-2020 16:15 2913288

Цитата:

Цитата DJ Mogarych
(типа export-csv), а не конвертировать из другого формата »

export-csv сохраняет в "другом формате" встроенные сущности PoSh

А что вы собираетесь подавать на вход гипотетической export-pdf?

DJ Mogarych 16-03-2020 10:16 2913368

Типа, формировать документы, которые новые юзеры должны подписывать.

Serguei Kouzmine 16-03-2020 17:25 2913425

DJ Mogarych, браузер умеет печатать в пдф

https://lifehacker.ru/kak-sokhranit-...renijj-chrome/

и это автоматизируется
https://developers.google.com/web/tools/puppeteer?hl=ru
https://github.com/checkly/puppeteer-examples#pdf
но встречал обсуждения что это нельзя использовать в коммерческих целях

Iska 16-03-2020 20:29 2913440

Коль народ пока особо ничего не предлагает — я таки, «загуглив», спрошу. Эту рекомендацию: Creating PDF files using PowerShell - TechNet Articles - United States (English) - TechNet Wiki видели-пробовали?

YuS_2 16-03-2020 20:47 2913442

Цитата:

Цитата Serguei Kouzmine
браузер умеет печатать в пдф »

Если уж печатать, то есть ведь в десятке "Microsoft Print to PDF"
Да, для автоматизации не очень, конечно, ибо необходимо указывать файл, но есть способ обхода...
https://community.idera.com/database...-to-pdf-part-1
https://community.idera.com/database...-to-pdf-part-2
https://community.idera.com/database...-to-pdf-part-3
https://community.idera.com/database...-to-pdf-part-4

Цитата:

Цитата Iska
Коль народ пока особо ничего не предлагает »

Не то, чтобы предложений нет, но было условие:
Цитата:

Цитата DJ Mogarych
Интересует личный опыт, т. к. гуглить я и так неплохо умею. »

Поэтому и предложить, наверное, нечего... из личного опыта именно.
А по гуглю, это первая же ссылка... думаю, что на примете она точно есть у DJ Mogarych

Iska 16-03-2020 21:22 2913450

YuS_2, так что думаю — вдруг её и выберет, опробует, и опосля здесь опытом и поделится, не?

DJ Mogarych 16-03-2020 22:12 2913461

Цитата:

Цитата Serguei Kouzmine
встречал обсуждения что это нельзя использовать в коммерческих целях »

Интересно, автоматизация всякой рутины внутри отдела - это коммерческие цели?
Цитата:

Цитата Iska
видели-пробовали? »

Да, видел и пробовал, пока это самое простое и очевидное решение. Правда, я пока не понял, как сделать так, чтобы картинки масштабировались каждая по-разному, а не все вместе скопом, но я особо не закапывался туда пока.
Цитата:

Цитата YuS_2
но есть способ обхода »

Посмотрю, спасибо!
Цитата:

Цитата Iska
опосля здесь опытом и поделится »

:) Видимо, так и будет, если не плюну на это дело.

Я-то надеялся, что будет что-то попроще, чтобы не писать километр кода, но похоже, этого не избежать.

Есть вот такая библиотека - pdfsharp.dll, вон у неё сколько всякого понакручено, а документация куцая и устаревшая.
Код:

Add-Type -Path "C:\temp\pdf\PdfSharp.dll"
([appdomain]::CurrentDomain.GetAssemblies() |? location -match 'PdfSharp.dll').gettypes() > C:\temp\pdf\pdfsharp-types.txt

вывод, очень много не влезло в сообщение, обрезал чуть ли не больше половины

IsPublic IsSerial Name BaseType
-------- -------- ---- --------
False False Config System.Object
False False Const System.Object
False False NamespaceDoc System.Object
True True PageOrientation System.Enum
True True PageSize System.Enum
False True PSMsgID System.Enum
True False PageSizeConverter System.Object
True False PdfSharpException System.Exception
True False ProductVersionInfo System.Object
False False PSSR System.Object
False False VersionInfo System.Object
False True SharpZipBaseException System.ApplicationException
True True UseZip64 System.Enum
True True CompressionMethod System.Enum
True True EncryptionAlgorithm System.Enum
True True GeneralBitFlags System.Enum
False False ZipConstants System.Object
False False ZipException PdfSharp.SharpZipLib.SharpZipBaseException
False False Deflater System.Object
False False DeflaterConstants System.Object
False True DeflateStrategy System.Enum
False False DeflaterEngine PdfSharp.SharpZipLib.Zip.Compression.DeflaterCon...
False False DeflaterHuffman System.Object
False False DeflaterPending PdfSharp.SharpZipLib.Zip.Compression.PendingBuffer
False False Inflater System.Object
False False InflaterDynHeader System.Object
False False InflaterHuffmanTree System.Object
False False PendingBuffer System.Object
False False DeflaterOutputStream System.IO.Stream
False False InflaterInputBuffer System.Object
False False InflaterInputStream System.IO.Stream
False False OutputWindow System.Object
False False StreamManipulator System.Object
False False Adler32 System.Object
False False Crc32 System.Object
False False IChecksum
False True KeyType System.Enum
False False KeyInfoAttribute System.Attribute
False True DocumentState System.Enum
True True PdfFlateEncodeMode System.Enum
True True PdfUseFlateDecoderForJpegImages System.Enum
True True PdfColorMode System.Enum
True True PdfCustomValueCompressionMode System.Enum
True True PdfFontEmbedding System.Enum
True True PdfFontEncoding System.Enum
True True PdfPageDestinationType System.Enum
True True PdfOutlineStyle System.Enum
True True PdfPageLayout System.Enum
True True PdfPageMode System.Enum
True True PdfReadingDirection System.Enum
True True PdfTextStringEncoding System.Enum
True False KeysBase System.Object
False False KeyDescriptor System.Object
False False DictionaryMeta System.Object
True False PdfArray PdfSharp.Pdf.PdfObject
True False PdfBoolean PdfSharp.Pdf.PdfItem
True False PdfBooleanObject PdfSharp.Pdf.PdfObject
True False PdfCustomValue PdfSharp.Pdf.PdfDictionary
True False PdfCustomValues PdfSharp.Pdf.PdfDictionary
True False PdfDate PdfSharp.Pdf.PdfItem
True True VCF System.Enum
True False PdfDictionary PdfSharp.Pdf.PdfObject
True False PdfDocument PdfSharp.Pdf.PdfObject
True False PdfDocumentInformation PdfSharp.Pdf.PdfDictionary
True False PdfDocumentOptions System.Object
True False PdfDocumentSettings System.Object
True False PdfInteger PdfSharp.Pdf.PdfNumber
True False PdfIntegerObject PdfSharp.Pdf.PdfNumberObject
True False PdfItem System.Object
True False PdfLiteral PdfSharp.Pdf.PdfItem
True False PdfName PdfSharp.Pdf.PdfItem
True False PdfNameObject PdfSharp.Pdf.PdfObject
True False PdfNull PdfSharp.Pdf.PdfItem
True False PdfNullObject PdfSharp.Pdf.PdfObject
True False PdfNumber PdfSharp.Pdf.PdfItem
True False PdfNumberObject PdfSharp.Pdf.PdfObject
True False PdfObject PdfSharp.Pdf.PdfItem
True False PdfObjectID System.ValueType
True False PdfOutline PdfSharp.Pdf.PdfDictionary
True False PdfOutlineCollection PdfSharp.Pdf.PdfObject
True False PdfPage PdfSharp.Pdf.PdfDictionary
True False PdfPages PdfSharp.Pdf.PdfDictionary
True False PdfReal PdfSharp.Pdf.PdfNumber
True False PdfRealObject PdfSharp.Pdf.PdfNumberObject
True False PdfRectangle PdfSharp.Pdf.PdfItem
False False PdfReferenceTable_old System.Object
True True PdfStringEncoding System.Enum
False True PdfStringFlags System.Enum
True False PdfString PdfSharp.Pdf.PdfItem
True False PdfStringObject PdfSharp.Pdf.PdfObject
True False PdfUInteger PdfSharp.Pdf.PdfNumber
True False PdfUIntegerObject PdfSharp.Pdf.PdfNumberObject
True False PdfViewerPreferences PdfSharp.Pdf.PdfDictionary
True False TrimMargins System.Object
True True PdfDocumentSecurityLevel System.Enum
False True PdfUserAccessPermission System.Enum
True False PdfSecurityHandler PdfSharp.Pdf.PdfDictionary
True False PdfSecuritySettings System.Object
True False PdfStandardSecurityHandler PdfSharp.Pdf.Security.PdfSecurityHandler
True False Chars System.Object
True True PasswordValidity System.Enum
True True PdfDocumentOpenMode System.Enum
True True PdfWriterLayout System.Enum
False True PdfWriterOptions System.Enum
True True Symbol System.Enum
True False Lexer System.Object
False False Parser System.Object
False False StreamHelper System.Object
True False PdfPasswordProviderArgs System.Object
True True PdfPasswordProvider System.MulticastDelegate
True False PdfReader System.Object
True False PdfReaderException PdfSharp.PdfSharpException
False False PdfWriter System.Object
False False ShiftStack System.Object
True False AnsiEncoding System.Text.Encoding
False False ColorSpaceHelper System.Object
False False PdfDiagnostics System.Object
False False DocEncoding System.Text.Encoding
False False PdfEncoders System.Object
True False RawEncoding System.Text.Encoding
False False RawUnicodeEncoding System.Text.Encoding
False False ThreadLocalStorage System.Object
True False Ascii85Decode PdfSharp.Pdf.Filters.Filter
True False AsciiHexDecode PdfSharp.Pdf.Filters.Filter
True False FilterParms System.Object
True False Filter System.Object
True False Filtering System.Object
True False FlateDecode PdfSharp.Pdf.Filters.Filter
True False LzwDecode PdfSharp.Pdf.Filters.Filter
False False Chars System.Object
True False CLexer System.Object
True False ContentReader System.Object
True False ContentReaderException PdfSharp.PdfSharpException
False False ContentWriter System.Object
True False CParser System.Object
True True CSymbol System.Enum
True False CObject System.Object
True False CComment PdfSharp.Pdf.Content.Objects.CObject
True False CSequence PdfSharp.Pdf.Content.Objects.CObject
True False CNumber PdfSharp.Pdf.Content.Objects.CObject
True False CInteger PdfSharp.Pdf.Content.Objects.CNumber
True False CReal PdfSharp.Pdf.Content.Objects.CNumber
True True CStringType System.Enum
True False CString PdfSharp.Pdf.Content.Objects.CObject
True False CName PdfSharp.Pdf.Content.Objects.CObject
True False CArray PdfSharp.Pdf.Content.Objects.CSequence
True False COperator PdfSharp.Pdf.Content.Objects.CObject
True True OpCodeFlags System.Enum
True True OpCodeName System.Enum
True False OpCode System.Object
True False OpCodes System.Object
True True PdfAnnotationFlags System.Enum
True True PdfRubberStampAnnotationIcon System.Enum
True True PdfTextAnnotationIcon System.Enum
True False PdfAnnotation PdfSharp.Pdf.PdfDictionary
True False PdfAnnotations PdfSharp.Pdf.PdfArray
False False PdfGenericAnnotation PdfSharp.Pdf.Annotations.PdfAnnotation
True False PdfLinkAnnotation PdfSharp.Pdf.Annotations.PdfAnnotation
True False PdfRubberStampAnnotation PdfSharp.Pdf.Annotations.PdfAnnotation
True False PdfTextAnnotation PdfSharp.Pdf.Annotations.PdfAnnotation
False False PdfWidgetAnnotation PdfSharp.Pdf.Annotations.PdfAnnotation
False False IContentStream
True False PdfCatalog PdfSharp.Pdf.PdfDictionary
False False PdfCIDFont PdfSharp.Pdf.Advanced.PdfFont
True False PdfContent PdfSharp.Pdf.PdfDictionary
True False PdfContents PdfSharp.Pdf.PdfArray
False False PdfCrossReferenceStream PdfSharp.Pdf.Advanced.PdfTrailer
False False PdfCrossReferenceTable System.Object
True False PdfDictionaryWithContentStream PdfSharp.Pdf.PdfDictionary
True False PdfExtGState PdfSharp.Pdf.PdfDictionary
True False PdfExtGStateTable PdfSharp.Pdf.Advanced.PdfResourceTable
True False PdfFont PdfSharp.Pdf.PdfDictionary
False True PdfFontDescriptorFlags System.Enum
True False PdfFontDescriptor PdfSharp.Pdf.PdfDictionary
False True FontType System.Enum
False False PdfFontTable PdfSharp.Pdf.Advanced.PdfResourceTable
True False PdfFormXObject PdfSharp.Pdf.Advanced.PdfXObject
False False PdfFormXObjectTable PdfSharp.Pdf.Advanced.PdfResourceTable
True False PdfGroupAttributes PdfSharp.Pdf.PdfDictionary
True False PdfImage PdfSharp.Pdf.Advanced.PdfXObject
False False MonochromeMask System.Object
False False BitReader System.Object
False False BitWriter System.Object
False False PdfImageTable PdfSharp.Pdf.Advanced.PdfResourceTable
False False PdfImportedObjectTable System.Object
True False PdfInternals System.Object
True False PdfObjectInternals System.Object
True False PdfObjectStream PdfSharp.Pdf.PdfDictionary
False False PdfPageInheritableObjects PdfSharp.Pdf.PdfDictionary
True False PdfReference PdfSharp.Pdf.PdfItem
False False PdfResourceMap PdfSharp.Pdf.PdfDictionary
True False PdfResources PdfSharp.Pdf.PdfDictionary
True False PdfResourceTable System.Object
True False PdfShading PdfSharp.Pdf.PdfDictionary
True False PdfShadingPattern PdfSharp.Pdf.Advanced.PdfDictionaryWithContentSt...
True False PdfSoftMask PdfSharp.Pdf.PdfDictionary
True False PdfTilingPattern PdfSharp.Pdf.Advanced.PdfDictionaryWithContentSt...
False False PdfToUnicodeMap PdfSharp.Pdf.PdfDictionary
False False PdfTrailer PdfSharp.Pdf.PdfDictionary
True False PdfTransparencyGroupAttributes PdfSharp.Pdf.Advanced.PdfGroupAttributes
False False PdfTrueTypeFont PdfSharp.Pdf.Advanced.PdfFont
False False PdfType0Font PdfSharp.Pdf.Advanced.PdfFont
True False PdfXObject PdfSharp.Pdf.PdfDictionary
True True PdfNamedActionNames System.Enum
True False PdfGoToAction PdfSharp.Pdf.Actions.PdfAction
True False PdfAction PdfSharp.Pdf.PdfDictionary
True True PdfAcroFieldFlags System.Enum
True False PdfAcroField PdfSharp.Pdf.PdfDictionary
True False PdfAcroForm PdfSharp.Pdf.PdfDictionary
True False PdfButtonField PdfSharp.Pdf.AcroForms.PdfAcroField
True False PdfCheckBoxField PdfSharp.Pdf.AcroForms.PdfButtonField
True False PdfChoiceField PdfSharp.Pdf.AcroForms.PdfAcroField
True False PdfComboBoxField PdfSharp.Pdf.AcroForms.PdfChoiceField
True False PdfGenericField PdfSharp.Pdf.AcroForms.PdfAcroField
True False PdfListBoxField PdfSharp.Pdf.AcroForms.PdfChoiceField
True False PdfPushButtonField PdfSharp.Pdf.AcroForms.PdfButtonField
True False PdfRadioButtonField PdfSharp.Pdf.AcroForms.PdfButtonField
True False PdfSignatureField PdfSharp.Pdf.AcroForms.PdfAcroField
True False PdfTextField PdfSharp.Pdf.AcroForms.PdfAcroField
False False CMapInfo System.Object
False False FontResolvingOptions System.Object
False False PlatformFontResolverInfo PdfSharp.Fonts.FontResolverInfo
True False PlatformFontResolver System.Object
True False FontResolverInfo System.Object
True False IFontResolver
True False GlobalFontSettings System.Object
False False FontDescriptorCache System.Object
False False FontFactory System.Object
False False FontWriter System.Object
False True FontTechnology System.Enum
False False TableTagNames System.Object
False False FontDescriptor System.Object
False False GlyphDataTable PdfSharp.Fonts.OpenType.OpenTypeFontTable
False False OpenTypeFontfaceCache System.Object
False False GlyphTypefaceCache System.Object
False False IndexToLocationTable PdfSharp.Fonts.OpenType.OpenTypeFontTable
False False IRefFontTable PdfSharp.Fonts.OpenType.OpenTypeFontTable
False False OpenTypeDescriptor PdfSharp.Fonts.OpenType.FontDescriptor
False False OpenTypeFontface System.Object
False False OpenTypeFontTable System.Object
False True PlatformId System.Enum
False True WinEncodingId System.Enum


Iska 16-03-2020 22:36 2913464

DJ Mogarych, из «попроще» будет разве что, при наличии Microsoft Office, формировать документ/рабочую книгу с последующим сохранением его/её в pdf (в новых версиях Office) или печать на pdf-принтер (если таковое будет возможным без интерактивного запроса имени конечного файла).

Цитата:

Цитата DJ Mogarych
Правда, я пока не понял, как сделать так, чтобы картинки масштабировались каждая по-разному, а не все вместе скопом, но я особо не закапывался туда пока. »

Ну, в коде wrapper'а в самой статье точно ошибка:
Код:

# Add an image to the document, optionally scaled
function Add-Image([iTextSharp.text.Document]$Document, [string]$File, [int32]$Scale = 100)
{
    [iTextSharp.text.Image]$img = [iTextSharp.text.Image]::GetInstance($File)
    $img.ScalePercent(50)
    $Document.Add($img)
}


YuS_2 17-03-2020 10:41 2913521

Цитата:

Цитата Iska
$img.ScalePercent(50) »

Только тут не цифру, наверное, надо, а параметр?

Elven 17-03-2020 14:23 2913547

Цитата:

Цитата YuS_2
Percent »

:задумчивый_смайлик:

YuS_2 17-03-2020 15:16 2913552

Цитата:

Цитата Elven
:задумчивый_смайлик: »

А чего тут думать-то? :)
Требовалось же
Цитата:

Цитата DJ Mogarych
как сделать так, чтобы картинки масштабировались каждая по-разному »

В параметры пишем процент масштабирования и передаем вместе с картинкой функции. Или чего я не понял?


Время: 22:19.

Время: 22:19.
© OSzone.net 2001-