Attach (recommended) or Link to PDF file here:
[compressed.tracemonkey-pldi-09.pdf](https://github.com/mozilla/pdf.js/files/7846269/compressed.tracemonkey-pldi-09.pdf)


Configuration:
- Web browser and its version: chrome v97.0.4692.7
- Operating system and its version: macOS 10.15.7
- PDF.js version: 2.12.313
- Is a browser extension: no

Steps to reproduce the problem:
1. https://github.com/mozilla/pdf.js/blob/236c8d47864e8ebf593bae21576670b59a7d4988/src/display/base_factory.js#L146-L149
2. https://github.com/mozilla/pdf.js/blob/236c8d47864e8ebf593bae21576670b59a7d4988/src/display/annotation_layer.js#L2073-L2081
3. As in the code above, sometimes 'data.rect' is '[0,0,0,0]', which causes 'this.svgFactory.create' to throw an error, which makes the following for loop stop working. https://github.com/mozilla/pdf.js/blob/236c8d47864e8ebf593bae21576670b59a7d4988/src/display/annotation_layer.js#L2352-L2371


const isRenderable = !!(
      parameters.data.hasPopup ||
      parameters.data.titleObj?.str ||
      parameters.data.contentsObj?.str ||
      parameters.data.richText?.str
    );
    super(parameters, { isRenderable, ignoreBorder: true });
  }
  render() {
    this.container.className = "stampAnnotation";
    if (!this.data.hasPopup) {
      this._createPopup(null, this.data);
    }
    return this.container;
  }
}
class FileAttachmentAnnotationElement extends AnnotationElement {
  constructor(parameters) {
    super(parameters, { isRenderable: true });
    const { filename, content } = this.data.file;
    this.filename = getFilenameFromUrl(filename);
    this.content = content;
    this.linkService.eventBus?.dispatch("fileattachmentannotation", {
      source: this,
      id: stringToPDFString(filename),
      filename,
      content,
    });
  }
  render() {