I think I've isolated one cause of "We're sorry, an error occurred while preparing this print"

SHORT VERSION:

  • Made a print. No problems. But I needed to flip X.
  • Went back to Illustrator, performed the transformation. Saved a new SVG.
  • Tried to print. Failed horribly.
    “We’re sorry, an error occurred while preparing this print”
  • Lots of things weren’t the problem.
  • Went back to Photoshop, flipped the bitmap there.
  • Re-imported to Illustrator, and embedded as a new image
  • Saved a new SVG with no transformations in Illustrator, and sent that to GFUI.
  • Glowforge is happily printing again.

EVEN SHORTER VERSION:
Don’t transform bitmaps in Illustrator.

LONG VERSION:
…is a novel, and I’m only five chapters in.

(I’ve decided to just post my outline, and hold off on the rest of it until my literary agent gives me the go-ahead.)

(this could take a while, as I don’t have a literary agent)

But, hey! If you want to exchange notes on the “lots of things weren’t the problem” part, we can do some Q&A here. :+1:

10 Likes

Yep. That is, unfortunately, a known issue. It would be nice if the error were clearer.

4 Likes

And even nicer if they fixed it. How hard is to apply a transform to a bitmap? And is this the same reason you can’t rotate a bitmap in the GUI?

2 Likes

I guess that depends somewhat on whether they’re using a third-party library or rolled their own. In any case, there’s this one specific use case that comes up again and again, so it might be worth supporting it as a special case even if they don’t want to spend the time to implement arbitrary transforms.

2 Likes

I’m glad they made that fail the prepare a print stage, otherwise you will have weird things happen.

1 Like

Failing it faster would be nice, though.

I mean, if the software can’t fix it, maybe it could check for that sooner?


I might be misreading, but…

If it’s a problem with inconsistencies between SVG implementations, one approach to reign that in might be to… bypass the need for one by adding a “flip x” button in GFUI?

I mean, I had to exit the web editor and go back into Illustrator to break my file. Making it incompatible like that wasn’t an option in the editor, and I wouldn’t have done it if the editor hadn’t pushed me to do so by not having that function.


So.

Fine.

Let’s deal with what is.

I exit GFUI and go back to Illustrator. Can we address the problem at this phase?

To the point, is it possible to flip my image there without breaking the SVG, or taking a step further back into Photoshop? I’m looking for a “flatten images” command, probably on export.

Do we need an Illustrator plugin?

Are any of us skilled at building Illustrator plugins?

I agree, and I think (hope) they will get there. The software is still in beta, so things are still changing. I’m just glad they added that check. I was freaking out that my Glowforge was broken when the issue happened to me. One thing that would be really nice is if they at least say if it failed because of a file issue or server issue.

That would be nice, but it won’t help much when making designs. At least, not until they add the ability to save changes to a design in the GFUI.

I’m not sure about illustrator, but in Inkscape you can “Make a bitmap copy” under the edit menu. I haven’t tried this yet, but I think it should work.

2 Likes

There used to be a specific error message (we don’t support transforms) or something in the PRU days, so this seems a regression…

2 Likes

That’s the part I’m not getting with this issue… Isn’t it already transformed by the time it gets to the GFUI? Or is the language to transform it built into the SVG instead? (The latter would be weird to me.)

I was replying to “how hard is it to apply a transform to a bitmap”, and what I meant was simply that the difficulty of implementing support for SVG transforms on bitmaps is a bit of an unknown since we don’t know the how the code is structured. If they’re using some open-source library, it might even be possible for one of us to contribute a fix.

This has been requested many many times. It usually gets derailed by an argument about the nature of the Glowforge software.

EDIT: This is the official recommendation from Glowforge. I think I’m allowed to state an opinion if it’s clearly labeled as such, so in my non-factual opinion, method number 1 in the official advice is batsh*t crazy. #2 only addresses Inkscape, so I’ll mention that there’s an equivalent in Illustrator.

1 Like

There are more things in heaven and Earth and SVG, Horatio…

1 Like

No.

My understanding is the SVG says here an image that has this transform. It is up to the reader of the SVG to apply the specified transform to the image.

3 Likes

That’s super-weird. But thanks for the info!

It is a bit odd for a flip but if it allows arbitrary rotations then it is really the only way. For example if you want your image rotated 45 degrees it becomes a diamond shape. Bitmaps are always rectangular so there is no way to store the rotated image as a bitmap unless you expand it 40% in each axis and add transparency. You have to read a rectangular bitmap and rotate it. GF don’t seem to be able to do that for some reason.

2 Likes

@chris1

Based purely on emotion and no practical knowledge, I have to say I agree with your subjective opinion.

(Good lord. I read that whole page a dozen times this week, and thought I’d tried everything on it. Missed the whole section on flipped images somehow.)

I’ll try re-rasterizing next time. Didn’t know that was an option.

(Illustrator has a bunch of “that won’t do anything, but I’m not gonna stop you” operations, and this looked to be one of those. Like, it’s not greyed out, 'cause it’ll work with some objects. Just not the one I have selected. But, similar ones.)

So, adobe speaks a different dialect of metadata?

Transform is part of the SVG standard that GF havn’t implemented. https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/transform. It isn’t metadata or anything Adobe specific. Same as the fillrule attribute that they ignore. They only have a partial SVG reader implementation.

3 Likes

So does rastering the image in Illustrator fix the issue, in that the transform would be executed in Illustrator, so the exported bitmap would be untransformed?

It sure would be nice if the error message communicated what the error was, so that you’d have a clue about how to fix it. I spent a day trying to get an image to print that has been mysteriously failing, and I think this error was the cause. Not being able to print a mirrored image (i.e. to engrave onto the back of translucent acrylic) is pretty odd.

Yes rasterising the image should apply the transform and create a new image that doesn’t need transforming.

1 Like

The plot is quite thick, as it turns out. I’ve been experimenting to try to find what is and isn’t supported, and some things are quite baffling. I started with a simple SVG:

<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1in" height="1.208in" viewBox="0 0 72 87">
  <title>logo</title>
  <image width="72" height="87" xlink:href="data:image/png;base64,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"/>
</svg>

Then I tried adding various transform attributes to it.

  • transform="scale(0.5)" works
  • transform="translate(50 50)" works
  • transform="rotate(-45)" works (!)
  • transform="rotate(-180)" fails (?!)
  • transform="skewX(45)" works (seriously!)
  • transform="translate(50 50) rotate(-45) skewX(45) scale(0.5)" also works
  • transform="matrix(-1, 0, 0, 1, 72, 0)" fails
  • transform="matrix(0.5 0 0 0.5 0 0)" (equivalent of scale(0.5)) works (!!)

When I say works or fails, by the way, I mean at the printing stage. All of these load successfully into the GFUI, and after you click print it does the scanning thing for a while, goes to “Preparing your design”, and only then does it spit out an error, if it’s going to.

Just for fun, I applied the “fails” transforms to a simple vector rectangle, and they all worked, including the matrix flip.

So what is unsupported seems to be specific to images, and specific to some deeper aspect of the transform, not simply "we don’t reject matrix()".

My brain hurts.

11 Likes