diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..9d939fe --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,298 @@ +name: test-samples + +on: + pull_request: + branches: + - develop + - main + push: + branches: + - develop + - main + +env: + DOTNET_VERSION: '6.x' + MATRIX_DIR: | + [ + "Annotations/Annotations/", + "Annotations/InkAnnotations/", + "Annotations/LinkAnnotation/", + "Annotations/PolygonAnnotations/", + "Annotations/PolyLineAnnotations/", + "ContentCreation/AddElements/", + "ContentCreation/AddHeaderFooter/", + "ContentCreation/Clips/", + "ContentCreation/CreateBookmarks/", + "ContentCreation/GradientShade/", + "ContentCreation/MakeDocWithCalGrayColorSpace/", + "ContentCreation/MakeDocWithCalRGBColorSpace/", + "ContentCreation/MakeDocWithDeviceNColorSpace/", + "ContentCreation/MakeDocWithICCBasedColorSpace/", + "ContentCreation/MakeDocWithIndexedColorSpace/", + "ContentCreation/MakeDocWithLabColorSpace/", + "ContentCreation/MakeDocWithSeparationColorSpace/", + "ContentCreation/NameTrees/", + "ContentCreation/NumberTrees/", + "ContentCreation/RemoteGoToActions/", + "ContentCreation/WriteNChannelTiff/", + "ContentModification/Action/", + "ContentModification/AddCollection/", + "ContentModification/AddQRCode/", + "ContentModification/ChangeLayerConfiguration/", + "ContentModification/ChangeLinkColors/", + "ContentModification/CreateLayer/", + "ContentModification/ExtendedGraphicStates/", + "ContentModification/FlattenTransparency/", + "ContentModification/LaunchActions/", + "ContentModification/MergePDF/", + "ContentModification/PageLabels/", + "ContentModification/PDFObject/", + "ContentModification/UnderlinesAndHighlights/", + "ContentModification/Watermark/", + "DocumentConversion/ColorConvertDocument/", + "DocumentConversion/ConvertToOffice/", + "DocumentConversion/CreateDocFromXPS/", + "DocumentConversion/Factur-XConverter/", + "DocumentConversion/PDFAConverter/", + "DocumentConversion/PDFXConverter/", + "DocumentConversion/ZUGFeRDConverter/", + "DocumentOptimization/PDFOptimize/", + "Images/DocToImages/", + "Images/DrawSeparations/", + "Images/DrawToBitmap/", + "Images/EPSSeparations/", + "Images/GetSeparatedImages/", + "Images/ImageEmbedICCProfile/", + "Images/ImageExport/", + "Images/ImageExtraction/", + "Images/ImageFromStream/", + "Images/ImageImport/", + "Images/ImageResampling/", + "Images/ImageSoftMask/", + "Images/OutputPreview/", + "Images/RasterizePage/", + "InformationExtraction/ListBookmarks/", + "InformationExtraction/ListInfo/", + "InformationExtraction/ListLayers/", + "InformationExtraction/ListPaths/", + "InformationExtraction/Metadata/", + "OpticalCharacterRecognition/AddTextToDocument/", + "OpticalCharacterRecognition/AddTextToImage/", + "Other/MemoryFileSystem/", + "Other/StreamIO/", + "Security/AddRegexRedaction/", + "Security/Redactions/", + "Text/AddGlyphs/", + "Text/AddUnicodeText/", + "Text/AddVerticalText/", + "Text/ExtractAcroFormFieldData/", + "Text/ExtractCJKTextByPatternMatch/", + "Text/ExtractTextByPatternMatch/", + "Text/ExtractTextByRegion/", + "Text/ExtractTextFromAnnotations/", + "Text/ExtractTextFromMultiRegions/", + "Text/ExtractTextPreservingStyleAndPositionInfo/", + "Text/ListWords/", + "Text/RegexExtractText/", + "Text/RegexTextSearch/", + "Text/TextExtract/" + ] + +jobs: + run-samples-windows: + runs-on: windows-latest + defaults: + run: + shell: bash + strategy: + fail-fast: false + matrix: + dir: ${{ fromJson(env.MATRIX_DIR) }} + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: ${{ env.DOTNET_VERSION }} + + - name: Build samples + working-directory: ${{ matrix.dir }} + run: | + dotnet build -c Release *.csproj + + - name: Run samples + working-directory: ${{ matrix.dir }} + run: | + sample_name=$(basename "$PWD") + if [[ "$sample_name" == "DocToImages" ]]; then + bin/Release/net6.0/$sample_name.exe -format=png $HOME/.nuget/packages/adobe.pdf.library.sampleinput/1.0.0/build/Resources/Sample_Input/ducky.pdf + else + bin/Release/net6.0/$sample_name.exe + fi + + + - name: Set sample_name variable + id: set-sample-name + run: echo "SAMPLE_NAME=$(basename "$PWD")" >> "$GITHUB_ENV" + + - name: Save artifacts + uses: actions/upload-artifact@v4 + with: + name: output-${{ runner.os }}-${{ env.SAMPLE_NAME }} + path: | + ${{ matrix.dir }}/*.docx + ${{ matrix.dir }}/*.xslx + ${{ matrix.dir }}/*.pptx + ${{ matrix.dir }}/*.pdf + ${{ matrix.dir }}/*.tif + ${{ matrix.dir }}/*.png + ${{ matrix.dir }}/*.jpg + ${{ matrix.dir }}/*.eps + ${{ matrix.dir }}/*.tiff + ${{ matrix.dir }}/*.bmp + ${{ matrix.dir }}/*.gif + ${{ matrix.dir }}/*.json + ${{ matrix.dir }}/*.txt + ${{ matrix.dir }}/*.csv + + - name: List files + run: ls ${{ matrix.dir }} + + run-samples-ubuntu: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + dir: ${{ fromJson(env.MATRIX_DIR) }} + needs: [run-samples-windows] + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: ${{ env.DOTNET_VERSION }} + + - name: Setup Microsoft Core Fonts + run: | + sample_name=$(basename "$PWD") + case "$sample_name" in + "AddHeaderFooter" | "AddElements" | "MakeDocWithCalGrayColorSpace" | "MakeDocWithCalRGBColorSpace" | "MakeDocWithDeviceNColorSpace" | "MakeDocWithICCBasedColorSpace" | "MakeDocWithIndexedColorSpace" | "MakeDocWithLabColorSpace" | "MakeDocWithSeparationColorSpace" | "ExtendedGraphicStates" | "AddGlyphs" | "AddUnicodeText") + echo 'ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true' | sudo debconf-set-selections + sudo apt-get install -y ttf-mscorefonts-installer + ;; + esac + + - name: Build samples + working-directory: ${{ matrix.dir }} + run: | + dotnet build -c Release *.csproj + + - name: Run samples + working-directory: ${{ matrix.dir }} + run: | + sample_name=$(basename "$PWD") + if [[ "$sample_name" == "Redactions" && "${{ matrix.os }}" == 'ubuntu-latest' ]]; then + echo "Not available on this os" + else + if [[ "$sample_name" == "DocToImages" ]]; then + dotnet bin/Release/net6.0/$sample_name.dll -format=png $HOME/.nuget/packages/adobe.pdf.library.sampleinput/1.0.0/build/Resources/Sample_Input/ducky.pdf + else + dotnet bin/Release/net6.0/$sample_name.dll + fi + + - name: Set sample_name variable + id: set-sample-name + run: echo "SAMPLE_NAME=$(basename "$PWD")" >> "$GITHUB_ENV" + + - name: Save artifacts + uses: actions/upload-artifact@v4 + with: + name: output-${{ runner.os }}-${{ env.SAMPLE_NAME }} + path: | + ${{ matrix.dir }}/*.docx + ${{ matrix.dir }}/*.xslx + ${{ matrix.dir }}/*.pptx + ${{ matrix.dir }}/*.pdf + ${{ matrix.dir }}/*.tif + ${{ matrix.dir }}/*.png + ${{ matrix.dir }}/*.jpg + ${{ matrix.dir }}/*.eps + ${{ matrix.dir }}/*.tiff + ${{ matrix.dir }}/*.bmp + ${{ matrix.dir }}/*.gif + ${{ matrix.dir }}/*.json + ${{ matrix.dir }}/*.txt + ${{ matrix.dir }}/*.csv + + - name: List files + run: ls ${{ matrix.dir }} + + run-samples-macos: + runs-on: macos-14 + strategy: + matrix: + dir: ${{ fromJson(env.MATRIX_DIR) }} + needs: [run-samples-ubuntu] + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: ${{ env.DOTNET_VERSION }} + + - name: Build samples + working-directory: ${{ matrix.dir }} + run: | + sample_name=$(basename "$PWD") + if [[ ("$sample_name" != "ConvertToOffice" && "$sample_name" != "CreateDocFromXPS") || "${{ matrix.os }}" != 'macos-14' ]]; then + dotnet build -c Release *.csproj + else + echo "Not available on this os" + fi + + - name: Run samples + working-directory: ${{ matrix.dir }} + run: | + sample_name=$(basename "$PWD") + if [[ ("$sample_name" != "ConvertToOffice" && "$sample_name" != "CreateDocFromXPS") || "${{ matrix.os }}" != 'macos-14' ]]; then + if [[ "$sample_name" == "DocToImages" ]]; then + dotnet bin/Release/net6.0/$sample_name.dll -format=png $HOME/.nuget/packages/adobe.pdf.library.sampleinput/1.0.0/build/Resources/Sample_Input/ducky.pdf + else + dotnet bin/Release/net6.0/$sample_name.dll + fi + else + echo "Not available on this os" + fi + + - name: Set sample_name variable + id: set-sample-name + run: echo "SAMPLE_NAME=$(basename "$PWD")" >> "$GITHUB_ENV" + + - name: Save artifacts + uses: actions/upload-artifact@v4 + with: + name: output-${{ runner.os }}-${{ env.SAMPLE_NAME }} + path: | + ${{ matrix.dir }}/*.docx + ${{ matrix.dir }}/*.xslx + ${{ matrix.dir }}/*.pptx + ${{ matrix.dir }}/*.pdf + ${{ matrix.dir }}/*.tif + ${{ matrix.dir }}/*.png + ${{ matrix.dir }}/*.jpg + ${{ matrix.dir }}/*.eps + ${{ matrix.dir }}/*.tiff + ${{ matrix.dir }}/*.bmp + ${{ matrix.dir }}/*.gif + ${{ matrix.dir }}/*.json + ${{ matrix.dir }}/*.txt + ${{ matrix.dir }}/*.csv + + - name: List files + run: ls ${{ matrix.dir }}