Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

pdfscale custom resize appears to generate different flavor of pdf that interferes with gs PDFX (?) #47

Open
DXXS opened this issue Feb 4, 2024 · 1 comment

Comments

@DXXS
Copy link

DXXS commented Feb 4, 2024

For some reason, I've encountered an issue where pdf's scaled using 'custom' page size don't seem to allow post-application of PDFX items, while when I use a standard 11x17 size, it does!?":

$ pdfscale -v -r 11x17 pspread-booklet.pdf

$ gs -sDEVICE=pdfwrite -dPDFX-r1200 -g20400x13200 -sColorConversionStrategy=CMYK -dProcessColorModel=/DeviceCMYK -sOutputFile=gs-converted-pdfT.pdf pspread-booklet.11X17.pdf -c "[/PAGES pdfmark << /PDFXSetBleedBoxToMediaBox false /PDFXTrimBoxToMediaBoxOffset [171 63 171 63] /PDFXBleedBoxToTrimBoxOffset [9 9 9 9] >> setdistillerparams"

^^ inspection of such version ^^ with pdfinfo -f 1 -l 1 -box gs-converted-pdfT.pdf shows boxes have been updated

$ pdfscale -v -r 'custom in 15 10' pspread-booklet.pdf

$ gs -sDEVICE=pdfwrite -dPDFX -r1200 -g18000x12000 -sColorConversionStrategy=CMYK -dProcessColorModel=/DeviceCMYK -sOutputFile=gs-converted-pdfM.pdf pspread-booklet.CUSTOM.pdf -c "[/PAGES pdfmark << /PDFXSetBleedBoxToMediaBox false /PDFXTrimBoxToMediaBoxOffset [27 27 99 99] /PDFXBleedBoxToTrimBoxOffset [9 9 9 9] >> setdistillerparams

^^ inspection of such version ^^ with pdfinfo -f 1 -l 1 -box gs-converted-pdfM.pdf shows boxes are all still equal to MediaBox

@tavinus
Copy link
Owner

tavinus commented Jul 16, 2024

That is interesting. The GS calls look pretty much identical. Weird.

EDIT: I though you had the pdfScale GS calls there, but now I am not sure.
Are those GS calls from pdfScale?
If not, can you run both calls with -v --print-gs-call for us to compare both calls and the verbose info?

I made some tests here and the GS calls seems identical, just with Width X Height changed.

Paper std 11x17

$ ./pdfScale.sh --print-gs-call -v -r 11x17 mint.pdf
pdfScale.sh v2.6.1 - Verbose Execution
   Single Task: Resize PDF Paper
       Dry-Run: FALSE
    Input File: mint.pdf
   Output File: mint.11X17.pdf
 Get Page Size: Adaptive Enabled
        Method: Grep
  Source Width: 596 postscript-points
 Source Height: 843 postscript-points
    Print Mode: Print ( auto/empty )
  Scale Factor: Disabled (resize only)
   Fit To Page: Enabled (default)
   Auto Rotate: PageByPage
   Flip Detect: No change needed
  Run Resizing: 11X17 ( 792 x 1224 ) pts
  Final Status: File created successfully
[GS RESIZE CALL STARTS]
"/usr/bin/gs" -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dSAFER -dCompatibilityLevel="1.5" -dPDFSETTINGS="/printer" -dColorImageResolution=300 -dGrayImageResolution=300 -dColorImageDownsampleType="/Bicubic" -dGrayImageDownsampleType="/Bicubic" -dColorConversionStrategy=/LeaveColorUnchanged -dSubsetFonts=true -dEmbedAllFonts=true -dDEVICEWIDTHPOINTS=792 -dDEVICEHEIGHTPOINTS=1224 -dAutoRotatePages=/PageByPage -dFIXEDMEDIA -dPDFFitPage   -sOutputFile="mint.11X17.pdf" -c "" -f "mint.pdf"
[GS RESIZE CALL ENDS]

Paper custom in 15 10

$ ./pdfScale.sh --print-gs-call -v -r 'custom in 15 10' mint.pdf
pdfScale.sh v2.6.1 - Verbose Execution
   Single Task: Resize PDF Paper
       Dry-Run: FALSE
    Input File: mint.pdf
   Output File: mint.CUSTOM.pdf
 Get Page Size: Adaptive Enabled
        Method: Grep
  Source Width: 596 postscript-points
 Source Height: 843 postscript-points
    Print Mode: Print ( auto/empty )
  Scale Factor: Disabled (resize only)
   Fit To Page: Enabled (default)
   Auto Rotate: PageByPage
   Flip Detect: Wrong orientation detected!
                Inverting Width <-> Height
  Run Resizing: CUSTOM ( 720 x 1080 ) pts
  Final Status: File created successfully
[GS RESIZE CALL STARTS]
"/usr/bin/gs" -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dSAFER -dCompatibilityLevel="1.5" -dPDFSETTINGS="/printer" -dColorImageResolution=300 -dGrayImageResolution=300 -dColorImageDownsampleType="/Bicubic" -dGrayImageDownsampleType="/Bicubic" -dColorConversionStrategy=/LeaveColorUnchanged -dSubsetFonts=true -dEmbedAllFonts=true -dDEVICEWIDTHPOINTS=720 -dDEVICEHEIGHTPOINTS=1080 -dAutoRotatePages=/PageByPage -dFIXEDMEDIA -dPDFFitPage   -sOutputFile="mint.CUSTOM.pdf" -c "" -f "mint.pdf"

Comparing

"/usr/bin/gs" -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dSAFER -dCompatibilityLevel="1.5" -dPDFSETTINGS="/printer" -dColorImageResolution=300 -dGrayImageResolution=300 -dColorImageDownsampleType="/Bicubic" -dGrayImageDownsampleType="/Bicubic" -dColorConversionStrategy=/LeaveColorUnchanged -dSubsetFonts=true -dEmbedAllFonts=true -dDEVICEWIDTHPOINTS=792 -dDEVICEHEIGHTPOINTS=1224 -dAutoRotatePages=/PageByPage -dFIXEDMEDIA -dPDFFitPage   -sOutputFile="mint.11X17.pdf" -c "" -f "mint.pdf"
"/usr/bin/gs" -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dSAFER -dCompatibilityLevel="1.5" -dPDFSETTINGS="/printer" -dColorImageResolution=300 -dGrayImageResolution=300 -dColorImageDownsampleType="/Bicubic" -dGrayImageDownsampleType="/Bicubic" -dColorConversionStrategy=/LeaveColorUnchanged -dSubsetFonts=true -dEmbedAllFonts=true -dDEVICEWIDTHPOINTS=720 -dDEVICEHEIGHTPOINTS=1080 -dAutoRotatePages=/PageByPage -dFIXEDMEDIA -dPDFFitPage   -sOutputFile="mint.CUSTOM.pdf" -c "" -f "mint.pdf"

So, identical calls, just with different sizes in points.

While looking at the verbose info, I noticed that the custom call actually inverted the orientation and caused the script to invert the Width X Height. Not sure if that is relevant, but it is a difference.

   Auto Rotate: PageByPage
   Flip Detect: Wrong orientation detected!
                Inverting Width <-> Height

You can disable flip-detection with -f d. But this only inverts the values of Width and Height and nothing else.

You can also mess with the auto-rotation options to see if it helps.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants