Topics   All   MacOS (Only)   Windows (Only)   Linux (Only, Not)   iOS (Only, Not)  
Components   Crossplatform Mac & Win   Server   Client   Old   Deprecated   Guides   Examples   Videos
New in version: 10.1   10.2   10.3   10.4   10.5   11.0   11.1   11.2   11.3   11.4    Statistic    FMM    Blog  

DynaPDF.OpenPDFFromContainer

Opens a PDF for importing from a container.

Component Version macOS Windows Linux Server iOS SDK
DynaPDF 3.0 ✅ Yes ✅ Yes ✅ Yes ✅ Yes ✅ Yes
MBS( "DynaPDF.OpenPDFFromContainer"; PDF; containerValue { ; PasswordType; Password } )   More

Parameters

Parameter Description Example Flags
PDF The PDF reference returned from DynaPDF.New. $pdf
containerValue The container value to use. Should contain a PDF file. $PDF
PasswordType The password type and flags. Flag kann be 1 for owner password and 0 for open password. You can combine this with 2 to force repair. 0 Optional
Password The password to decrypt the file. $password Optional

Result

Returns number or error message.

Description

Opens a PDF for importing from a container.

Requires DynaPDF Lite license.
On success returns a number ≥ 0.

After opening the file, please use DynaPDF.ImportPDFFile or DynaPDF.ImportPDFPage to import one or more pages. Or just check metadata with e.g. DynaPDF.GetImportDocInfo and check page count and sizes with DynaPDF.GetImportPageBounds and DynaPDF.GetImportPageCount.

If you use Container.ReadFile to read PDF and then pass it to DynaPDF.OpenPDFFromContainer, please consider to use DynaPDF.OpenPDFFromFile instead to avoid extra memory usage and avoid FileMaker rendering a preview picture for the PDF.

Examples

Opens PDF:

$r = MBS( "DynaPDF.OpenPDFFromContainer"; $PDF; $PDFFile )
$error = MBS( "DynaPDF.GetLastErrorMessage"; $PDF )

Load PDF and extract text of page 2:

# initialize DynaPDF before running this:
Set Variable [$pdf; Value:MBS("DynaPDF.New")]
# load PDF from container
Set Variable [$r; Value:MBS("DynaPDF.OpenPDFFromContainer";$pdf; Test::data)]
# import all pages
Set Variable [$r; Value:MBS("DynaPDF.ImportPDFFile";$pdf)]
# extra text of page 2
Set Field [Test::PageText; MBS("DynaPDF.ExtractPageText"; $pdf; 2)]
#Cleanup
Set Variable [$r; Value:MBS("DynaPDF.Release"; $pdf)]

Import a single page:

Set Variable [$r; Value:MBS("DynaPDF.SetImportFlags"; $pdf; "ImportAll ImportAsPage")]
Set Variable [$r; Value:MBS("DynaPDF.OpenPDFFromContainer"; $pdf; Invoice::PDF Template)]
Set Variable [$r; Value:MBS("DynaPDF.ImportPDFPage"; $pdf; 1)]

Import selected pages from one PDF and write into a new one:

# New PDF
Set Variable [$pdf; Value:MBS("DynaPDF.New")]

# Open existing PDF file (or use DynaPDF.OpenPDFFromContainer for container)
Set Variable [$r; Value:MBS("DynaPDF.OpenPDFFromFile"; $pdf; $path )]

# Query page count
Set Variable [$pageCount; Value:MBS( "DynaPDF.GetImportPageCount"; $pdf )]

# Import the pages you need
Set Variable [$r; Value:MBS("DynaPDF.ImportPDFPage"; $pdf; 1)]
Set Variable [$r; Value:MBS("DynaPDF.ImportPDFPage"; $pdf; 2)]
Set Variable [$r; Value:MBS("DynaPDF.ImportPDFPage"; $pdf; 3)]
Set Variable [$r; Value:MBS("DynaPDF.ImportPDFPage"; $pdf; $pagecount - 1)]
Set Variable [$r; Value:MBS("DynaPDF.ImportPDFPage"; $pdf; $pagecount - 2)]

# Set output to this file path
# MBS( "DynaPDF.OpenOutputFile"; $pdf; "/Users/cs/Desktop/output.pdf" )

# Write PDF
Set Variable [$r; Value:MBS("DynaPDF.Save"; $pdf)]

# release memory
Set Variable [$r1; Value:MBS("DynaPDF.Release"; $pdf)]

Query width and height of first page in PDF:

# Initialize DynaPDF if needed
If [ MBS("DynaPDF.IsInitialized") ≠ 1 ]
    Perform Script [ Specified: From list ; “Initialize DynaPDF” ; Parameter: ]
End If
# Clear current PDF document
Set Variable [ $pdf ; Value: MBS("DynaPDF.New") ]
#
# Load PDF from container
#
Set Variable [ $r ; Value: MBS("DynaPDF.OpenPDFFromContainer"; $pdf; Test::PDF artwork) ]
#
# Query page size for the first page:
#
Set Variable [ $PageSize ; Value: MBS("DynaPDF.GetImportPageBounds"; $pdf; 1; "MediaBox") ]
#
# split numbers, may need special handling with Math.TextToNumber to make sure it works if you use comma as decimal separator:
#
Set Variable [ $left ; Value: MBS( "Math.TextToNumber"; GetValue($PageSize; 1)) ]
Set Variable [ $top ; Value: MBS( "Math.TextToNumber"; GetValue($PageSize; 2)) ]
Set Variable [ $right ; Value: MBS( "Math.TextToNumber"; GetValue($PageSize; 3)) ]
Set Variable [ $bottom ; Value: MBS( "Math.TextToNumber"; GetValue($PageSize; 4)) ]
#
Set Variable [ $Width ; Value: Abs($right - $left) ]
Set Variable [ $height ; Value: Abs($top- $bottom) ]
#
# Calculate in centimeters
#
Set Field [ Test::Job dimension horizontal ; Round($Width * 2.54 / 72; 2) ]
Set Field [ Test::Job dimension vertical ; Round($Height * 2.54 / 72; 2) ]
#
# Cleanup
Set Variable [ $r ; Value: MBS("DynaPDF.Release"; $pdf) ]

See also

Example Databases

Blog Entries

FileMaker Magazin

Created 18th August 2014, last changed 28th May 2021


DynaPDF.OpenOutputFileEncrypted - DynaPDF.OpenPDFFromFile

Feedback: Report problem or ask question.




Links
MBS Xojo Plugins

Start Chat